主要内容

updateMetricsAndFit

在线性模型中更新性能指标,为增量学习提供新的数据和训练模型

描述

给定流数据,updateMetricsAndFit首先评估线性回归的已配置增量学习模型的性能(incrementalRegressionLinear对象)或线性二元分类(incrementalClassificationLinear对象)通过调用updateMetrics输入数据。然后updateMetricsAndFit通过调用使模型与该数据匹配适合.换句话说,updateMetricsAndFit执行prequential评价因为它将每个传入的数据块视为一个测试集,并跟踪累积测量的性能指标,并超过指定的窗口[1]

updateMetricsAndFit提供一种简单的方法来更新模型性能指标,并在每个数据块上训练模型。或者,您也可以通过调用分别执行这些操作updateMetrics然后适合,这允许更大的灵活性(例如,您可以根据模型在数据块上的性能来决定是否需要训练模型)。

例子

Mdl= updateMetricsAndFit (MdlXY返回一个增量学习模型Mdl,即输入增量学习模型Mdl修改如下:

  1. updateMetricsAndFit测量模型在传入预测器和响应数据上的性能,X而且Y分别。当输入模型为时温暖的Mdl。IsWarm真正的),updateMetricsAndFit对象中存储的计算指标指标属性中的新值。否则,updateMetricsAndFit商店指标代替。

  2. updateMetricsAndFit通过以下步骤使修改后的模型适合传入的数据:

    1. 初始化求解器的配置和线性模型系数和偏差估计的输入模型Mdl

    2. 将模型与数据拟合,并将更新后的系数估计值和配置存储在输出模型中Mdl

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

例子

Mdl= updateMetricsAndFit (MdlXY名称,值使用由一个或多个名-值对参数指定的其他选项。例如,您可以指定预测器数据矩阵的列对应于观测值,并设置观测值权重。

例子

全部折叠

创建一个默认的增量线性SVM模型用于二进制分类。

Mdl =增量分类线性()
Mdl = incrementalClassificationLinear IsWarm: 0 Metrics: [1x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' Beta: [0x1 double]偏差:0学习者:'svm'属性,方法

Mdl是一个incrementalClassificationLinear模型对象。它的所有属性都是只读的。

Mdl在使用它执行任何其他操作之前,必须适合于数据。

加载人类活动数据集。随机打乱数据。

负载humanactivityN = numel(actid);rng (1);%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

关于数据集的详细信息,请输入描述在命令行。

回答可以分为五类:坐着、站着、走着、跑着或跳舞。通过识别被测者是否在移动(actid> 2)。

Y = Y > 2;

将增量模型拟合到训练数据中updateMetricsAndfit函数。在每次迭代中:

  • 通过处理50个观测数据块来模拟数据流。

  • 将先前的增量模型覆盖为一个适合于新观测的新模型。

  • 商店 β 1 ,累积指标,以及窗口指标,以查看它们在增量学习期间是如何发展的。

%预先配置numObsPerChunk = 50;nchunk = floor(n/numObsPerChunk);Ce = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);Beta1 = 0 (nchunk,1);%增量拟合j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;Mdl = updateMetricsAndFit(Mdl,X(idx,:),Y(idx));ce{j,:} = Mdl。指标{“ClassificationError”,:};beta1(j + 1) = Mdl.Beta(1);结束

Mdl是一个incrementalClassificationLinear在流中的所有数据上训练的模型对象。在增量学习期间和模型预热后,updateMetricsAndFit检查模型对传入观测的性能,然后将模型与该观测拟合。

看看性能指标和 β 1 在训练过程中进化出来的,把它们画在单独的子图上。

图;Subplot (2,1,1) plot(beta1) ylabel(“\ beta_1”) xlim([0 nchunk]);参照线(Mdl。EstimationPeriod / numObsPerChunk,r -。);subplot(2,1,2) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)参照线(Mdl。EstimationPeriod / numObsPerChunk,r -。);参照线(Mdl。估计周期+ Mdl.MetricsWarmupPeriod)/numObsPerChunk“g -”。);传奇(h, ce.Properties.VariableNames)包含(“迭代”

图中包含2个轴对象。坐标轴对象1包含2个line、constantline类型的对象。坐标轴对象2包含4个line、constantline类型的对象。这些对象代表累积、窗口。

情节表明updateMetricsAndFit做以下事情:

  • 适合 β 1 在所有增量学习迭代过程中。

  • 仅在指标预热期之后计算性能指标。

  • 在每次迭代期间计算累计度量。

  • 在处理500个观测后计算窗口度量。

训练线性回归模型fitrlinear,将其转换为增量学习器,跟踪其性能,并使其适应流数据。从传统学习到增量学习。

加载和预处理数据

加载2015年NYC住房数据集,并洗牌数据。有关数据的详细信息,请参见纽约市开放数据

负载NYCHousing2015rng (1);%用于再现性n = size(NYCHousing2015,1);idxshiff = randsample(n,n);NYCHousing2015 = NYCHousing2015(idxshiff,:);

假设从曼哈顿收集的数据(1)是用一种新方法收集的,它的质量翻了一番。创建一个权重变量,将2归属于从曼哈顿收集的观测数据,1归属于所有其他观测数据。

n = size(NYCHousing2015,1);NYCHousing2015。W=(n,1)+ (NYCHousing2015.BOROUGH == 1);

提取响应变量SALEPRICE从桌子上。为了数值的稳定性,刻度SALEPRICE通过1 e6

Y = nychousing2015 . salesprice /1e6;NYCHousing2015。售价= [];

从分类预测器创建虚拟变量矩阵。

Catvars = [“区”“BUILDINGCLASSCATEGORY”“社区”];dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,...“数据源”, catvars);Dumvarmat = table2array(dumvarstbl);NYCHousing2015(:,catvars) = [];

将表中所有其他数值变量视为销售价格的线性预测因子。将虚拟变量矩阵连接到其余的预测器数据。转置结果预测矩阵。

idxnum = varfun(@isnumeric,NYCHousing2015,“OutputFormat”“统一”);X = [dumvarmat NYCHousing2015{:,idxnum}]';

列车线性回归模型

用一半数据的随机样本拟合线性回归模型。

Idxtt = randsample([true false],n,true);TTMdl = fitrlinear(X(:,idxtt),Y(idxtt),“ObservationsIn”“列”...“重量”NYCHousing2015.W (idxtt))
TTMdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [313x1 double]偏差:0.1116 Lambda: 2.1977e-05学习者:'svm'属性,方法

TTMdl是一个RegressionLinear表示传统训练线性回归模型的模型对象。

转换训练模型

将传统训练的线性回归模型转换为增量学习的线性回归模型。

IncrementalMdl =增量学习者(TTMdl)
IncrementalMdl = incrementalRegressionLinear IsWarm: 1 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [313x1 double]偏差:0.1116 Learner: 'svm'属性,方法

跟踪绩效指标和适合模型

方法对其余数据执行增量学习updateMetrics而且适合功能。在每次迭代中:

  1. 通过处理500个观测数据块来模拟数据流。

  2. 调用updateMetricsAndFit在给定传入观测数据块的情况下,更新模型的累积和窗口不敏感损失,然后将模型与数据拟合。的增量模型中更新损失指标财产。指定观测值以列为方向,并指定观测值权重。

  3. 存储损失和上次估计的系数 β 313

%预先配置Idxil = ~idxtt;Nil = sum(idxil);numObsPerChunk = 500;nchunk = floor(nil/numObsPerChunk);Ei = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);beta313 = [incrementalmml . beta (end);0 (nchunk 1)];Xil = X(:,idxil);Yil = Y(idxil);Wil = NYCHousing2015.W(idxil);%增量拟合j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1);iend = min(nil,numObsPerChunk*j);Idx = ibegin:iend;增量mdl = updateMetricsAndFit(增量mdl,Xil(:,idx),Yil(idx),...“ObservationsIn”“列”“重量”会(idx));ei{j,:} = IncrementalMdl。指标{“EpsilonInsensitiveLoss”,:};beta313(j + 1) = incrementalmml . beta (end);结束

IncrementalMdl是一个incrementalRegressionLinear在流中的所有数据上训练的模型对象。

绘制性能指标和估计系数的轨迹图 β 313

图;subplot(2,1,1) h = plot(ei.Variables);xlim ([0 nchunk]);ylabel (“不敏感损失”) subplot(2,1,2) plot(beta313) ylabel(“\ beta_”{313}) xlim([0 nchunk]);包含(“迭代”

图中包含2个轴对象。坐标轴对象1包含2个line类型的对象。这些对象代表累积、窗口。坐标轴对象2包含一个line类型的对象。

累积损失随着每次迭代(500个观测数据块)逐渐变化,而窗口损失则跳跃。因为指标窗口默认为200,updateMetricsAndFit基于每500个观测块中的最新200个观测来衡量性能。

β 313 变化,但很快趋于平稳适合处理观察数据块。

输入参数

全部折叠

增量学习模型,它的性能被测量,然后模型拟合数据,指定为incrementalClassificationLinearincrementalRegressionLinear模型对象。你可以创建Mdl直接或通过转换支持的,传统训练的机器学习模型使用万博1manbetxincrementalLearner函数。更多详细信息,请参见相应的参考页面。

如果Mdl。IsWarmupdateMetricsAndFit不跟踪模型的性能。详情请参见算法

预测器数据块,用于测量模型性能,然后将模型拟合,指定为的浮点矩阵n观察和Mdl。NumPredictors预测变量。的值“ObservationsIn”名称-值对参数决定变量和观察值的方向。

观察标签的长度Y观察的次数X必须平等;Y (j是观察的标签吗j(行或列)在X

请注意

  • 如果Mdl。NumPredictors= 0,updateMetricsAndFit从中推断预测器的数量X,并设置输出模型的一致性属性。否则,如果流数据中的预测变量数量从Mdl。NumPredictorsupdateMetricsAndFit产生一个错误。

  • updateMetricsAndFit万博1manbetx仅支持浮点输入预测器数据。如果输入模型Mdl表示经过转换的、传统训练的适合分类数据的模型dummyvar将每个分类变量转换为虚拟变量的数字矩阵,并将所有虚拟变量矩阵与任何其他数字预测函数连接起来。详情请参见虚拟变量

数据类型:|

用于测量模型性能并将模型拟合的标签块,指定为类别、字符或字符串数组、逻辑或浮点向量,或用于分类问题的字符向量单元格数组;或者一个用于回归问题的浮点向量。

观察标签的长度Y观察的次数X必须平等;Y (j是观察的标签吗j(行或列)在X

对于分类问题:

  • updateMetricsAndFit万博1manbetx只支持二进制分类。

  • 一会属性的输入模型Mdl非空,则应用以下条件:

    • 如果Y包含不是成员的标签Mdl。一会updateMetricsAndFit产生一个错误。

    • 的数据类型Y而且Mdl。一会一定是一样的。

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

请注意

  • 如果观察(预测或标签)或权重重量包含至少一个缺失()的值,updateMetricsAndFit忽略观察结果。因此,updateMetricsAndFit使用少于n计算模型性能的观察结果。

  • 数据块大小n和随机梯度下降(SGD)超参数批量大小(Mdl。BatchSize)可以是不同的值。如果n<Mdl。BatchSizeupdateMetricsAndFit使用n应用SGD时可用的观测值。

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“ObservationsIn”、“列”、“重量”,W指定预测器矩阵的列对应于观测值,以及向量W包含在增量学习期间应用的观察权重。

预测器数据观测维数,由逗号分隔的对组成“ObservationsIn”而且“列”“行”

数据类型:字符|字符串

观察权重块,指定为逗号分隔的对,由“重量”和一个正的浮点向量。updateMetricsAndFit对观察结果进行权衡X中对应的值权重.的大小权重必须等于n的观测数X

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

有关更多详细信息,包括标准化方案,请参见观察权重

数据类型:|

输出参数

全部折叠

更新的增量学习模型,作为与输入模型具有相同数据类型的增量学习模型对象返回Mdl,要么incrementalClassificationLinearincrementalRegressionLinear

当你打电话时updateMetricsAndFit,以下条件适用:

  • 如果模型温度不高,updateMetricsAndFit不计算性能指标。结果,指标的属性Mdl完全由值。详情请参见算法

  • 如果Mdl。EstimationPeriod> 0,updateMetricsAndFit使用第一个估计超参数Mdl。EstimationPeriod观察传给它;该函数不使用该数据训练输入模型。但是,如果传入块n观测值大于或等于估计期内剩余的观测值数updateMetricsAndFit使用第一个估计超参数n- - - - - -,并将输入模型拟合到其余的观察。因此,软件更新β而且偏见属性、超参数属性和记录保存属性,例如NumTrainingObservations

对于分类问题,如果一会属性的输入模型Mdl是一个空数组,updateMetricsAndFit设置一会属性的输出模型Mdl独特的(Y)

算法

全部折叠

性能指标

  • updateMetricsAndFit中表的行标签指定的模型性能指标Mdl。指标,从新数据时的增量模型为温暖的IsWarm属性是真正的).增量模型经过增量拟合后是温暖的,比如updateMetricsAndFit,将增量模型拟合为Mdl。MetricsWarmupPeriod观察,也就是指标预热期

    如果Mdl。EstimationPeriod> 0,updateMetricsAndFit在模型与数据拟合之前估计超参数。因此,函数必须处理附加项EstimationPeriod模型开始度量预热期之前的观察。

  • 指标属性将每个性能度量的两种形式存储为表的变量(列),累积而且窗口,将单个指标列成行。当增量模型为温模型时,updateMetricsAndFit以以下频率更新指标:

    • 累积-该函数计算自模型性能跟踪开始以来的累计指标。每次调用该函数时,该函数都会更新度量标准,并基于整个提供的数据集进行计算。

    • 窗口函数根据窗口内的所有观察结果计算指标Mdl。MetricsWindowSize财产。Mdl。MetricsWindowSize还决定软件更新的频率窗口指标。例如,如果Mdl。MetricsWindowSize为20时,该函数根据所提供数据中的最后20个观察结果计算度量(X((end - 20 + 1):end,:)而且Y((end - 20 + 1):end)).

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

      1. 对于每个指定的度量,存储一个长度的缓冲区Mdl。MetricsWindowSize以及观察权重的缓冲。

      2. 用基于批量传入观察的模型性能填充度量缓冲区的元素,并在权重缓冲区中存储相应的观察权重。

      3. 当缓冲区被填满时,覆盖Mdl.Metrics.Window在指标窗口中使用加权平均性能。如果函数在处理一批观测值时缓冲区过满,则最新的传入Mdl。MetricsWindowSize观测值进入缓冲区,最早的观测值从缓冲区中删除。例如,假设Mdl。MetricsWindowSize为20时,度量缓冲区中有10个来自先前处理的批处理的值,15个值是传入的。为了组成长度为20的窗口,该函数使用来自15个传入观测值的测量值和来自前一批的最新5个测量值。

观察权重

对于分类问题,如果先验类概率分布已知(换句话说,先验分布不是经验的),updateMetricsAndFit将观察权重归一化,使其与各自类中的先验类概率相加。这个动作意味着,默认情况下,观测权重是各自的先验类概率。

对于回归问题或先验类概率分布是经验的,软件将指定的观察权重归一化,每次调用时求和为1updateMetricsAndFit

参考文献

[1]比菲特,阿尔伯特,里卡尔Gavaldá,杰弗里·霍姆斯和伯恩哈德·法林格。数据流的机器学习及其在MOA中的应用.马萨诸塞州剑桥:麻省理工学院出版社,2007年。

扩展功能

R2020b中介绍