主要内容

incrementalDriftAwareLearner

构建drift-aware增量学习的典范

自从R2022b

    描述

    incrementalDriftAwareLearner创建一个incrementalDriftAwareLearner模型对象,它包含一个增量分类或回归学习者和增量概念漂移探测器提供一个自动调节的增量的机器学习模型。incrementalDriftAwareLearner万博1manbetx支持所有增量学习的分类和回归模型和概念漂移检测方法支持的统计和机器学习的工具箱™。

    与大多数统计和机器学习工具箱模型对象,incrementalDriftAwareLearner可以直接调用。当你创建一个incrementalDriftAwareLearner对象,它是准备增量drift-aware学习

    incrementalDriftAwareLearner最适合增量学习,适应概念漂移。传统方式批量漂移检测,看看detectdrift

    创建

    您可以创建一个incrementalDriftAwareLearner模型对象在以下方式:

    • 发起一个增量分类或回归学习者使用任何增量学习。通过增量学习模型作为输入调用incrementalDriftAwareLearner。例如,

      BaseLearner = incrementalClassificationLinear ();Mdl = incrementalDriftAwareLearner (BaseLearner);

    • 发起一个增量分类或回归学习者使用任何增量学习。发起一个增量的概念漂移探测器使用incrementalConceptDriftDetector。通过增量学习模型和概念漂移探测器作为输入调用incrementalDriftAwareLearner。例如,

      BaseLearner = incrementalRegressionKernel ();DDM = incrementalConceptDriftDetector (“ddm”);Mdl = incrementalDriftAwareLearner (BaseLearner DriftDetector = DDM);

    描述

    例子

    Mdl= incrementalDriftAwareLearner (BaseLearner)返回一个drift-aware模型Mdl与默认增量学习模型参数和默认漂移探测器。

    例子

    Mdl= incrementalDriftAwareLearner (BaseLearner,名称=值)使用名称-值参数设置附加选项。例如,incrementalDriftAwareLearner (BaseLearner DriftDetector = CDDetector TrainingPeriod = 1000)指定了概念漂移探测器作为一个预定义的CDDetector并设置培训期间1000观察。

    输入参数

    全部展开

    潜在的增量分类或回归模型,指定为以下之一。

    学习如何创建这些学习者,请参考相应的引用页面。

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    例子:BufferSize = 5000, TrainingPeriod = 8000, StableCountLimit = 6000指定缓冲区大小为5000,培训期间的8000年,连续稳定的极限状态重置前6000的观察。

    缓冲区的大小商店的损失值BaseLearner对于每一个训练观察,指定为一个标量整数。

    例子:BufferSize = 5000

    数据类型:|

    增量概念漂移探测器用于监测和检测漂移,指定为一个HoeffdingDriftDetectionMethodDriftDetectionMethod对象。

    • 如果BaseLearner增量分类对象,那么默认的探测器是吗HoeffdingDriftDetectionMethod使用移动平均法。也就是说,incrementalDriftAwareLearner创建漂移探测器使用incrementalConceptDriftDetector (“hddma”)

    • 如果BaseLearner增量回归对象,那么默认的是什么HoeffdingDriftDetectionMethod使用移动平均法连续变量。也就是说,incrementalDriftAwareLearner创建漂移探测器使用incrementalConceptDriftDetector (hddma InputType =“连续”)

    指定一个增量的概念漂移探测器,使用不同的方法,看到incrementalConceptDriftDetector参考页面。

    例子:DriftDetector = dd

    数量的观察用于培训,指定为一个标量整数。

    如果你指定TrainingPeriod值作为与传入的数据,那么软件总是火车。

    如果TrainingPeriod值是小于BaseLearner.MetricsWarmupPeriod值,然后incrementalDriftAwareLearner设置TrainingPeriod值作为BaseLearner.MetricsWarmupPeriod

    例子:TrainingPeriod = 7000

    数据类型:|

    最大数量的连续“稳定”观察软复位之前,指定为一个标量整数。

    例子:StableCountLimit = 35000

    数据类型:|

    最大数量的连续“警告”观察复位之前,指定为一个标量整数。

    例子:WarningCountLimit = 1000

    数据类型:|

    属性

    全部展开

    这个属性是只读的。

    潜在的增量分类或回归模型,指定为下列模型对象之一。

    这个属性设置的BaseLearner输入参数。

    访问的属性BaseLearner例如,使用点操作符Mdl.BaseLearner.Solver

    这个属性是只读的。

    潜在的增量概念漂移探测器,指定为一个HoeffdingDriftDetectionMethodDriftDetectionMethod对象。

    这个属性设置的DriftDetector名称-值参数。

    访问的属性DriftDetector例如,使用点操作符Mdl.DriftDetector.WarningThreshold

    这个属性是只读的。

    数量的观察用于培训之前,软件开始监测潜在的漂移,指定为一个标量整数。

    这个属性设置的TrainingPeriod名称-值参数。

    数据类型:

    这个属性是只读的。

    最大数量的连续“稳定”观察软复位之前,指定为一个标量整数。

    这个属性设置的StableCountLimit名称-值参数。

    数据类型:

    这个属性是只读的。

    的状态DriftDetector前培训最新数据,指定为“稳定”,“警告”,或“漂移”

    数据类型:字符

    这个属性是只读的。

    当前状态的DriftDetector训练后的最新数据,指定为“稳定”,“警告”,或“漂移”

    数据类型:字符

    这个属性是只读的。

    标志指示是否DriftStatus“漂移”,指定为逻辑0()或1(真正的)。

    数据类型:逻辑

    这个属性是只读的。

    最大数量的连续“警告”观察复位之前,指定为一个标量整数。

    数据类型:

    这个属性是只读的。

    标志指示是否DriftStatus“警告”,指定为逻辑0()或1(真正的)。

    数据类型:逻辑

    这个属性是只读的。

    标志指示是否BaseLearner继续训练输入数据,指定为逻辑0()或1(真正的)。

    数据类型:逻辑

    这个属性是只读的。

    标志指示是否跟踪性能指标增量模型,指定为逻辑0()或1(真正的)。

    incrementalDriftAwareLearner将这个属性从Mdl.BaseLearner

    增量模型Mdl温暖的(IsWarm就变成了真正的增量式拟合函数符合(后)Mdl.BaseLearner.EstimationPeriod+MetricsWarmupPeriod增量式模型)的观察。

    价值 描述
    真正的1 增量模型Mdl是温暖的。因此,updateMetricsupdateMetricsAndFit跟踪的性能指标指标的属性Mdl
    0 增量模型Mdl没有温暖。updateMetricsupdateMetricsAndFit不跟踪性能指标。

    数据类型:逻辑

    这个属性是只读的。

    指定数量的预测变量,作为一个非负数字标量。

    incrementalDriftAwareLearner将这个属性从Mdl.BaseLearner。您可以指定数量的预测变量的起始BaseLearner

    数据类型:

    这个属性是只读的。

    观察适合增量模型的数量Mdl指定为一个非负数字标量。

    incrementalDriftAwareLearner将这个属性从Mdl.BaseLearner

    NumTrainingObservations当你通过增加Mdl和训练数据适合updateMetricsAndFit

    请注意

    如果你把一个传统训练模型创建Mdl.BaseLearner,incrementalDriftAwareLearner不会增加观测的数量符合传统的训练模式NumTrainingObservations

    数据类型:

    这个属性是只读的。

    在增量学习模型更新的性能指标updateMetricsupdateMetricsAndFit,指定为一个表有两列和行,是指定的指标的数量吗指标名称-值参数的起始BaseLearner

    incrementalDriftAwareLearner将这个属性从Mdl.BaseLearner

    的列指标标记累积窗口

    • 累积——元素j模型的性能,以度量j模型,从时间变得温暖(IsWarm1)。

    • 窗口——元素j模型的性能,以度量j评估在所有指定的窗口内观察MetricsWindowSize财产。软件更新窗口后流程MetricsWindowSize观察。

    行标记指定的指标。

    数据类型:

    这个属性是只读的。

    数量的观察的增量式模型之前必须符合其跟踪性能指标指标属性,指定为一个非负整数。

    incrementalDriftAwareLearner将这个属性从Mdl.BaseLearner。您可以指定指标热身期间的起始BaseLearner

    数据类型:

    这个属性是只读的。

    数量的观察使用性能指标计算窗口,指定为一个正整数。

    incrementalDriftAwareLearner将这个属性从Mdl.BaseLearner。您可以指定在启动的窗口大小的指标BaseLearner

    数据类型:

    对象的功能

    适合 火车drift-aware学习者与新数据增量学习
    损失 回归或分类错误的增量drift-aware学习者
    perObservationLoss 每观察回归或分类错误的增量drift-aware学习者
    预测 从增量drift-aware学习模型预测反应的新观察
    重置 重置增量drift-aware学习者
    updateMetrics 更新性能指标增量drift-aware学习模型得到新的数据
    updateMetricsAndFit 更新性能指标增量drift-aware学习模型给出新的数据和训练模式

    例子

    全部折叠

    加载数据集人类活动。随机洗牌数据。

    负载humanactivity;n =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);

    细节的数据集,输入描述在命令行中。

    定义预测和响应变量。

    X =壮举(idx:);Y = actid (idx);

    响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid > 2)。

    Y = Y > 2;

    下半年翻转标签的数据集来模拟漂移。

    Y(地板(元素个数(Y) / 2):,:) = ~ Y(地板(元素个数(Y) / 2):,:);

    启动一个默认增量drift-aware模型分类如下:

    1. 创建一个默认为二进制增量线性支持向量机模型的分类。

    2. 启动一个默认增量drift-aware模型使用增量线性支持向量机模型。

    incMdl = incrementalClassificationLinear ();idaMdl = incrementalDriftAwareLearner (incMdl);

    idaMdl是一个incrementalDriftAwareLearner模型。所有的属性是只读的。

    Preallocate变量的数量在每个块创建一个流数据和变量来存储分类错误。

    numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);ce = array2table (0 (nchunk, 2),“VariableNames”,(“累积”“窗口”]);

    Preallocate变量跟踪漂移状态。

    状态= 0 (nchunk, 1);statusname =字符串(nchunk, 1);

    模拟数据流与传入的50块的观察。在每一次迭代:

    1. 调用updateMetricsAndFit更新的性能指标和适应drift-aware模型输入数据。覆盖前面的增量式模型与新的。

    2. 存储和每个迭代分类累积误差ce。的指标的属性idaMdl存储和窗口分类累积误差,在每次迭代更新。

    j = 1: nchunk ibegin = min (n, numObsPerChunk * (j - 1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;idaMdl = updateMetricsAndFit (idaMdl X (idx:), Y (idx));statusname (j) =字符串(idaMdl.DriftStatus);如果idaMdl。漂移Detected status(j) = 2;elseifidaMdl。警告Detected status(j) = 1;其他的状态(j) = 0;结束ce {j:} = idaMdl.Metrics {“ClassificationError”,:};结束

    updateMetricsAndFit函数首先评估模型的性能通过调用updateMetrics输入数据,然后通过调用数据模型相吻合适合:

    updateMetrics功能评估模型的性能处理传入的观察。函数写入指定的指标,测量累计和在指定窗口的观察,处理的指标模型属性。

    适合功能符合模型通过更新基础学习者和监测漂移传入批数据。当你打电话适合,软件执行以下程序:

    • 火车模型NumTrainingObservations观察。

    • 训练后,软件开始跟踪模型损失是否发生任何概念漂移,并相应地更新漂移状态。

    • 当漂移状态警告,软件列车临时模型来代替BaseLearner在准备即将到来的漂移。

    • 当漂移状态漂移、临时模型取代了BaseLearner

    • 当漂移状态稳定的,暂时丢弃的软件模型。

    有关更多信息,请参见算法部分。

    情节的累积和每个窗口分类错误。标志着热身和训练时间,介绍了漂移。

    h =情节(ce.Variables);xlim ([0 nchunk]) ylabel (“分类错误”)包含(“迭代”)参照线(idaMdl.MetricsWarmupPeriod / numObsPerChunk,“g -。”,“热身期”线宽= 1.5)参照线(idaMdl.TrainingPeriod / numObsPerChunk,“b -。”,“培训”LabelVerticalAlignment =“中间”、线宽= 1.5)参照线(地板(元素个数(Y) / 2) / numObsPerChunk,“m——”,“漂移”LabelVerticalAlignment =“中间”传说,线宽= 1.5)(h, ce.Properties.VariableNames)传说(h,位置=“最佳”)

    图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel分类误差包含5线类型的对象,constantline。这些对象代表累积,窗口。

    情节漂移状态和迭代数。

    图()gscatter (1: nchunk,状态、statusname“巨磁电阻”,“*牛”(4 5 5),“上”,“迭代”,“漂移”状态,“填充”)

    图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel漂移状态包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表稳定、漂移。

    创建随机概念和概念漂移数据生成器使用辅助函数,HelperSineGeneratorHelperConceptDriftGenerator,分别。

    concept1 = HelperSineGenerator (ClassificationFunction = 1, IrrelevantFeatures = true, TableOutput = false);concept2 = HelperSineGenerator (ClassificationFunction = 3, IrrelevantFeatures = true, TableOutput = false);driftGenerator = HelperConceptDriftGenerator (concept1 concept2, 15000, 1000);

    ClassificationFunction是1,HelperSineGenerator标签所有点满足x1<sin (x2)1,否则函数标签为0。当ClassificationFunction3,这是逆转。也就是说,HelperSineGenerato所有的点以满足r标签x1> =sin (x2)1,否则函数标签0 [2]。使用的软件返回矩阵中的数据增量的学习者。

    HelperConceptDriftGenerator建立了概念漂移。对象使用一个s形的函数1. / (1 + exp (4 * (numobservations-position)。/宽度))决定选择第一个流的概率在生成数据[3]。在这种情况下,位置参数是15000,宽度参数是1000。随着观测超过数量的位置值减去一半的宽度,从第一个流的概率抽样生成数据时减少。乙状结肠函数允许从一个流平稳过渡到另一个。更大的宽度值表明一个更大的过渡时期,流大约同样有可能被选中。

    发起一个增量drift-aware模型分类如下:

    1. 创建一个二进制增量朴素贝叶斯分类模型的分类。

    2. 发起一个增量的概念漂移探测器使用霍夫丁范围漂移的检测方法与移动平均线(HDDMA)。

    3. 使用增量线性模型和概念漂移探测器,启动增量drift-aware模型。指定培训期间为5000年观测。

    BaseLearner = incrementalClassificationNaiveBayes (MaxNumClasses = 2,指标=“classiferror”);dd = incrementalConceptDriftDetector (“hddma”);理想= incrementalDriftAwareLearner (BaseLearner DriftDetector = dd, TrainingPeriod = 5000);

    Preallocate每个块中的变量和用于创建数据流的迭代次数。

    numObsPerChunk = 10;numIterations = 4000;

    Preallocate跟踪漂移状态变量和漂移时间,和存储分类错误。

    dstatus = 0 (numIterations, 1);statusname =字符串(numIterations, 1);driftTimes = [];ce = array2table (0 (numIterations, 2), VariableNames = [“累积”“窗口”]);

    模拟数据流与传入的10块观察每执行增量drift-aware学习。在每一次迭代:

    1. 模拟预测数据和标签和更新driftGenerator使用辅助函数hgenerate

    2. 调用updateMetricsAndFit更新性能指标和适应增量drift-aware模型传入的数据。

    3. 跟踪和记录漂移状态和分类误差可视化的目的。

    rng (12);%的再现性j = 1: numIterations%生成数据(driftGenerator, X, Y) = hgenerate (driftGenerator numObsPerChunk);%更新性能指标和健康理想= updateMetricsAndFit(理想,X, Y);%记录漂移状态和分类错误statusname (j) =字符串(idal.DriftStatus);ce {j:} = idal.Metrics {“ClassificationError”,:};如果的理想。漂移Detected dstatus(j) = 2;elseif的理想。WarningDetected dstatus (j) = 1;其他的dstatus (j) = 0;结束如果的理想。漂移Detected driftTimes(end+1) = j;结束结束

    情节的累积和每个窗口分类错误。标志着热身和训练时间,介绍了漂移。

    h =情节(ce.Variables);numIterations xlim ([0]) ylim (0.22 [0]) ylabel (“分类错误”)包含(“迭代”)参照线(idal.MetricsWarmupPeriod / numObsPerChunk,“g -。”,“热身期”线宽= 1.5)参照线(idal.MetricsWarmupPeriod / numObsPerChunk + driftTimes,“g -。”,“热身期”线宽= 1.5)参照线(idal.TrainingPeriod / numObsPerChunk,“b -。”,“培训”LabelVerticalAlignment =“中间”线宽= 1.5)参照线(driftTimes“m——”,“漂移”LabelVerticalAlignment =“中间”传说,线宽= 1.5)(h, ce.Properties.VariableNames)传说(h,位置=“最佳”)

    图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel分类误差包含6行类型的对象,constantline。这些对象代表累积,窗口。

    updateMetricsAndFit函数首先评估模型的性能通过调用updateMetrics输入数据,然后通过调用数据模型相吻合适合:

    updateMetrics功能评估模型的性能处理传入的观察。函数写入指定的指标,测量累计和在指定窗口的观察,处理的指标模型属性。

    适合功能符合模型通过更新基础学习者和监测漂移传入批数据。当你打电话适合,软件执行以下程序:

    • 火车模型NumTrainingObservations观察。

    • 训练后,软件开始跟踪模型损失是否发生任何概念漂移,并相应地更新漂移状态。

    • 当漂移状态警告,软件列车临时模型来代替BaseLearner在准备即将到来的漂移。

    • 当漂移状态漂移、临时模型取代了BaseLearner

    • 当漂移状态稳定的,暂时丢弃的软件模型。

    有关更多信息,请参见算法部分。

    情节漂移状态和迭代数。

    gscatter (1: numIterations dstatus statusname,“巨磁电阻”,“o”5,“上”,“迭代”,“漂移”状态,“填充”)

    图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel漂移状态包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表稳定,警告,漂移。

    创建随机概念数据和概念漂移生成器使用辅助函数HelperRegrGeneratorHelperConceptDriftGenerator,分别。

    concept1 = HelperRegrGenerator (NumFeatures = 100, NonZeroFeatures =[1、20、40、50, 55岁),FeatureCoefficients = (4、5、10、2、6], NoiseStd = 1.1, TableOutput = false);concept2 = HelperRegrGenerator (NumFeatures = 100, NonZeroFeatures =[10年,20年,45岁,56岁,80),FeatureCoefficients = (4、5、10、2、6], NoiseStd = 1.1, TableOutput = false);driftGenerator = HelperConceptDriftGenerator (concept1 concept2, 15000, 1000);

    HelperRegrGenerator生成流数据使用的特性和功能对回归系数在调用函数中指定。在每个步骤中,函数样本来自正态分布的预测。然后,使用功能的函数计算响应系数和预测价值和添加一个正态分布的随机噪声平均值为零且指定噪声标准差。使用的软件返回矩阵中的数据增量的学习者。

    HelperConceptDriftGenerator建立了概念漂移。对象使用一个s形的函数1. / (1 + exp (4 * (numobservations-position)。/宽度))决定选择第一个流的概率在生成数据[3]。在这种情况下,位置参数是15000,宽度参数是1000。随着观测超过数量的位置值减去一半的宽度,从第一个流的概率抽样生成数据时减少。乙状结肠函数允许从一个流平稳过渡到另一个。更大的宽度值表明一个更大的过渡时期,流大约同样有可能被选中。

    发起一个增量drift-aware回归模型如下:

    1. 创建一个增量的线性回归模型。指定线性回归模型类型和解决者类型。

    2. 发起一个增量的概念漂移探测器使用霍夫丁范围漂移的检测方法与移动平均线(HDDMA)。

    3. 使用增量线性模型和概念漂移探测器,实例化一个增量drift-aware模型。指定培训期间为6000年观测。

    baseMdl = incrementalRegressionLinear(学习者=“leastsquares”解算器=“sgd”EstimationPeriod = 1000,标准化= false);dd = incrementalConceptDriftDetector (“hddma”选择=“更大的”InputType =“连续”WarmupPeriod = 1000);理想= incrementalDriftAwareLearner (baseMdl DriftDetector = dd, TrainingPeriod = 6000);

    Preallocate每个块中的变量和用于创建数据流的迭代次数。

    numObsPerChunk = 10;numIterations = 4000;

    Preallocate跟踪漂移状态变量和漂移时间,和储存回归错误。

    dstatus = 0 (numIterations, 1);statusname =字符串(numIterations, 1);driftTimes = [];ce = array2table (0 (numIterations, 2), VariableNames = [“累积”“窗口”]);

    模拟数据流与传入的10块观察每执行增量drift-aware学习。在每一次迭代:

    1. 模拟预测数据和标签,并更新漂移发生器使用helper函数hgenerate

    2. 调用updateMetricsAndFit更新性能指标和适应增量drift-aware模型传入的数据。

    3. 跟踪和记录漂移状态和回归误差可视化的目的。

    rng (12);%的再现性j = 1: numIterations%生成数据(driftGenerator, X, Y) = hgenerate (driftGenerator numObsPerChunk);%更新性能指标和健康理想= updateMetricsAndFit(理想,X, Y);%漂移状态和回归错误记录statusname (j) =字符串(idal.DriftStatus);ce {j:} = idal.Metrics {“MeanSquaredError”,:};如果的理想。漂移Detected dstatus(j) = 2;elseif的理想。WarningDetected dstatus (j) = 1;其他的dstatus (j) = 0;结束如果的理想。漂移Detected driftTimes(end+1) = j;结束结束

    绘制和每个窗口回归累积误差。标志着热身和训练时间,介绍了漂移。

    h =情节(ce.Variables);xlim ([0 numIterations]) ylabel (“均方误差”)包含(“迭代”)参照线((idal.MetricsWarmupPeriod + idal.BaseLearner.EstimationPeriod) / numObsPerChunk,“g -。”,“热身期”线宽= 1.5)参照线(idal.TrainingPeriod / numObsPerChunk,“b -。”,“培训”LabelVerticalAlignment =“中间”线宽= 1.5)参照线(driftTimes“m——”,“漂移”LabelVerticalAlignment =“中间”传说,线宽= 1.5)(h, ce.Properties.VariableNames)传说(h,位置=“最佳”)

    图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel均方误差包含5线类型的对象,constantline。这些对象代表累积,窗口。

    情节漂移状态和迭代数。

    gscatter (1: numIterations dstatus statusname,“巨磁电阻”,“o”5,“上”,“迭代”,“漂移”状态,“填充”)

    图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel漂移状态包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表稳定、漂移。

    算法

    全部展开

    引用

    [1]Barros罗伯托•克里等。“RDDM:活性检测方法。”专家系统与应用程序。90卷,2017年12月,344 - 55页。https://doi.org/10.1016/j.eswa.2017.08.023

    [2]Bifet,艾伯特,et al。“新乐团演化数据流的方法。”第十五届ACM SIGKDD国际会议程序知识发现和数据挖掘。ACM出版社,2009,第139页。https://doi.org/10.1145/1557019.1557041

    [3]伽马,若昂,et al。“学习与漂移检测”。先进的人工智能- SBIA 2004、编辑安娜·l·c·Bazzan Sofiane Labidi, 3171卷,激飞柏林海德堡,2004年,页286 - 95。https://doi.org/10.1007/978 - 3 - 540 - 28645 - 5 - _29

    版本历史

    介绍了R2022b