【发布时间】:2017-01-08 23:55:12
【问题描述】:
我正在研究一个机器学习问题,并想在 matlab 中构建基于神经网络的分类器。一个问题是数据以特征的形式给出,样本数量要少得多。我了解图像的数据增强技术,通过旋转、平移、仿射平移等。
我想知道是否有可用于一般数据集的数据增强技术?是否可以使用随机性来生成更多数据?我看了答案here,但没看懂。
如果可能,请提供工作细节的答案。
任何帮助将不胜感激。
【问题讨论】:
标签: matlab deep-learning
我正在研究一个机器学习问题,并想在 matlab 中构建基于神经网络的分类器。一个问题是数据以特征的形式给出,样本数量要少得多。我了解图像的数据增强技术,通过旋转、平移、仿射平移等。
我想知道是否有可用于一般数据集的数据增强技术?是否可以使用随机性来生成更多数据?我看了答案here,但没看懂。
如果可能,请提供工作细节的答案。
任何帮助将不胜感激。
【问题讨论】:
标签: matlab deep-learning
您需要查看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');
您可以看到代表使用自动编码器生成的附加数据的绿色圆圈。
【讨论】: