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: [1×2 table]
BaseLearner: [1×1 incrementalRegressionLinear]
DriftDetector: [1×1 HoeffdingDriftDetectionMethod]
IsTraining: 0
Properties, Methods
idal.Metrics
ans=1×2 table
Cumulative Window
__________ ______
MeanSquaredError 2.0976 1.826
ベース学習器とドリフト検出器を表示します。
idal.BaseLearner
ans =
incrementalRegressionLinear
IsWarm: 1
Metrics: [1×2 table]
ResponseTransform: 'none'
Beta: [100×1 double]
Bias: -0.0793
Learner: 'leastsquares'
Properties, Methods
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
-0.0280
0.1217
-0.1407
-0.1218
-0.1930
⋮
ドリフト検出器を表示します。
idal.DriftDetector
ans =
HoeffdingDriftDetectionMethod
PreviousDriftStatus: 'Stable'
DriftStatus: 'Stable'
IsWarm: 1
NumTrainingObservations: 7900
Alternative: 'greater'
InputType: 'continuous'
TestMethod: 'average'
Properties, Methods
インクリメンタル ドリフト認識学習器をリセットします。モデルとメトリクスのプロパティを表示します。
idal = reset(idal)
idal =
incrementalDriftAwareLearner
IsWarm: 0
Metrics: [1×2 table]
BaseLearner: [1×1 incrementalRegressionLinear]
DriftDetector: [1×1 HoeffdingDriftDetectionMethod]
IsTraining: 1
Properties, Methods
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: [1×2 table]
ResponseTransform: 'none'
Beta: [100×1 double]
Bias: 0
Learner: 'leastsquares'
Properties, Methods
Bias パラメーターも 0 にリセットされています。
ベース学習器の Beta プロパティを表示します。
idal.BaseLearner.Beta
ans = 100×1
0
0
0
0
0
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'
Properties, Methods
IsWarm プロパティと学習観測値の数がどちらも 0 に設定されています。
ドット表記を使用して、ドリフト認識学習器、ベース学習器、およびドリフト検出器の他のプロパティがリセット後にどのように変わるかを調べることができます。
入力引数
ストリーミング データに当てはめるインクリメンタル ドリフト認識学習モデル。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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)