主要内容

incrementalConceptDriftDetector

实例化增量概念漂移检测器

    描述

    IncCDDetector= incrementalConceptDriftDetector ()返回一个增量概念漂移检测器,它使用默认方法Hoeffding's Bounds drift Detection method with moving average test (HDDMA)。

    例子

    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“上”“观察”“漂移”状态

    图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象代表稳定、警告和漂移。

    创建一个随机流,使观测数据来自标准差为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对象。当您第一次创建对象时,属性如DriftStatusIsWarmCutMean,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,“上”“观察次数”“漂移”状态

    图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象代表稳定、警告和漂移。

    画出平均值与观测数的关系。

    散射(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)

    图中包含2个轴对象。Axes对象1包含一个line类型的对象。坐标轴对象2包含一个line类型的对象。

    绘制漂移状态与观测数的关系。

    图();gscatter (1: numObservations状态、statusname“gyr”‘*’4“上”“观察”“漂移”状态

    图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象代表稳定、警告和漂移。

    detectdrift在决定漂移之前,对多个观测得出警告状态。

    输入参数

    全部折叠

    增量漂移检测方法,指定为下列之一。

    检测方法 定义
    “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。

    一般选择

    全部折叠

    用于确定漂移状态的备选假设类型,指定为之一“不平等”“更大的”,或“少”.给出两个检验统计量 F 1 x 而且 F 2 x

    • “更大的”正向漂移的测试,也就是说, F 1 x > F 2 x

      这种情况下,零假设是 F 1 x F 2 x

    • “少”测试负向漂移,也就是说, F 1 x < F 2 x

      这种情况下,零假设是 F 1 x F 2 x

    • “不平等”对任意方向漂移的测试,也就是说, F 1 x F 2 x

      这种情况下,零假设是 F 1 x F 2 x

      “不平等”是为了HDDMA而且HDDMW唯一的方法。

    对于每种类型的测试,detectdrift更新统计数据,并检查它是否可以在的显著性水平上拒绝零假设而支持替代假设WarningThresholdDriftThreshold.如果它在的显著性水平上拒绝零假设WarningThreshold,然后更新DriftStatus“警告”.如果它拒绝零假设DriftThreshold,然后更新DriftStatus“漂移”

    例子:选择= "少"

    漂移检测器的输入类型,指定为任意一种“二元”“连续”

    例子:InputType =“连续”

    用于漂移探测器升温的观测数,指定为非负整数。直到热身期结束,detectdrift使用传入数据训练漂移检测器并更新内部统计数据,但不检查漂移状态。在软件到达预热期后,即漂移检测器变暖后,它开始检查漂移状态的任何变化。

    例子:WarmupPeriod = 50

    数据类型:|

    DDM的选项

    全部折叠

    漂移极限的标准偏差数,指定为非负标量值。这是在漂移检测器将漂移状态设置为漂移之前,总体测试统计值可以远离最佳测试统计值的标准偏差数。默认值为3,对应99.7%的置信度[1]

    DriftThreshold值必须严格大于WarningThreshold价值。

    例子:DriftThreshold = 2.5

    数据类型:|

    警告极限的标准偏差数,指定为非负标量值。这是在漂移检测器将漂移状态设置为警告之前,总体测试统计值可以远离最佳测试统计值的标准偏差数。默认值为2,表示95%的置信度[1]

    WarningThreshold值必须严格小于DriftThreshold价值。

    例子:WarningThreshold = 1.75

    数据类型:|

    HDDMA和HDDMW选项

    全部折叠

    用于确定漂移是否存在的阈值,指定为从0到1的非负标量值。它是漂移探测器在将漂移状态设置为漂移之前,用于计算Hoeffding不等式和McDiarmid不等式中随机变量与其期望值之间的允许误差的显著性水平[2]

    DriftThreshold值必须严格小于WarningThreshold价值。

    例子:DriftThreshold = 0.003

    数据类型:|

    用于估计连续数据的输入边界的观察数,指定为非负整数。也就是说,当InputType“连续”你没有具体说明InputBounds价值,软件使用EstimationPeriod估计输入边界的观察数。预估结束后,软件进入预热期。

    如果您指定InputBounds值或InputType“二元”,那么软件就会忽略EstimationPeriod

    当需要估计输入边界时,默认值为100。否则,默认值为0。

    例子:EstimationPeriod = 150

    数据类型:|

    连续输入数据的下界和上界,指定为大小为2的数值向量。

    如果InputType“连续”你没有指定InputBounds值,然后detectdrift从估计期间的数据估计边界。指定用于估计数据输入边界的观察数EstimationPeriod

    如果InputType“二元”,则漂移检测器设置InputBounds值为[0,1]时,软件将忽略InputBounds名称-值参数。

    HDDM使用Hoeffding不等式和McDiarmid不等式进行漂移检测,这些不等式假设输入有界[2]

    例子:InputBounds = [1]

    数据类型:|

    请注意

    此选项仅适用于指数加权移动平均(EWMA)方法(对应于DetectionMethod值设置为“hddmw”).

    HDDMW方法中的遗忘因子,指定为从0到1的标量值。遗忘因素是λ在EWMA的统计中 X t λ X t + 1 λ X t 1 [2].遗忘因子决定了当前的平均值预测在多大程度上受过去观测的影响。更高的值ForgettingFactor使当前的观测值得到更多的权重,而对过去的观测值得到更少的价值。

    例子:ForgettingFactor = 0.075

    数据类型:|

    用于确定警告与漂移的阈值,指定为从0到1的非负标量值。它是漂移探测器在将漂移状态设置为警告之前,用于计算Hoeffding不等式和McDiarmid不等式中随机变量与其期望值之间的允许误差的显著性水平[2]

    WarningThresholdValue必须严格大于DriftThreshold价值。

    例子:WarningThreshold = 0.007

    数据类型:|

    输出参数

    全部折叠

    增量概念漂移检测器,指定为任意一种DriftDetectionMethodHoeffdingDriftDetectionMethod对象。有关这些对象及其属性的更多信息,请参阅相应的参考页面。

    参考文献

    伽马,若昂,佩德罗·梅达斯,格拉迪斯·卡斯蒂略,佩德罗·p·罗德里格斯。“使用漂移检测进行学习。“在巴西人工智能研讨会第286-295页。柏林,海德堡:施普林格,2004年9月。

    [2]弗里亚斯-布兰科,伊斯瓦尼,何塞-德尔-坎波-Ávila,拉莫斯-希门尼斯-贡萨洛,拉斐尔-莫拉莱斯-布埃诺,奥古斯丁-奥尔蒂兹-迪亚兹,和耶勒-卡巴莱罗-莫塔。基于Hoeffding边界的在线和非参数漂移检测方法。”IEEE知识与数据工程汇刊,第27卷第3期,第810-823页。2014.

    版本历史

    R2022a中引入