主要内容

预测

从增量drift-aware学习模型预测反应的新观察

自从R2022b

    描述

    yfit=预测(Mdl,X)返回预测反应(或标签)yfit观察的预测数据X从增量drift-aware学习模型Mdl

    例子

    yfit=预测(Mdl,XObservationsIn =)指定观察维度的预测数据“行”(默认)或“列”。例如,指定ObservationsIn = "列"面向在预测表明,观测数据的列X

    例子

    (yfit,)=预测(___)也返回分类得分、后验概率或否定平均二进制的损失Mdl.BaseLearner是一个增量学习模型分类,使用任何输入参数组合在前面的语法。什么包含依赖的类型Mdl.BaseLearner模型对象。

    (yfit,,成本)=预测(___)返回预测(预期)误分类代价Mdl.BaseLearner是一个incrementalClassificationNaiveBayes模型对象,使用任何输入参数组合在前面的语法。

    例子

    全部折叠

    创建随机概念数据和概念漂移生成器使用辅助函数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);idaMdl = 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. 调用updateMetrics更新指标和性能适合适合增量drift-aware模型输入数据。

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

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

    情节漂移状态和迭代数。

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

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

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

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

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

    漂移的检测后,适合函数调用的重置函数重置增量drift-aware学习者,因此基础学习者和漂移探测器。的updateMetrics函数等待idaMdl.BaseLearner.EstimationPeriod + idaMdl.MetricsWarmupPeriod观察再次开始更新模型的性能指标。

    生成新的数据。调整列的预测变量。

    (driftGenerator, X, Y) = hgenerate (driftGenerator, 500);X = X ';

    预测新数据的反应。指定的方向预测变量。

    yhat =预测(idaMdl X, ObservationsIn =“列”);

    计算和绘制残差。

    res = Y - yhat;情节(res) ylabel (“残差”)包含(“新数据点”)

    图包含一个坐标轴对象。坐标轴对象包含新数据点,ylabel残差包含一个类型的对象。

    残差出现对称遍布0为新数据。

    创建随机概念数据使用HelperSineGenerator和概念漂移发电机HelperConceptDriftGenerator

    concept1 = HelperSineGenerator (“ClassificationFunction”,1“IrrelevantFeatures”,真的,“TableOutput”、假);concept2 = HelperSineGenerator (“ClassificationFunction”3,“IrrelevantFeatures”,真的,“TableOutput”、假);driftGenerator = HelperConceptDriftGenerator (concept1 concept2, 15000, 1000);

    ClassificationFunction是1,HelperSineGenerator标签所有点满足x1<sin (x2)1,否则函数标签为0。当ClassificationFunction3,这是逆转。也就是说,HelperSineGenerato所有的点以满足r标签x1> =sin (x2)1,否则函数标签为0。

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

    实例化一个增量drift-aware模型如下:

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

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

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

    BaseLearner = incrementalClassificationLinear(解决=“sgd”);dd = incrementalConceptDriftDetector (“hddma”);idaMdl = incrementalDriftAwareLearner (BaseLearner DriftDetector = dd, TrainingPeriod = 5000);

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

    numObsPerChunk = 10;numIterations = 4000;

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

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

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

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

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

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

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

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

    h =情节(ce.Variables);numIterations xlim ([0]) ylim (0.08 [0]) ylabel (“分类错误”)包含(“迭代”)参照线((idaMdl.BaseLearner.EstimationPeriod + idaMdl.MetricsWarmupPeriod) / numObsPerChunk,“g -。”,“估计+预热期”线宽= 1.5)参照线(idaMdl.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”4“上”,“迭代”,“漂移”状态,“填充”)

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

    生成新的数据500年的观察。预测类标签和分类得分为新数据。

    numnewdata = 500;(driftGenerator, X, Y) = hgenerate (driftGenerator numnewdata);[yhat, cscores] =预测(idaMdl X);

    计算ROC和阴谋的结果。

    中华民国= rocmetrics (Y, cscores, idaMdl.BaseLearner.ClassNames);情节(中华民国)

    图包含一个坐标轴对象。坐标轴对象与标题ROC曲线,包含假阳性,ylabel真阳性率包含5 roccurve类型的对象,散点、线。这些对象代表假(AUC = 0.9989),假模型操作点,真正的(AUC = 0.9989),真正的模型操作点。

    对于每个类,情节功能块ROC曲线和标记显示一个实心圆模型操作点。传说显示类名和AUC值曲线。在二元分类问题,两条ROC曲线是对称的,AUC值是相同的。

    计算模型的准确性。

    精度= (Y = = yhat) / 500和
    精度= 0.9820

    该模型预测精度高的新类标签。

    输入参数

    全部折叠

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

    块的预测数据来预测反应或标签,指定为一个浮点矩阵n观察和Mdl.BaseLearner.NumPredictors预测变量。

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

    请注意

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

    数据类型:|

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

    预测万博1manbetx支持ObservationsIn =维度只有在Mdl.BaseLearner万博1manbetx支持ObservationsIn名称-值参数。

    数据类型:字符|字符串

    输出参数

    全部折叠

    预测反应(标签),返回一个浮点向量,分类或字符数组,字符串或逻辑向量,或单元阵列的特征向量n行。n观察的数量吗X,yfit (j)是观察预期的响应(标签)了吗j

    • 对于分类问题,yfit具有相同的数据类型的类名称存储在吗Mdl.BaseLearner.ClassNames。软件将字符串数组作为细胞阵列的特征向量。

    • 对于回归问题,yfit是一个浮点向量。

    分类分数,后验概率,或否定平均二进制损失,作为一个浮点矩阵时返回Mdl.BaseLearner是一个增量分类模型。

    • Mdl.BaseLearner是一个incrementalClassificationLinearincrementalClassificationKernel模型对象,包含原始分类得分或后验概率取决于学习者类型。有关更多信息,请参见预测(incrementalClassificationLinear)或预测(incrementalClassificationKernel)。

    • Mdl.BaseLearner是一个incrementalClassificationNaiveBayes模型对象,包含了后验概率。有关更多信息,请参见预测(incrementalClassificationNaiveBayes)。

    • Mdl.BaseLearner是一个incrementalClassificationECOC模型对象,包含否定平均二进制损失。有关更多信息,请参见预测(incrementalClassificationECOC)。

    预期的误分类代价,作为一个返回n——- - - - - -元素个数(Mdl.BaseLearner.ClassNames)浮点矩阵时Mdl.BaseLearner是一个incrementalClassificationNaiveBayes模型。有关更多信息,请参见预测(incrementalClassificationNaiveBayes)。

    引用

    [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