主要内容

updateMetricsAndFit

更新性能指标增量drift-aware学习模型给出新的数据和训练模式

自从R2022b

    描述

    例子

    Mdl= updateMetricsAndFit (Mdl,X,Y)返回一个增量drift-aware学习模型Mdl,这是输入增量drift-aware学习模型Mdl以下修改:

    1. updateMetricsAndFit测量模型性能的预测和响应数据,XY分别。当输入模型温暖的(Mdl.IsWarm真正的),updateMetricsAndFit覆盖之前的计算指标,存储在指标财产,用新的价值观。否则,updateMetricsAndFit商店指标代替。

    2. updateMetricsAndFit符合修改后的模型输入数据通过执行增量drift-aware学习

    输入和输出模型具有相同的数据类型。

    Mdl= updateMetricsAndFit (Mdl,X,Y,名称=值)使用附加选项指定一个或多个名称参数。例如,您可以指定预测数据矩阵的列对应于观测,并设置观察权重。

    例子

    全部折叠

    创建随机概念和概念漂移数据生成器使用辅助函数,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线类型的对象。一个或多个行显示的值只使用这些对象标记代表稳定,警告,漂移。

    输入参数

    全部折叠

    drift-aware增量学习模型适合流媒体数据,指定为一个incrementalDriftAwareLearner模型对象。您可以创建Mdl使用incrementalDriftAwareLearner函数。更多细节,请参见页面对象引用。

    块的预测数据模型是合适的,指定为一个浮点矩阵n观察和Mdl.BaseLearner.NumPredictors预测变量。

    Mdl.BaseLearner接受了ObservationsIn名称-值参数的值ObservationsIn确定变量和观测的方向。默认的ObservationsIn值是“行”,这表明观察预测数据是面向的行X

    观察反应的长度(或标签)Y和观察的数量X必须是相等的;Y (j)是观察的响应(或标签)j(行或列)X

    请注意

    • 如果Mdl.BaseLearner.NumPredictors= 0,updateMetricsAndFit推断预测的数量X,并设置相应的属性的输出模型。否则,如果流数据中预测变量的数量变化Mdl.BaseLearner.NumPredictors,updateMetricsAndFit一个错误的问题。

    • updateMetricsAndFit万博1manbetx只支持浮点输入预测数据。如果你的输入数据包括分类数据,您必须准备一个编码版本的分类数据。使用dummyvar每个分类变量转换为一个数字矩阵的虚变量。然后,连接所有哑变量矩阵和任何其他数值预测。更多细节,请参阅虚拟变量

    数据类型:|

    块的反应(或标签)的模型是合适的,指定为以下之一:

    • 浮点矢量的n回归模型的元素,n的行数在吗X

    • 分类、字符或字符串数组,逻辑向量,或单元阵列的特征向量分类模型。如果Y是一个字符数组,它必须有一个类标签每一行。否则,Y必须是一个向量n元素。

    的长度Y和观察的数量X必须是相等的;Y (j)是观察的响应(或标签)j(行或列)X

    对于分类问题:

    • Mdl.BaseLearner.ClassNames非空的,适用下列条件:

      • 如果Y包含一个标签,它不是一个成员Mdl.BaseLearner.ClassNames,updateMetricsAndFit一个错误的问题。

      • 的数据类型YMdl.BaseLearner.ClassNames必须相同。

    • Mdl.BaseLearner.ClassNames是空的,updateMetricsAndFit推断Mdl.BaseLearner.ClassNames从数据。

    数据类型:||分类|字符|字符串|逻辑|细胞

    名称-值参数

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

    例子:ObservationsIn = "列",权重= W指定的列预测矩阵对应于观测,和向量W在增量学习包含观察权重应用。

    预测数据观察维度,指定为“列”“行”

    updateMetricsAndFit万博1manbetx支持ObservationsIn只有在Mdl.BaseLearner万博1manbetx支持ObservationsIn名称-值参数。

    例子:ObservationsIn = "列"

    数据类型:字符|字符串

    块的观察重量、指定为一个浮点向量的积极的价值观。updateMetricsAndFit重的观察X与相应的值权重。的大小权重必须等于n,这是观察的数量X

    默认情况下,权重(n,1)

    例子:重量= w

    数据类型:|

    输出参数

    全部折叠

    更新drift-aware增量学习模型,作为增量学习模型对象返回相同的数据类型作为输入模型Mdl,incrementalDriftAwareLearner

    算法

    全部折叠

    增量Drift-Aware学习

    增量学习,或在线学习,是机器学习的一个分支关心处理传入的数据从数据流,可能没有知识的预测变量的分布方面的预测或目标函数(包括调优参数值),或者观察是否标示。增量学习有别于传统机器学习,足够的标签数据可用来适应一个模型,优化hyperparameters进行交叉验证,推断预测分布。更多细节,请参阅增量学习概述

    不像其他的增量学习统计和机器学习的工具箱™所提供的功能updateMetricsAndFit模型对象结合增量学习和概念漂移检测。

    在创建一个incrementalDriftAwareLearner对象,使用updateMetrics性能指标和更新模型适合以适应传入的数据基本模型,检查潜在的漂移模型性能(概念漂移),和更新或重置增量drift-aware学习者,如果必要的。您还可以使用updateMetricsAndFit。的适合函数实现活性漂移检测方法(RDDM)[1]如下:

    • Mdl.BaseLearner.EstimationPeriod(如果需要)MetricsWarmupPeriod,函数增量drift-aware模型火车NumTrainingObservations观察,直到达到TrainingPeriod。(如果TrainingPeriod值是小于Mdl.BaseLearner.MetricsWarmupPeriod值,然后incrementalDriftAwareLearner设置TrainingPeriod值作为Mdl.BaseLearner.MetricsWarmupPeriod)。

    • NumTrainingObservations > TrainingPeriod,软件开始跟踪模型的损失。使用软件计算每个观测损失perObservationLoss函数。而每观察损失计算,软件使用“classiferror”指标分类模型和损失“squarederror”回归模型。然后附加损失函数值计算使用的最后一块数据对现有缓冲损失值。

    • 接下来,软件检查任何概念漂移发生使用detectdrift功能和更新DriftStatus相应的行动。

    基于漂移状态,适合执行以下程序:

    • DriftStatus“警告”- - - - - -软件第一次连续增加“警告”状态数1。

      • 如果连续“警告”状态数小于WarningCountLimit价值和PreviousDriftStatus值是稳定的,那么软件列车临时增量学习者(如果不存在的话),并设置它(或现有的一个)BaseLearner

        然后软件重置临时增量使用学习者的学习者重置函数。

      • 如果连续“警告”状态数小于WarningCountLimit价值和PreviousDriftStatus值是“警告”,那么软件列车现有临时增量式模型使用最新的数据块。

      • 如果连续“警告”状态数多WarningCountLimit值,那么软件设置DriftStatus价值“漂移”

    • DriftStatus“漂移”- - - - - -软件执行以下步骤。

      • 设置连续“警告”状态数到0。

      • 重置DriftDetector使用重置函数。

      • 清空缓冲区损失值和附加损耗值的最新的数据缓冲损失值。

      • 如果临时增量式模型不是空的,那么当前软件集BaseLearner值到临时增量模型和清空临时增量模型。

      • 如果临时增量模型是空的,然后软件重置BaseLearner利用学习者的价值重置函数。

    • DriftStatus“稳定”- - - - - -软件第一次连续增加“稳定”状态数1。

      • 如果连续“稳定”状态数小于StableCountLimitPreviousDriftStatus值是“警告”,那么软件警告的数量设置为零,清空临时模型。

      • 如果连续“稳定”状态数多StableCountLimit值,然后软件重置DriftDetector使用重置函数。然后保存的软件测试所有损失值的缓冲区使用的概念漂移detectdrift函数。

    一次DriftStatus被设置为“漂移”,BaseLearnerDriftDetector等到重置,软件Mdl.BaseLearner.EstimationPeriod+Mdl.BaseLearner.MetricsWarmupPeriod在它开始之前计算性能指标。

    性能指标

    • updateMetricsupdateMetricsAndFit函数跟踪模型性能指标(指标从新的数据增量式模型时)温暖的(Mdl.BaseLearner.IsWarm属性)。增量模型后变得温暖适合updateMetricsAndFit适合增量模型MetricsWarmupPeriod观察,这是度量预热期

      如果Mdl.BaseLearner.EstimationPeriod> 0,hyperparameters估计函数拟合模型的数据。因此,必须处理一个额外的功能EstimationPeriod观察模型开始前预热期的指标。

    • 指标增量模型的属性存储两种形式的各性能指标作为一个表的变量(列),累积窗口行,个别指标。当增量模型是温暖的,updateMetricsupdateMetricsAndFit更新后频率的指标:

      • 累积——函数计算累积度量模型以来的跟踪性能。功能更新指标每次调用函数,并计算基于整个提供数据集,直到模型重置。

      • 窗口——函数计算基于一个窗口内的所有观测指标决定的MetricsWindowSize名称-值参数。MetricsWindowSize也决定了软件更新的频率窗口指标。例如,如果MetricsWindowSize是20,函数计算指标根据过去的20的观察提供的数据(X((结束- 20 + 1):,:)Y((- 20 + 1)结束:结束))。

        增量跟踪性能指标的函数在一个窗口中使用以下过程:

        1. 商店MetricsWindowSize为每个指定的度量值,并存储相同数量的观察权重。

        2. 填充元素指标的值与模型基于批次的观测性能,并存储相应的观察权重。

        3. 当观察的窗口,覆盖Mdl.Metrics.Window窗口的加权平均性能指标。如果窗口时满满的函数处理一批观察,最新的传入MetricsWindowSize观察存储,最早的观察从窗口中删除。例如,假设MetricsWindowSize是20,有10之前存储值从一个批处理,和15值传入的。组成20窗口长度的函数使用15传入的观察和测量的最新5测量前一批。

    • 省略了一个观察的软件分数计算时累积窗口性能度量值。

    引用

    [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