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

ron*_*oni 13 matlab deep-learning

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

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

如果可能,请提供工作细节的答案.

任何帮助将不胜感激.

zhq*_*iat 5

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

Matlab有一个autoencoder类以及一个函数,它将为您完成所有这些工作。从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);
Run Code Online (Sandbox Code Playgroud)

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

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

生成测试数据。

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

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

xReconstructed = predict(autoenc,xtest');
Run Code Online (Sandbox Code Playgroud)

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

figure;
plot(xtest,'r.');
hold on
plot(xReconstructed,'go');
Run Code Online (Sandbox Code Playgroud)

绘制结果

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