DriftDetectionMethod
説明
DriftDetectionMethod
モデル オブジェクトは、ドリフト検出法を使用するインクリメンタルな概念ドリフト検出器を表します[1]。オブジェクトの作成後、オブジェクト関数 detectdrift
を使用して、統計の更新や概念データのドリフト (故障率や回帰損失など) のチェックを行うことができます。
DriftDetectionMethod
はインクリメンタルな概念ドリフト検出に適しています。生データにおけるドリフト検出については、バッチ ドリフト検出用の detectdrift
を参照してください。
作成
DriftDetectionMethod
は、incrementalConceptDriftDetector
の呼び出しで引数 DetectionMethod
を "ddm"
として指定することで作成できます。
プロパティ
Alternative
— 対立仮説のタイプ
'greater'
(既定値) | 'less'
ドリフト ステータスを判定する対立仮説のタイプ。'greater'
または 'less'
のいずれかとして指定されます。
データ型: char
DriftDetected
— ソフトウェアでドリフトが検出されたかどうかを示すフラグ
1
| 0
この プロパティ は読み取り専用です。
ソフトウェアでドリフトが検出されたかどうかを示すフラグ。1
または 0
のいずれかとして指定されます。値 1
は DriftStatus
が 'Drift'
であることを意味します。
データ型: logical
DriftStatus
— 現在のドリフト ステータス
'Stable'
| 'Warning'
| 'Drift'
この プロパティ は読み取り専用です。
現在のドリフト ステータス。'Stable'
、'Warning'
、または 'Drift'
として指定されます。DriftStatus
と PreviousDriftStaus
を比較することで、ドリフト ステータスの遷移を確認できます。
データ型: char
DriftThreshold
— ドリフトになるまでの標準偏差の数の制限
非負のスカラー値
この プロパティ は読み取り専用です。
ドリフトになるまでの標準偏差の数の制限。非負のスカラー値として指定します。これは、全体の検定統計が最適な検定統計から離れていると見なし、ソフトウェアが DriftStatus
を 'Drift'
に設定するまでの許容される標準偏差の数です。
データ型: double
InputType
— 入力データのタイプ
'binary'
(既定値) | 'continuous'
この プロパティ は読み取り専用です。
入力データのタイプ。'binary'
または 'continuous'
のいずれかとして指定されます。
データ型: char
IsWarm
— ウォームアップ期間が終了しているかどうかを示すフラグ
1
| 0
この プロパティ は読み取り専用です。
ウォームアップ期間が終了しているかどうかを示すフラグ。1
(true
) または 0
(false
) として指定されます。
データ型: logical
Mean
— すべての入力データの加重平均
数値
この プロパティ は読み取り専用です。
ドリフト検出器の学習に使用されたすべての入力データの加重平均。数値として指定されます。
データ型: double
NumTrainingObservations
— 学習に使用された観測値の数
非負の整数値
この プロパティ は読み取り専用です。
ドリフト検出器の学習に使用された観測値の数。非負の整数値として指定されます。
データ型: double
OptimalMean
— 最適な加重平均
数値
detectdrift
が最新のデータ点までに観測した最適な加重平均。数値として指定されます。
detectdrift
は、次のいずれかの条件で OptimalMean
と OptimalStandardDeviation
を更新します。
Alternative
が'greater'
で、Mean
+StandardDeviation
がOptimalMean
+OptimalStandardDeviation
以下のとき。Alternative
が'less'
で、Mean
-StandardDeviation
がOptimalMean
-OptimalStandardDeviation
以上のとき。
データ型: double
OptimalStandardDeviation
— 最適な加重標準偏差
数値
この プロパティ は読み取り専用です。
detectdrift
が最新のデータ点までに観測した最適な加重標準偏差。数値として指定されます。
detectdrift
は、次のいずれかの条件で OptimalMean
と OptimalStandardDeviation
を更新します。
Alternative
が'greater'
で、Mean
+StandardDeviation
がOptimalMean
+OptimalStandardDeviation
以下のとき。Alternative
が'less'
で、Mean
-StandardDeviation
がOptimalMean
-OptimalStandardDeviation
以上のとき。
データ型: double
PreviousDriftStatus
— 最新の学習以前のドリフト ステータス
'Stable'
| 'Warning'
| 'Drift'
この プロパティ は読み取り専用です。
最新のデータのバッチを使用した最新の学習以前のドリフト ステータス。'Stable'
、'Warning'
、または 'Drift'
として指定されます。DriftStatus
と PreviousDriftStaus
を比較することで、ドリフト ステータスの遷移を確認できます。
データ型: char
StandardDeviation
— すべての入力データの加重標準偏差
数値
この プロパティ は読み取り専用です。
ドリフト検出器の学習に使用されたすべての入力データの加重標準偏差。数値として指定されます。
データ型: double
WarmupPeriod
— ドリフト検出器のウォームアップのための観測値の数
非負の整数値
この プロパティ は読み取り専用です。
ドリフト検出器のウォームアップのための観測値の数。非負の整数として指定されます。
データ型: double
WarningDetected
— 警告があるかどうかを示すフラグ
1
| 0
この プロパティ は読み取り専用です。
警告があるかどうかを示すフラグ。1
または 0
のいずれかとして指定されます。値 1
は DriftStatus
が 'Warning'
であることを意味します。
データ型: logical
WarningThreshold
— 警告になるまでの標準偏差の数の制限
非負のスカラー値
この プロパティ は読み取り専用です。
警告になるまでの標準偏差の数の制限。非負のスカラー値として指定します。これは、全体の検定統計が最適な検定統計から離れていると見なし、ソフトウェアが DriftStatus
を 'Warning'
に設定するまでの許容される標準偏差の数です。
データ型: double
オブジェクト関数
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 コマンド
次の 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)