ディープラーニングの​予測段階で予測値があ​りえない値に、

조회 수: 22 (최근 30일)
健太郎 藤本
健太郎 藤本 2022년 11월 4일
댓글: 健太郎 藤本 2022년 11월 9일
ディープラーニングを用いて為替市場のデータについて学習させた後に、予測をするのですが予測をした値をプロットすると予測値が実際のものと明らかに違う方向に飛んで行ってしまいます。過学習ではないかと思い、学習の際のオプションを変えたりしたのですが予測すると必ず同じようなことになってしまいます。一番下の写真は実際に予測させた時の実際の価とのズレです。どのようにしたら予測した価が飛んでいかずにいい感じに予測出来るでしょうか
data(1:10)
ans =
122.5690
122.6030
122.6090
122.6090
122.6170
122.5980
122.5780
122.5840
122.5840
122.5860
%% 学習データとテストデータの分割
numTimeStepsTrain = floor(0.9 * numel(data));
XTrain = data(1:numTimeStepsTrain);
YTrain = data(2:numTimeStepsTrain+1);
XTest = data(numTimeStepsTrain+1:end-1);
YTest = data(numTimeStepsTrain+2:end);
numTimeStepsTest = numel(XTest);
idxTrain = 1:numTimeStepsTrain;
idxTest = (numTimeStepsTrain+1):(numTimeStepsTrain + numTimeStepsTest);
%% データの標準化
mu = mean(XTrain);
sig = std(XTrain);
XTrain = (XTrain - mu) / sig;
YTrain = (YTrain - mu) / sig;
XTest = (XTest - mu) / sig;
%% LSTM Network の構築
inputSize = 1;
numResponses = 1;
numHiddenUnits = 200;
layers = [ ...
sequenceInputLayer(inputSize)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numResponses)
regressionLayer];
%% 学習オプションの設定
opts = trainingOptions('adam', ...
'MaxEpochs', 250, ...
'GradientThreshold', 1, ...
'InitialLearnRate', 0.005, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropPeriod', 125, ...
'LearnRateDropFactor', 0.2, ...
'Verbose', 0, ...
'Plots', 'training-progress');
XTrain=num2cell(XTrain);
YTrain=num2cell(YTrain);
XTest=num2cell(XTest);
%% LSTM Network の学習
net = trainNetwork(XTrain, YTrain, layers, opts);
%% 未来の時間領域での予測
% 過去データを入力して状態を更新
net = predictAndUpdateState(net, XTrain,MiniBatchSize=1);
% 1ステップ目の予測
[net, YPred(1)] = predictAndUpdateState(net, XTest(1));
% 2ステップ目以降の予測
for i = 2:numTimeStepsTest
[net, YPred(i)] = predictAndUpdateState(net, YPred(i - 1));
end
  댓글 수: 4
Kojiro Saito
Kojiro Saito 2022년 11월 7일
なるほど。すぐに収束してしまっているので、過学習の可能性はありますね。学習に使用しているデータ(data)の個数はどれぐらいでしょうか?
健太郎 藤本
健太郎 藤本 2022년 11월 9일
データの個数は大体5000個程です。
% 過去データを入力して状態を更新
net = predictAndUpdateState(net, XTrain,MiniBatchSize=1);
ここでMiniBatchSizeを1にしているのですがこれは関係なさそうでしょうか。

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 時系列、シーケンス、およびテキストを使用した深層学習에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!