DriftDetectionMethod
説明
DriftDetectionMethod モデル オブジェクトは、ドリフト検出法を使用するインクリメンタルな概念ドリフト検出器を表します[1]。オブジェクトの作成後、オブジェクト関数 detectdrift を使用して、統計の更新や概念データのドリフト (故障率や回帰損失など) のチェックを行うことができます。
DriftDetectionMethod はインクリメンタルな概念ドリフト検出に適しています。生データにおけるドリフト検出については、バッチ ドリフト検出用の detectdrift を参照してください。
作成
DriftDetectionMethod は、incrementalConceptDriftDetector の呼び出しで引数 DetectionMethod を "ddm" として指定することで作成できます。
プロパティ
オブジェクトの入力パラメーター
ドリフト ステータスを判定する対立仮説のタイプ。'greater' または 'less' のいずれかとして指定されます。
データ型: char
この プロパティ は読み取り専用です。
ドリフトになるまでの標準偏差の数の制限。非負のスカラー値として指定します。これは、全体の検定統計が最適な検定統計から離れていると見なし、ソフトウェアが DriftStatus を 'Drift' に設定するまでの許容される標準偏差の数です。
データ型: double
この プロパティ は読み取り専用です。
入力データのタイプ。'binary' または 'continuous' のいずれかとして指定されます。
データ型: char
この プロパティ は読み取り専用です。
ドリフト検出器のウォームアップのための観測値の数。非負の整数として指定されます。
データ型: double
この プロパティ は読み取り専用です。
警告になるまでの標準偏差の数の制限。非負のスカラー値として指定します。これは、全体の検定統計が最適な検定統計から離れていると見なし、ソフトウェアが DriftStatus を 'Warning' に設定するまでの許容される標準偏差の数です。
データ型: double
ドリフト検出のパラメーター
この プロパティ は読み取り専用です。
ドリフト検出器の学習に使用されたすべての入力データの加重平均。数値として指定されます。
データ型: double
この プロパティ は読み取り専用です。
ドリフト検出器の学習に使用された観測値の数。非負の整数値として指定されます。
データ型: double
detectdrift が最新のデータ点までに観測した最適な加重平均。数値として指定されます。
detectdrift は、次のいずれかの条件で OptimalMean と OptimalStandardDeviation を更新します。
Alternativeが'greater'で、Mean+StandardDeviationがOptimalMean+OptimalStandardDeviation以下のとき。Alternativeが'less'で、Mean-StandardDeviationがOptimalMean-OptimalStandardDeviation以上のとき。
データ型: double
この プロパティ は読み取り専用です。
detectdrift が最新のデータ点までに観測した最適な加重標準偏差。数値として指定されます。
detectdrift は、次のいずれかの条件で OptimalMean と OptimalStandardDeviation を更新します。
Alternativeが'greater'で、Mean+StandardDeviationがOptimalMean+OptimalStandardDeviation以下のとき。Alternativeが'less'で、Mean-StandardDeviationがOptimalMean-OptimalStandardDeviation以上のとき。
データ型: double
この プロパティ は読み取り専用です。
ドリフト検出器の学習に使用されたすべての入力データの加重標準偏差。数値として指定されます。
データ型: double
ドリフト ステータスのパラメーター
この プロパティ は読み取り専用です。
ソフトウェアでドリフトが検出されたかどうかを示すフラグ。1 または 0 のいずれかとして指定されます。値 1 は DriftStatus が 'Drift' であることを意味します。
データ型: logical
この プロパティ は読み取り専用です。
現在のドリフト ステータス。'Stable'、'Warning'、または 'Drift' として指定されます。DriftStatus と PreviousDriftStaus を比較することで、ドリフト ステータスの遷移を確認できます。
データ型: char
この プロパティ は読み取り専用です。
ウォームアップ期間が終了しているかどうかを示すフラグ。1 (true) または 0 (false) として指定されます。
データ型: logical
この プロパティ は読み取り専用です。
最新のデータのバッチを使用した最新の学習以前のドリフト ステータス。'Stable'、'Warning'、または 'Drift' として指定されます。DriftStatus と PreviousDriftStaus を比較することで、ドリフト ステータスの遷移を確認できます。
データ型: char
この プロパティ は読み取り専用です。
警告があるかどうかを示すフラグ。1 または 0 のいずれかとして指定されます。値 1 は DriftStatus が 'Warning' であることを意味します。
データ型: logical
オブジェクト関数
detectdrift | ドリフト検出器の状態とドリフト ステータスを新しいデータで更新 |
reset | インクリメンタルな概念ドリフト検出器をリセット |
例
ドリフト検出法 (DDM) を使用して概念ドリフト検出器を開始します。
incCDDetector = incrementalConceptDriftDetector("ddm");最初の 1000 個の観測値は故障率が 0.1 で、1000 個の観測値をすぎると故障率が 0.6 に増加する乱数ストリームを作成します。
rng(1234) % For reproducibility numObservations = 3000; switchPeriod = 1000; for i = 1:numObservations if i <= switchPeriod failurerate = 0.1; else failurerate = 0.6; end X(i) = rand()<failurerate; % Value 1 represents failure end
ドリフト ステータスを追跡する変数を事前に割り当てます。
status = zeros(numObservations,1); statusname = strings(numObservations,1);
ドリフト検出器にデータを継続的に供給し、インクリメンタルなドリフト検出を実行します。各反復で次を行います。
ドリフト検出器の統計量を更新し、
detectdriftで新しいデータ点を使用してドリフトを監視する。(メモ:detectdriftはウォームアップ期間後にドリフトをチェック)可視化のためにドリフト ステータスを追跡して記録する。
ドリフトが検出されたら、
resetを使用してインクリメンタルな概念ドリフト検出器をリセットする。
for i = 1:numObservations incCDDetector = detectdrift(incCDDetector,X(i)); statusname(i) = string(incCDDetector.DriftStatus); if incCDDetector.DriftDetected status(i) = 2; incCDDetector = reset(incCDDetector); % If drift detected, reset the detector sprintf("Drift detected at Observation #%d. Detector reset.",i) elseif incCDDetector.WarningDetected status(i) = 1; else status(i) = 0; end end
ans = "Drift detected at Observation #1078. Detector reset."
観測番号 1000 で故障率が変わった後、detectdrift は観測番号 1078 でシフトを検出します。
ドリフト ステータスと観測番号の関係をプロットします。
gscatter(1:numObservations,status,statusname,'gyr','*',4,'on',"Observation number","Drift status")

ドリフト検出法 (DDM) を使用して概念ドリフト検出器を開始します。
incCDDetector = incrementalConceptDriftDetector("ddm",Alternative="less",WarmupPeriod=100);
最初の 1000 個の観測値は故障率が 0.4 で、1000 個をすぎると故障率が 0.1 に減少する乱数ストリームを作成します。
rng(1234) % For reproducibility numObservations = 3000; switchPeriod = 1000; for i = 1:numObservations if i <= switchPeriod failurerate = 0.4; else failurerate = 0.125; end X(i) = rand()<failurerate; % Value 1 represents failure end
ドリフト ステータスと最適な平均値および最適な標準偏差値を追跡する変数を事前に割り当てます。
optmean = zeros(numObservations,1); optstddev = zeros(numObservations,1); status = zeros(numObservations,1); statusname = strings(numObservations,1);
ドリフト検出器にデータを継続的に供給し、潜在的な変化を監視します。可視化のためにドリフト ステータスを記録します。
for i = 1:numObservations incCDDetector = detectdrift(incCDDetector,X(i)); statusname(i) = string(incCDDetector.DriftStatus); optmean(i) = incCDDetector.OptimalMean; optstddev(i) = incCDDetector.OptimalStandardDeviation; if incCDDetector.DriftDetected status(i) = 2; incCDDetector = reset(incCDDetector); % If drift detected, reset the detector sprintf("Drift detected at Observation #%d. Detector reset.",i) elseif incCDDetector.WarningDetected status(i) = 1; else status(i) = 0; end end
ans = "Drift detected at Observation #1107. Detector reset."
観測番号 1000 で故障率が変わった後、detectdrift は観測番号 1096 でシフトを検出します。
最適な平均と最適な標準偏差の変化をプロットします。
tiledlayout(2,1); ax1 = nexttile; plot(ax1,1:numObservations,optmean) ax2 = nexttile; plot(ax2,1:numObservations,optstddev)

ドリフト ステータスと観測番号の関係をプロットします。
figure(); gscatter(1:numObservations,status,statusname,'gyr','*',4,'on',"Observation number","Drift status")

detectdrift は、複数の観測値を警告ステータスと結論付けてからドリフトと判定しています。
参照
[1] Gama, Joao, Pedro Medas, Gladys Castillo, and Pedro P. Rodrigues. “Learning with drift detection.“ In Brazilian symposium on artificial intelligence, pp. 286-295. Berlin, Heidelberg: Springer. 2004, September.
バージョン履歴
R2022a で導入
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)