一般数据集的数据增强技术?

时间:2016-09-01 07:52:26

标签: matlab deep-learning

我正在研究机器学习问题,并希望在matlab上构建基于神经网络的分类器。一个问题是数据以特征的形式给出,并且样本的数量相当低。我知道图像的数据增强技术,通过旋转,翻译,仿射翻译等。

我想知道是否有可用于一般数据集的数据增强技术?就像可以使用随机性生成更多数据?我读了答案here,但我不明白。

请尽可能提供工作细节的答案。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

您需要查看autoencoders。有效地,您将数据传递到低级神经网络,它应用类似PCA的分析,然后您可以使用它来生成更多数据。

Matlab有一个autoencoder类和一个function,它将为您完成所有这些。来自matlab帮助文件

  

生成训练数据。

rng(0,'twister'); % For reproducibility
n = 1000;
r = linspace(-10,10,n)';
x = 1 + r*5e-2 + sin(r)./r + 0.2*randn(n,1);
  

使用训练数据训练自动编码器。

hiddenSize = 25;
autoenc = trainAutoencoder(x',hiddenSize,...
        'EncoderTransferFunction','satlin',...
        'DecoderTransferFunction','purelin',...
        'L2WeightRegularization',0.01,...
        'SparsityRegularization',4,...
        'SparsityProportion',0.10);
  

生成测试数据。

n = 1000;
r = sort(-10 + 20*rand(n,1));
xtest = 1 + r*5e-2 + sin(r)./r + 0.4*randn(n,1);
  

使用经过训练的自动编码器autoenc预测测试数据。

xReconstructed = predict(autoenc,xtest');
  

绘制实际测试数据和预测。

figure;
plot(xtest,'r.');
hold on
plot(xReconstructed,'go');

Plot results

您可以看到绿色圆圈,它代表使用自动编码器生成的其他数据。