2016-09-01 2 views
12

나는 기계 학습 문제에서 일하고 있으며 matlab에 신경 네트워크 기반의 분류자를 만들고 싶다. 한 가지 문제는 데이터가 피쳐 형태로 제공되고 샘플 수가 상당히 낮다는 점입니다. 회전, 번역, 아핀 변환 등을 통해 이미지에 대한 데이터 확대 기법을 알고 있습니다.일반 데이터 세트의 데이터 증가 기법?

일반 데이터 세트에 사용할 수있는 데이터 확대 기술이 있는지 알고 싶습니다. 마찬가지로 더 많은 데이터를 생성하기 위해 임의성을 사용할 수 있습니까? 나는 대답 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); 

기차 autoencoder.

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을 훈련 autoencoder을 사용하여 예측한다.
xReconstructed = predict(autoenc,xtest'); 

플롯 실제 테스트 데이터 및 예측

.

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

Plot results

당신은 자동 인코더로 생성 된 추가 데이터를 나타내는 녹색 cicrles을 볼 수 있습니다.

+0

나는이 기사를 읽었습니다. 하나의 쿼리, 자동 엔코더는 감독되지 않습니다. 그러나 나는 훈련 단계에서 레이블에 액세스 할 수 있습니다. 5 개의 클래스가 있다고 가정합니다. 다섯 개의 다른 클래스에 대한 예제를 생성하기 위해 5 개의 별도 오토 인코더를 교육해야합니까 아니면 충분합니까? 친절하게 회신 해주십시오. – roni

+0

또한 자동 인코더에 단 하나의 레이어 만 사용하면 재구성이 얼마나 좋을까요? 이 http://in.mathworks.com/help/nnet/ref/autoencoder.predict.html을 다시 확인하십시오. 재구성 된 이미지는 꽤 가난합니다. 더 많은 수의 레이어를 사용했다면 재구성이 더 좋을 것입니다. . – roni

관련 문제