reset
説明
は、Mdl
= reset(Mdl
)Mdl.BaseLearner
および Mdl.DriftDetector
の学習したパラメーターをリセットした後のインクリメンタル ドリフト認識モデル Mdl
を返します。インクリメンタル学習中に Mdl.BaseLearner
のハイパーパラメーターが推定される場合、関数 reset
はこれらのハイパーパラメーターもリセットします。reset
は Mdl.BaseLearner.Numpredictors
プロパティを常に保持します。
インクリメンタル分類モデルの場合、reset
は Mdl.BaseLearner.ClassNames
プロパティを常に保持し、事前クラス確率が "empirical"
の場合に Mdl.BaseLearner.Prior
をリセットします。
インクリメンタル ドリフト認識学習の実行時は、関数 fit
の内部で reset
が呼び出されます。reset
はカスタム ワークフローでの使用に適しています。
例
インクリメンタル ドリフト認識モデルのリセット
補助関数の HelperRegrGenerator
と HelperConceptDriftGenerator
をそれぞれ使用して、ランダムな概念データと概念ドリフト発生器を作成します。
concept1 = HelperRegrGenerator(NumFeatures=100,NonZeroFeatures=[1,20,40,50,55], ... FeatureCoefficients=[4,5,10,-2,-6],NoiseStd=1.1,TableOutput=false); concept2 = HelperRegrGenerator(NumFeatures=100,NonZeroFeatures=[10,20,45,56,80], ... FeatureCoefficients=[4,5,10,-2,-6],NoiseStd=1.1,TableOutput=false); driftGenerator = HelperConceptDriftGenerator(concept1,concept2,15000,1000);
HelperRegrGenerator
は、関数の呼び出しで指定された回帰用の特徴量と特徴量係数を使用してストリーミング データを生成します。この関数は、各ステップで正規分布から予測子を抽出します。その後、関数は特徴量係数と予測子の値を使用して、平均がゼロで指定のノイズ標準偏差をもつ正規分布からランダム ノイズを追加することで応答を計算します。そのデータがインクリメンタル学習器で使用するために行列として返されます。
HelperConceptDriftGenerator
は、概念ドリフトを確立します。このオブジェクトでは、シグモイド関数 1./(1+exp(-4*(numobservations-position)./width))
を使用して、データ生成時に 1 つ目のストリームが選択される確率を判定します [3]。この例では、位置の引数が 15000 で、幅の引数が 1000 です。観測値の数が位置の値から幅の半分を引いた値を超えると、データ生成時に 1 つ目のストリームから抽出される確率が低下します。このシグモイド関数により、一方のストリームからもう一方への滑らかな遷移が実現します。幅の値が大きいほど、両方のストリームがほぼ等しい確率で選択される遷移期間が大きいことを示します。
回帰用のインクリメンタル ドリフト認識モデルを次のように開始します。
回帰用のインクリメンタル線形モデルを作成します。線形回帰モデルのタイプとソルバーのタイプを指定します。
移動平均による Hoeffding 境界のドリフト検出法 (HDDMA) を使用するインクリメンタルな概念ドリフト検出器を開始します。
インクリメンタル線形モデルと概念ドリフト検出器を使用して、インクリメンタル ドリフト認識モデルをインスタンス化します。学習期間を 6000 個の観測値として指定します。
baseMdl = incrementalRegressionLinear(Learner="leastsquares",Solver="sgd",EstimationPeriod=1000,Standardize=false); dd = incrementalConceptDriftDetector("hddma",Alternative="greater",InputType="continuous",WarmupPeriod=1000); idal = incrementalDriftAwareLearner(baseMdl,DriftDetector=dd,TrainingPeriod=6000);
データ ストリームの作成用に各チャンクの変数の数と反復回数を事前に割り当てます。
numObsPerChunk = 10; numIterations = 1000;
回帰誤差を格納する変数を事前に割り当てます。
ce = array2table(zeros(numIterations,2),VariableNames=["Cumulative" "Window"]);
それぞれ 10 個の観測値の入力チャンクを使用してデータ ストリームをシミュレートし、インクリメンタル ドリフト認識学習を実行します。各反復で次を行います。
予測子データとラベルをシミュレートし、補助関数
hgenerate
を使用してドリフト発生器を更新します。updateMetricsAndFit
を呼び出して、パフォーマンス メトリクスを更新し、インクリメンタル ドリフト認識モデルを入力データに当てはめます。可視化のために回帰誤差を追跡します。
rng(12); % For reproducibility for j = 1:numIterations % Generate data [driftGenerator,X,Y] = hgenerate(driftGenerator,numObsPerChunk); % Update performance metrics and fit the model idal = updateMetricsAndFit(idal,X,Y); % Record regression error ce{j,:} = idal.Metrics{"MeanSquaredError",:}; end
累積とウィンドウごとの回帰誤差をプロットします。ウォームアップと推定の合計の期間をマークします。
h = plot(ce.Variables); xlim([0 numIterations]) ylabel("Mean Squared Error") xlabel("Iteration") xline((idal.MetricsWarmupPeriod+idal.BaseLearner.EstimationPeriod)/numObsPerChunk,"g-.","Estimation Period+Warmup Period",LineWidth=1.5) legend(h,ce.Properties.VariableNames) legend(h,Location="best")
インクリメンタル ドリフト認識学習器と現在のメトリクス値を表示します。
idal
idal = incrementalDriftAwareLearner IsWarm: 1 Metrics: [1x2 table] BaseLearner: [1x1 incrementalRegressionLinear] DriftDetector: [1x1 HoeffdingDriftDetectionMethod] IsTraining: 0
idal.Metrics
ans=1×2 table
Cumulative Window
__________ ______
MeanSquaredError 2.0976 1.826
ベース学習器とドリフト検出器を表示します。
idal.BaseLearner
ans = incrementalRegressionLinear IsWarm: 1 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [100x1 double] Bias: -0.0793 Learner: 'leastsquares'
idal.BaseLearner.Beta
ans = 100×1
4.0221
0.0492
0.0046
0.0529
-0.0818
-0.1161
0.0307
-0.0669
-0.0103
0.0159
⋮
ドリフト検出器を表示します。
idal.DriftDetector
ans = HoeffdingDriftDetectionMethod PreviousDriftStatus: 'Stable' DriftStatus: 'Stable' IsWarm: 1 NumTrainingObservations: 7900 Alternative: 'greater' InputType: 'continuous' TestMethod: 'average'
インクリメンタル ドリフト認識学習器をリセットします。モデルとメトリクスのプロパティを表示します。
idal = reset(idal)
idal = incrementalDriftAwareLearner IsWarm: 0 Metrics: [1x2 table] BaseLearner: [1x1 incrementalRegressionLinear] DriftDetector: [1x1 HoeffdingDriftDetectionMethod] IsTraining: 1
idal.Metrics
ans=1×2 table
Cumulative Window
__________ ______
MeanSquaredError NaN NaN
メトリクスが NaN
値にリセットされています。ソフトウェアによるメトリクスの計算は、idal.BaseLearner.EstimationPeriod
+idal.BaseLearner.MetricsWarmUpPeriod
の観測値が渡されるまで待機してから再開されます。
モデルをリセットすると、ベース学習器と基になるドリフト検出器もリセットされます。
ベース学習器を表示します。
idal.BaseLearner
ans = incrementalRegressionLinear IsWarm: 0 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [100x1 double] Bias: 0 Learner: 'leastsquares'
Bias
パラメーターも 0 にリセットされています。
ベース学習器の Beta
プロパティを表示します。
idal.BaseLearner.Beta
ans = 100×1
0
0
0
0
0
0
0
0
0
0
⋮
係数の値がすべて 0 に設定されています。
ドリフト検出器を表示します。
idal.DriftDetector
ans = HoeffdingDriftDetectionMethod PreviousDriftStatus: 'Stable' DriftStatus: 'Stable' IsWarm: 0 NumTrainingObservations: 0 Alternative: 'greater' InputType: 'continuous' TestMethod: 'average'
IsWarm
プロパティと学習観測値の数がどちらも 0 に設定されています。
ドット表記を使用して、ドリフト認識学習器、ベース学習器、およびドリフト検出器の他のプロパティがリセット後にどのように変わるかを調べることができます。
入力引数
Mdl
— インクリメンタル ドリフト認識学習モデル
incrementalDriftAwareLearner
モデル オブジェクト
ストリーミング データに当てはめるインクリメンタル ドリフト認識学習モデル。incrementalDriftAwareLearner
モデル オブジェクトとして指定します。Mdl
は関数 incrementalDriftAwareLearner
を使用して作成できます。詳細については、オブジェクトのリファレンス ページを参照してください。
出力引数
Mdl
— 更新されたインクリメンタル ドリフト認識学習モデル
incrementalDriftAwareLearner
モデル オブジェクト
更新されたインクリメンタル ドリフト認識学習モデル。入力モデル Mdl
と同じデータ型のインクリメンタル学習モデル オブジェクト incrementalDriftAwareLearner
として返されます。
参照
[1] Barros, Roberto S.M. , et al. "RDDM: Reactive drift detection method." Expert Systems with Applications. vol. 90, Dec. 2017, pp. 344-55. https://doi.org/10.1016/j.eswa.2017.08.023.
[2] Bifet, Albert, et al. "New Ensemble Methods for Evolving Data Streams." Proceedings of the 15th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM Press, 2009, p. 139. https://doi.org/10.1145/1557019.1557041.
[3] Gama, João, et al. "Learning with drift detection". Advances in Artificial Intelligence – SBIA 2004, edited by Ana L. C. Bazzan and Sofiane Labidi, vol. 3171, Springer Berlin Heidelberg, 2004, pp. 286–95. https://doi.org/10.1007/978-3-540-28645-5_29.
バージョン履歴
R2022b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)