2016-09-01 6 views
12

私は機械学習の問題に取り組んでおり、matlabに神経回路ベースの分類子を作りたいと思っています。 1つの問題は、データがフィーチャの形式で与えられ、サンプル数がかなり少なくなることです。一般的なデータセットのデータ拡張技術?

私は、一般的なデータセットに利用できるデータ拡張テクニックがあるかどうかを知りたいと思いますか?同様に、より多くのデータを生成するためにランダム性を使用することは可能ですか?私は答えhereを読んだが、私はそれを理解していなかった。

可能であれば、作業の詳細を回答してください。

ご協力いただければ幸いです。

答えて

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

あなたは、自動エンコーダで生成された追加データを表す緑色のcicrlesを見ることができます。

+0

私は記事を読んだ。 1つのクエリ、自動エンコーダは監督されていません。しかし、私は訓練段階でラベルにアクセスできます。私が5つのクラスを持っているとします。 5つの異なるクラスの例を生成するために5つの別々の自動エンコーダを訓練する必要がありますか、それとも十分ですか?親切にお返事ください。 – roni

+0

自動エンコーダーに1つのレイヤーしか使用しないと、再構成はどれくらい効果的でしょうか?このhttp://in.mathworks.com/help/nnet/ref/autoencoder.predict.htmlを確認してください。再構成された画像はかなり貧弱です。これにより、より多くのレイヤーを使用した場合、再構成がよりよくなるはずです。 。 – roni

関連する問題