incrementalConceptDriftDetector
实例化增量概念漂移检测器
语法
描述
返回一个增量概念漂移检测器,它使用默认方法Hoeffding's Bounds drift Detection method with moving average test (HDDMA)。IncCDDetector
= incrementalConceptDriftDetector ()
返回使用该方法的增量概念漂移检测器IncCDDetector
= incrementalConceptDriftDetector (DetectionMethod
)DetectionMethod
.
使用一个或多个选项指定其他选项IncCDDetector
= incrementalConceptDriftDetector (DetectionMethod
,名称=值
)名称=值
参数。
例子
监测数据流的潜在漂移
使用漂移检测方法(DDM)启动概念漂移检测器。
incCDDetector = incrementalConceptDriftDetector(“ddm”);
创建一个随机流,使前1000个观测值的失败率为0.1,在1000个观测值之后,失败率增加到0.6。
rng (1234)%用于再现性numObservations = 3000;switchPeriod = 1000;为i = 1:numObservations如果i <= switchPeriod failurerate = 0.1;其他的失败率= 0.6;结束X(i) = rand()%值1表示失败结束
预分配变量跟踪漂移状态。
status = 0 (numObservations,1);statusname = strings(numObservations,1);
连续向漂移检测器输入数据,进行增量漂移检测。在每次迭代中:
使用新的数据点更新漂移检测器和监控器的漂移统计信息
detectdrift
.(注意:detectdrift
在预热期后检查漂移。)跟踪和记录漂移状态,以便可视化。
当检测到漂移时,通过使用重置增量概念漂移检测器
重置
.
为i = 1:numObservations incCDDetector = detectdrift(incCDDetector,X(i));statusname(i) = string(incCDDetector.DriftStatus);如果incCDDetector。漂移检测状态(i) = 2;incCDDetector = reset(incCDDetector);如果检测到漂移,重置检测器sprintf (“在观测#%d处检测到漂移。探测器重置”。,我)elseifincCDDetector。WarningDetected status(i) = 1;其他的状态(i) = 0;结束结束
ans = "在观测#1078处检测到漂移。探测器重置”。
在观测编号1000的失败率发生变化后,detectdrift
在观测编号1078处检测到移位。
绘制漂移状态与观测数的关系。
gscatter (1: numObservations状态、statusname“gyr”,‘*’4“上”,“观察”,“漂移”状态)
监测连续数据的漂移
创建一个随机流,使观测数据来自标准差为0.75的正态分布,但均值随时间变化。前1000个观测值来自均值为2的分布,后1000个观测值来自均值为4的分布,后1000个观测值来自均值为7的分布。
rng (1234)%用于再现性numObservations = 3000;switchPeriod1 = 1000;switchPeriod2 = 2000;X = 0 ([numObservations 1]);生成数据为i = 1:numObservations如果i <= switchPeriod1 X(i) = normrnd(2,0.75);elseifi <= switchPeriod2 X(i) = normrnd(4,0.75);其他的X(i) = normrnd(7,0.75);结束结束
在增量漂移检测应用中,对数据流的访问和模型的更新是连续发生的。人们不会先收集数据,然后再输入模型。但是,为了澄清起见,本例单独演示了数据的模拟。
将漂移预热周期指定为50个观测值,并将数据输入边界的估计周期指定为100。
driftWarmupPeriod = 50;estimationPeriod = 100;
启动增量概念漂移检测器。将Hoeffding边界法与指数加权移动平均法(EWMA)相结合。指定输入类型和预热周期。
incCDDetector = incrementalConceptDriftDetector(“hddmw”InputType =“连续”,...WarmupPeriod = driftWarmupPeriod EstimationPeriod = EstimationPeriod)
incCDDetector = HoeffdingDriftDetectionMethod PreviousDriftStatus: 'Stable' DriftStatus: 'Stable' IsWarm: 0 NumTrainingObservations: 0 Alternative: 'greater' InputType: 'continuous' TestMethod: 'ewma' Properties, Methods
incDDetector
是一个HoeffdingDriftDetectionMethod
对象。当您第一次创建对象时,属性如DriftStatus
,IsWarm
,CutMean
,NumTrainingObservations
都处于初始状态。detectdrift
在增量地提供数据并监视漂移时更新它们。
预分配批大小和变量来记录漂移状态和漂移检测器计算每个数据收益的平均值。
status = 0 ([numObservations 1]);statusname = strings([numObservations 1]);M = 0 ([numObservations 1]);
一次模拟一个观测数据流,并进行增量漂移检测。在每次迭代中:
使用的新数据监测漂移
detectdrift
.跟踪和记录漂移状态和统计数据,以便可视化。
当检测到漂移时,使用函数重置增量概念漂移检测器
重置
.
为i = 1:numObservations incCDDetector = detectdrift(incCDDetector,X(i));M(i) = incddetect . mean;如果incCDDetector。漂移检测状态(i) = 2;statusname(i) = string(incCDDetector.DriftStatus);incCDDetector = reset(incCDDetector);如果检测到漂移,重置检测器sprintf (“在观测#%d处检测到漂移。探测器重置”。,我)elseifincCDDetector。WarningDetected status(i) = 1;statusname(i) = string(incCDDetector.DriftStatus);sprintf (“观测#%d处检测到警告。”,我)其他的状态(i) = 0;statusname(i) = string(incCDDetector.DriftStatus);结束结束
ans = "在观测#1024处检测到警告。"
ans =“在观测#1025处检测到警告。”
ans = "在观察点#1026处检测到警告。"
ans = "在观察点#1027处检测到警告。"
ans = "在观察点#1028处检测到警告。"
ans = "在观察点#1029处检测到警告。"
ans = "在观测#1030处检测到漂移。探测器重置”。
ans =“在观测#2012探测到警告。”
ans =“在观测#2013探测到警告。”
ans =“在观测#2014探测到警告。”
ans = "在观测#2015检测到漂移。探测器重置”。
绘制漂移状态与观测数的关系。
gscatter (1: numObservations状态、statusname“gyr”,‘*’5,“上”,“观察次数”,“漂移”状态)
画出平均值与观测数的关系。
散射(1:numObservations,米)
你可以从图中看到样本均值的增加。平均值变大,软件最终检测到数据中的漂移。一旦检测到漂移,重置增量漂移检测器。这也会重置平均值。在图中,样本均值为零的观测值对应于估计周期。在漂移检测器检测到漂移后复位后,在开始有一个估计周期,然后有两个估计周期。
监控数据流以降低故障率
使用漂移检测方法(DDM)启动概念漂移检测器。
incCDDetector = incrementalConceptDriftDetector(“ddm”选择=“少”WarmupPeriod = 100);
创建一个随机流,使前1000个观测值的失败率为0.4,1000个观测值之后的失败率下降到0.1。
rng (1234)%用于再现性numObservations = 3000;switchPeriod = 1000;为i = 1:numObservations如果i <= switchPeriod failurate = 0.4;其他的失败率= 0.125;结束X(i) = rand()%值1表示失败结束
预分配变量跟踪漂移状态和最佳均值和最佳标准差值。
optmean = 0 (numObservations,1);optstddev = 0 (numObservations,1);status = 0 (numObservations,1);statusname = strings(numObservations,1);
连续地将数据输入漂移检测器和监控器,以检测任何潜在的变化。记录漂移状态以便可视化。
为i = 1:numObservations incCDDetector = detectdrift(incCDDetector,X(i));statusname(i) = string(incCDDetector.DriftStatus);optmean(i) = incddetect . optimalmean;optstddev(i) = incddetect . optimalstandard deviation;如果incCDDetector。漂移检测状态(i) = 2;incCDDetector = reset(incCDDetector);如果检测到漂移,重置检测器sprintf (“在观测#%d处检测到漂移。探测器重置”。,我)elseifincCDDetector。WarningDetected status(i) = 1;其他的状态(i) = 0;结束结束
ans = "在观测#1107处检测到漂移。探测器重置”。
在观测编号1000的失败率发生变化后,detectdrift
在观测编号1096处检测到移位。
画出最优均值和最优标准差的变化。
tiledlayout (2, 1);Ax1 = nexttile;plot(ax1,1:numObservations,optmean) ax2 = nexttile;情节(ax2, 1: numObservations optstddev)
绘制漂移状态与观测数的关系。
图();gscatter (1: numObservations状态、statusname“gyr”,‘*’4“上”,“观察”,“漂移”状态)
detectdrift
在决定漂移之前,对多个观测得出警告状态。
输入参数
DetectionMethod
- - - - - -增量漂移检测方法
“ddm”
|“hddma”
|“hddmw”
增量漂移检测方法,指定为下列之一。
检测方法 | 定义 |
---|---|
“ddm” |
漂移检测方法(DDM) |
“hddma” |
Hoeffding's Bounds漂移检测的移动平均检验方法(HDDMA) |
“hddmw” |
基于指数加权移动平均(EWMA)检验的Hoeffding's Bounds漂移检测方法 |
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:选择= "少",InputType =“连续”,InputBounds = [1], ForgettingFactor = 0.075
指定备择假设为较小,即左侧,输入数据类型为连续数据,输入数据的上下界为[-1,1],HDDMW方法的遗忘因子值为0.075。
替代
- - - - - -备选假设的类型
“更大的”
(默认)|“少”
|“不平等”
(适用于HDDMA或HDDMW)
用于确定漂移状态的备选假设类型,指定为之一“不平等”
,“更大的”
,或“少”
.给出两个检验统计量
而且
,
“更大的”
正向漂移的测试,也就是说, .这种情况下,零假设是 .
“少”
测试负向漂移,也就是说, .这种情况下,零假设是 .
“不平等”
对任意方向漂移的测试,也就是说, .这种情况下,零假设是 .
“不平等”
是为了HDDMA
而且HDDMW
唯一的方法。
对于每种类型的测试,detectdrift
更新统计数据,并检查它是否可以在的显著性水平上拒绝零假设而支持替代假设WarningThreshold
或DriftThreshold
.如果它在的显著性水平上拒绝零假设WarningThreshold
,然后更新DriftStatus
来“警告”
.如果它拒绝零假设DriftThreshold
,然后更新DriftStatus
来“漂移”
.
例子:选择= "少"
InputType
- - - - - -漂移检测器的输入类型
“二元”
(默认)|“连续”
漂移检测器的输入类型,指定为任意一种“二元”
或“连续”
.
例子:InputType =“连续”
WarmupPeriod
- - - - - -用于漂移探测器升温的观测数
30.(默认)|非负整数
用于漂移探测器升温的观测数,指定为非负整数。直到热身期结束,detectdrift
使用传入数据训练漂移检测器并更新内部统计数据,但不检查漂移状态。在软件到达预热期后,即漂移检测器变暖后,它开始检查漂移状态的任何变化。
例子:WarmupPeriod = 50
数据类型:双
|单
DriftThreshold
- - - - - -漂移极限的标准偏差数
3.(默认)|非负标量值
漂移极限的标准偏差数,指定为非负标量值。这是在漂移检测器将漂移状态设置为漂移之前,总体测试统计值可以远离最佳测试统计值的标准偏差数。默认值为3,对应99.7%的置信度[1].
DriftThreshold
值必须严格大于WarningThreshold
价值。
例子:DriftThreshold = 2.5
数据类型:双
|单
WarningThreshold
- - - - - -警告极限的标准差数
2(默认)|非负标量值
警告极限的标准偏差数,指定为非负标量值。这是在漂移检测器将漂移状态设置为警告之前,总体测试统计值可以远离最佳测试统计值的标准偏差数。默认值为2,表示95%的置信度[1].
WarningThreshold
值必须严格小于DriftThreshold
价值。
例子:WarningThreshold = 1.75
数据类型:双
|单
DriftThreshold
- - - - - -确定漂移是否存在的阈值
0.001(默认)|从0到1的非负标量值
用于确定漂移是否存在的阈值,指定为从0到1的非负标量值。它是漂移探测器在将漂移状态设置为漂移之前,用于计算Hoeffding不等式和McDiarmid不等式中随机变量与其期望值之间的允许误差的显著性水平[2].
DriftThreshold
值必须严格小于WarningThreshold
价值。
例子:DriftThreshold = 0.003
数据类型:双
|单
EstimationPeriod
- - - - - -用于估计连续数据输入边界的观察数
非负整数
用于估计连续数据的输入边界的观察数,指定为非负整数。也就是说,当InputType
是“连续”
你没有具体说明InputBounds
价值,软件使用EstimationPeriod
估计输入边界的观察数。预估结束后,软件进入预热期。
如果您指定InputBounds
值或InputType
是“二元”
,那么软件就会忽略EstimationPeriod
.
当需要估计输入边界时,默认值为100。否则,默认值为0。
例子:EstimationPeriod = 150
数据类型:双
|单
InputBounds
- - - - - -连续输入数据的下界和上界
大小为2的数值向量
连续输入数据的下界和上界,指定为大小为2的数值向量。
如果InputType
是“连续”
你没有指定InputBounds
值,然后detectdrift
从估计期间的数据估计边界。指定用于估计数据输入边界的观察数EstimationPeriod
.
如果InputType
是“二元”
,则漂移检测器设置InputBounds
值为[0,1]时,软件将忽略InputBounds
名称-值参数。
HDDM使用Hoeffding不等式和McDiarmid不等式进行漂移检测,这些不等式假设输入有界[2].
例子:InputBounds = [1]
数据类型:双
|单
ForgettingFactor
- - - - - -遗忘因子HDDMW
方法
0.05(默认)|0到1之间的标量值
请注意
此选项仅适用于指数加权移动平均(EWMA)方法(对应于DetectionMethod
值设置为“hddmw”
).
HDDMW方法中的遗忘因子,指定为从0到1的标量值。遗忘因素是λ
在EWMA的统计中
[2].遗忘因子决定了当前的平均值预测在多大程度上受过去观测的影响。更高的值ForgettingFactor
使当前的观测值得到更多的权重,而对过去的观测值得到更少的价值。
例子:ForgettingFactor = 0.075
数据类型:双
|单
WarningThreshold
- - - - - -确定警告与漂移的阈值
0.005(默认)|从0到1的非负标量值
用于确定警告与漂移的阈值,指定为从0到1的非负标量值。它是漂移探测器在将漂移状态设置为警告之前,用于计算Hoeffding不等式和McDiarmid不等式中随机变量与其期望值之间的允许误差的显著性水平[2].
WarningThreshold
Value必须严格大于DriftThreshold
价值。
例子:WarningThreshold = 0.007
数据类型:双
|单
输出参数
IncCDDetector
-增量概念漂移探测器
DriftDetectionMethod
|HoeffdingDriftDetectionMethod
增量概念漂移检测器,指定为任意一种DriftDetectionMethod
或HoeffdingDriftDetectionMethod
对象。有关这些对象及其属性的更多信息,请参阅相应的参考页面。
参考文献
伽马,若昂,佩德罗·梅达斯,格拉迪斯·卡斯蒂略,佩德罗·p·罗德里格斯。“使用漂移检测进行学习。“在巴西人工智能研讨会第286-295页。柏林,海德堡:施普林格,2004年9月。
[2]弗里亚斯-布兰科,伊斯瓦尼,何塞-德尔-坎波-Ávila,拉莫斯-希门尼斯-贡萨洛,拉斐尔-莫拉莱斯-布埃诺,奥古斯丁-奥尔蒂兹-迪亚兹,和耶勒-卡巴莱罗-莫塔。基于Hoeffding边界的在线和非参数漂移检测方法。”IEEE知识与数据工程汇刊,第27卷第3期,第810-823页。2014.
版本历史
R2022a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。