簡潔なワークフローを使用した回帰用のインクリメンタル学習の実装
この例では、簡潔なワークフローを使用して、逐次予測評価を伴う線形回帰用のインクリメンタル学習を実装する方法を示します。この例は、具体的に次のことを行います。
線形回帰用の既定のインクリメンタル学習モデルを作成します。
観測値の小さなチャンクをインクリメンタル学習アルゴリズムにフィードする for ループを使用して、データ ストリームをシミュレートします。
各チャンクに対し、
updateMetricsAndFit
を使用して、入力データに対するモデルの性能を測定し、モデルをデータに当てはめます。
既定のモデル オブジェクトの作成
線形回帰用の既定のインクリメンタル学習モデルを作成します。
Mdl = incrementalRegressionLinear()
Mdl = incrementalRegressionLinear IsWarm: 0 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [0x1 double] Bias: 0 Learner: 'svm'
Mdl.EstimationPeriod
ans = 1000
Mdl
は incrementalRegressionLinear
モデル オブジェクトです。そのプロパティはすべて読み取り専用です。
Mdl
は、他の演算の実行に使用する前に、データに当てはめなければなりません。推定期間は、イプシロン不感応区間 Epsilon
の幅の半分が不明であるため 1000 に設定されます。名前と値のペアの引数 'Epsilon'
を使用して Epsilon
を正の浮動小数点スカラーに設定できます。このアクションにより、推定期間が既定の 0 になります。
データの読み込み
ロボット アームのデータ セットを読み込みます。
load robotarm
データ セットの詳細については、コマンド ラインで Description
を入力してください。
インクリメンタル学習の実装
簡潔なワークフローを使用して、関数 updateMetricsAndFit
を呼び出してモデルのパフォーマンス メトリクスを更新し、インクリメンタル モデルを学習データに当てはめます。各反復で次を行います。
50 個の観測値を処理して、データ ストリームをシミュレート。
前のインクリメンタル モデルを、入力観測値に当てはめた新しいモデルで上書き。
累積メトリクス、ウィンドウ メトリクス、および最初の係数 を保存し、インクリメンタル学習中にそれらがどのように進化するかを確認。
% Preallocation n = numel(ytrain); numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); ei = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); beta1 = zeros(nchunk,1); % Incremental fitting for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; Mdl = updateMetricsAndFit(Mdl,Xtrain(idx,:),ytrain(idx)); ei{j,:} = Mdl.Metrics{"EpsilonInsensitiveLoss",:}; beta1(j + 1) = Mdl.Beta(1); end
IncrementalMdl
は、ストリーム内のすべてのデータで学習させた incrementalRegressionLinear
モデル オブジェクトです。インクリメンタル学習中およびモデルがウォームアップされた後、updateMetricsAndFit
は入力観測値でモデルの性能をチェックし、モデルをその観測値に当てはめます。
モデルの進化の検査
パフォーマンス メトリクスと が学習中にどのように進化するかを確認するには、それらを別々のタイルにプロットします。
t = tiledlayout(2,1); nexttile plot(beta1) ylabel('\beta_1') xlim([0 nchunk]) xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.') nexttile h = plot(ei.Variables); xlim([0 nchunk]) ylabel('Epsilon Insensitive Loss') xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.') xline((Mdl.EstimationPeriod + Mdl.MetricsWarmupPeriod)/numObsPerChunk,'g-.') legend(h,ei.Properties.VariableNames) xlabel(t,'Iteration')
プロットは、updateMetricsAndFit
が次を行うことを示しています。
推定期間 (最初の 20 回の反復) の後、 をインクリメンタル学習のすべての反復で当てはめる。
パフォーマンス メトリクスをメトリクスのウォームアップ期間後にのみ計算。
累積メトリクスを各反復中に計算。
ウィンドウ メトリクスを 200 個の観測値 (4 回の反復) の処理後に計算。