detectdrift
構文
説明
は、内部の統計量とドリフト ステータスを IncCDDetector
= detectdrift(IncCDDetector
,X
)X
の新しいデータで更新し、変更された検出器 IncCDDetector
を返します。
detectdrift
は、IsWarm
プロパティが true
(または 1) の場合にのみドリフト ステータスを更新します。
は、IncCDDetector
= detectdrift(IncCDDetector
,X
,Weights=W
)W
の観測値の重みも使用して IncCDDetector
を更新します。
引数 Weights
はドリフト検出法 (DDM) にのみ使用できます。incrementalConceptDriftDetector
の呼び出しで引数 DetectionMethod
に "DDM"
を指定します。
例
データ ストリームにおけるドリフト検出の実行
最初の 1000 個の観測値は平均が 2 で標準偏差が 0.75 の正規分布から派生し、次の 1000 個は平均が 4 で標準偏差が 1 の正規分布から派生する乱数ストリームを作成します。インクリメンタルなドリフト検出の用途では、データ ストリームへのアクセスとモデルの更新が連続的に発生します。データを先に収集してからモデルに供給することはありません。ただし、この例では、明確にするためにデータのシミュレーションを分けて説明します。
rng(1234) % For reproducibility numObservations = 3000; switchPeriod1 = 1000; X = zeros([numObservations 1]); for i = 1:numObservations if i <= switchPeriod1 X(i) = normrnd(2,0.75); else X(i) = normrnd(4,1); end end
インクリメンタルな概念ドリフト検出器を開始します。指数移動平均法 (EWMA) による Hoeffding 境界の手法を使用します。入力タイプを連続、ウォームアップを 50 個の観測値、推定期間を 50 個の観測値に指定します。
incCDDetector = incrementalConceptDriftDetector("hddmw",InputType="continuous", ... WarmupPeriod=50,EstimationPeriod=50)
incCDDetector = HoeffdingDriftDetectionMethod PreviousDriftStatus: 'Stable' DriftStatus: 'Stable' IsWarm: 0 NumTrainingObservations: 0 Alternative: 'greater' InputType: 'continuous' TestMethod: 'ewma'
incDDetector
は、HoeffdingDriftDetectionMethod
オブジェクトです。最初にオブジェクトを作成した時点では、DriftStatus
、IsWarm
、CutMean
、NumTrainingObservations
などのプロパティは初期状態になります。detectdrift
は、それらをデータの供給に応じてインクリメンタルに更新し、ドリフトを監視します。
バッチ サイズ、およびドリフト ステータスと統計を記録する変数を事前に割り当てます。
status = zeros([numObservations 1]); statusname = strings([numObservations 1]);
観測値を一度に 1 個ずつ処理してデータ ストリームをシミュレートし、インクリメンタルなドリフト検出を実行します。各反復で次を行います。
detectdrift
で新しいデータを使用してドリフトを監視する。可視化のためにドリフト ステータスを追跡して記録する。
ドリフトが検出されたら、関数
reset
を使用してインクリメンタルな概念ドリフト検出器をリセットする。
for i = 1:numObservations incCDDetector = detectdrift(incCDDetector,X(i)); if incCDDetector.DriftDetected status(i) = 2; statusname(i) = string(incCDDetector.DriftStatus); incCDDetector = reset(incCDDetector); % If drift detected, reset the detector sprintf("Drift detected at observation #%d. Detector reset.",i) elseif incCDDetector.WarningDetected status(i) = 1; statusname(i) = string(incCDDetector.DriftStatus); sprintf("Warning detected at observation #%d.",i) else status(i) = 0; statusname(i) = string(incCDDetector.DriftStatus); end end
ans = "Warning detected at observation #1019."
ans = "Warning detected at observation #1020."
ans = "Warning detected at observation #1021."
ans = "Warning detected at observation #1022."
ans = "Drift detected at observation #1023. Detector reset."
ドリフト ステータスとデータ観測番号の関係をプロットします。
gscatter(1:numObservations,status,statusname,'gyr','*',5,'on',"Number of observations","Drift status")
入力引数
IncCDDetector
— インクリメンタルな概念ドリフト検出器
DriftDetectionMethod
| HoeffdingDriftDetectionMethod
インクリメンタルな概念ドリフト検出器。DriftDetectionMethod
または HoeffdingDriftDetectionMethod
のいずれかのオブジェクトとして返されます。これらのオブジェクトとそのプロパティの詳細については、該当するリファレンス ページを参照してください。
X
— 入力データ
n 行 1 列の実数のベクトル | logical ベクトル | 0 と 1 のベクトル
入力データ。n 行 1 列の実数のベクトルとして指定します。ここで、n は観測値の数です。
incrementalConceptDriftDetector
の呼び出しでInputType
の値が"continuous"
の場合、X
は実数値のベクトルでなければなりません。incrementalConceptDriftDetector
の呼び出しでInputType
の値が"binary"
の場合、X
は logical ベクトルまたは 0 と 1 のベクトルにすることができます。
データ型: single
| double
| logical
W
— 観測値の重み
n 行 1 列の実数のベクトル
観測値の重み。n 行 1 列の実数のベクトルとして指定します。ここで、n は観測値の数です。W
の要素数は X
と同じでなければなりません。
引数 Weights
は、指数加重移動平均を使用する Hoeffding 境界のドリフト検出法 (HDDMW) には使用できません。観測値の重みを使用するには、incrementalConceptDriftDetector
の呼び出しで DetectionMethod
として "ddm"
または "hddma"
を指定します。
データ型: single
| double
バージョン履歴
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)