updateMetricsAndFit
在线性增量学习模型中,根据新的数据和训练模型更新性能指标
描述
给定流数据,updateMetricsAndFit
首先评估线性回归的已配置增量学习模型的性能(incrementalRegressionLinear
对象)或线性二元分类(incrementalClassificationLinear
对象)通过调用updateMetrics
输入数据。然后updateMetricsAndFit
通过调用使模型与该数据匹配适合
.换句话说,updateMetricsAndFit
执行prequential评价因为它将每个传入的数据块视为一个测试集,并跟踪累积测量的性能指标,并超过指定的窗口[1].
updateMetricsAndFit
提供一种简单的方法来更新模型性能指标,并在每个数据块上训练模型。或者,您也可以通过调用分别执行这些操作updateMetrics
然后适合
,这允许更大的灵活性(例如,您可以根据模型在数据块上的性能来决定是否需要训练模型)。
例子
更新数据流的性能指标和训练模型
创建一个默认的增量线性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个观测数据块来模拟数据流。
将先前的增量模型覆盖为一个适合于新观测值的新模型。
商店 ,累积指标,以及窗口指标,以查看它们在增量学习期间是如何发展的。
%预先配置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
检查模型在传入观测数据上的性能,然后将模型与这些观测数据拟合。
看看性能指标和 在训练过程中进化,将它们绘制在单独的瓷砖上。
T = tiledlayout(2,1);Nexttile plot(beta1) ylabel(“\ beta_1”) xlim([0 nchunk]) nexttile h = plot(ce.Variables);Xlim ([0 nchunk]) ylabel(分类错误的((Mdl)参照线。估计周期+ Mdl.MetricsWarmupPeriod)/numObsPerChunk“g -”。xlabel(t, ce.Properties.VariableNames)“迭代”)
情节表明updateMetricsAndFit
做以下事情:
适合 在所有增量学习迭代过程中。
仅在指标预热期之后计算性能指标。
在每次迭代期间计算累计度量。
在处理200个观测结果(4次迭代)后计算窗口度量。
指定观测方向和观测权重
训练线性回归模型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'属性,方法
跟踪绩效指标和适合模型
方法对其余数据执行增量学习updateMetricsAndFit
函数。在每次迭代中:
通过处理500个观测数据块来模拟数据流。
调用
updateMetricsAndFit
在给定传入观测数据块的情况下,更新模型的累积和窗口不敏感损失,然后将模型与数据拟合。用一个新的增量模型覆盖以前的增量模型。指定观测值以列为方向,并指定观测值权重。存储损失和上次估计的系数 .
%预先配置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
在流中的所有数据上训练的模型对象。
绘制性能指标和估计系数的轨迹图 .
T = tiledlayout(2,1);nexttile h = plot(ei.Variables);Xlim ([0 nchunk]) ylabel(“不敏感损失”nexttile plot(beta313) ylabel(“\ beta_”{313}xlim([0 nchunk]) xlabel(t,“迭代”)
累积损失随着每次迭代(500个观测数据块)逐渐变化,而窗口损失则跳跃。因为指标窗口默认为200,updateMetricsAndFit
基于每500个观测块中的最新200个观测来衡量性能。
变化,但很快趋于平稳适合
处理观察数据块。
输入参数
Mdl
- - - - - -增量学习模式
incrementalClassificationLinear
模型对象|incrementalRegressionLinear
模型对象
增量学习模型,它的性能被测量,然后模型拟合数据,指定为incrementalClassificationLinear
或incrementalRegressionLinear
模型对象。你可以创建Mdl
直接或通过转换支持的,传统训练的机器学习模型使用金宝appincrementalLearner
函数。更多详细信息,请参见相应的参考页面。
如果Mdl。IsWarm
是假
,updateMetricsAndFit
不跟踪模型的性能。详情请参见性能指标.
X
- - - - - -预测数据块
浮点矩阵
预测器数据块,用于测量模型性能,然后将模型拟合,指定为的浮点矩阵n观察和Mdl。NumPredictors
预测变量。的值ObservationsIn
名称-值参数决定变量和观察值的方向。默认的ObservationsIn
值是“行”
,表示预测器数据中的观测值沿的行方向X
.
观察标签的长度Y
观察的次数X
必须平等;Y (
是观察的标签吗j(行或列)在j
)X
.
请注意
数据类型:单
|双
Y
- - - - - -响应块(或标签)
分类数组|字符数组|字符串数组|逻辑向量|浮点矢量|字符向量的单元格数组
请注意
如果一个观察值(预测值或标签)或权重包含至少一个缺失(
南
)的值,updateMetricsAndFit
忽略观察结果。因此,updateMetricsAndFit
使用少于n计算模型性能并创建一个更新的模型,其中n观察的数量在吗X
.数据块大小n和随机梯度下降(SGD)超参数小批大小(
Mdl。BatchSize
)可以是不同的值,和n不必是迷你批大小的精确倍数。如果n<Mdl。BatchSize
,updateMetricsAndFit
使用n应用SGD时可用的观测值。如果n>Mdl。BatchSize
,该函数多次使用指定大小的mini-batch更新模型,然后将剩余的观察结果用于最后一个mini-batch。最后一个小批的观察数可以小于Mdl。BatchSize
.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“ObservationsIn”、“列”、“重量”,W
指定预测器矩阵的列对应于观测值,以及向量W
包含在增量学习期间应用的观察权重。
输出参数
Mdl
-更新的增量学习模型
incrementalClassificationLinear
模型对象|incrementalRegressionLinear
模型对象
更新的增量学习模型,作为与输入模型具有相同数据类型的增量学习模型对象返回Mdl
,要么incrementalClassificationLinear
或incrementalRegressionLinear
.
当你打电话时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)
).跟踪窗口内性能指标的增量函数使用以下过程:
存储一个长度的缓冲区
Mdl。MetricsWindowSize
对于每个指定的度量,并存储一个观察权重的缓冲区。用基于批量传入观察的模型性能填充度量缓冲区的元素,并在权重缓冲区中存储相应的观察权重。
当缓冲区被填满时,覆盖
Mdl.Metrics.Window
在指标窗口中使用加权平均性能。如果函数在处理一批观测值时缓冲区过满,则最新的传入Mdl。MetricsWindowSize
观测值进入缓冲区,最早的观测值从缓冲区中删除。例如,假设Mdl。MetricsWindowSize
为20时,度量缓冲区中有10个来自先前处理的批处理的值,15个值是传入的。为了组成长度为20的窗口,该函数使用来自15个传入观测值的测量值和来自前一批的最新5个测量值。
观察权重
对于分类问题,如果先验类概率分布已知(换句话说,先验分布不是经验的),updateMetricsAndFit
将观察权重归一化,使其与各自类中的先验类概率相加。这个动作意味着,默认情况下,观测权重是各自的先验类概率。
对于回归问题或先验类概率分布是经验的,软件将指定的观察权重归一化,每次调用时求和为1updateMetricsAndFit
.
参考文献
[1]比菲特,阿尔伯特,里卡尔Gavaldá,杰弗里·霍姆斯和伯恩哈德·法林格。数据流的机器学习及其在MOA中的应用.马萨诸塞州剑桥:麻省理工学院出版社,2007年。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)方法生成代码updateMetricsAndFit
函数。通过使用保存一个训练好的模型saveLearnerForCoder
.定义一个入口点函数,该函数通过loadLearnerForCoder
并调用updateMetricsAndFit
函数。然后使用codegen
为入口点函数生成代码。生成单精度C/ c++代码
updateMetricsAndFit
,指定名称-值参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。该表包含关于的参数的注释
updateMetricsAndFit
.完全支持不包括在本表中的参数。金宝app论点 注意事项和限制 Mdl
有关模型对象的使用说明和限制,请参见
incrementalClassificationLinear
或incrementalRegressionLinear
.X
批对批,观测的数量可以是一个可变的大小,但必须等于中的观测数量
Y
.预测变量的数量必须等于
Mdl。NumPredictors
.X
必须单
或双
.
Y
批对批,观测的数量可以是一个可变的大小,但必须等于中的观测数量
X
.对于分类问题,所有标签
Y
必须在Mdl。一会
.Y
和Mdl。一会
必须具有相同的数据类型。
以下限制适用:
如果你配置
Mdl
打乱数据(Mdl。洗牌
是真正的
,或Mdl。解算器
是“sgd”
或“asgd”
),updateMetricsAndFit
函数随机洗牌每批传入的观测值,然后再将模型与该批匹配。打乱后的观测顺序可能与MATLAB生成的顺序不匹配®.因此,用MATLAB计算的拟合系数与用生成的代码计算的拟合系数可能不相等。也可以对所有浮点输入参数和对象属性使用同构数据类型
单
或双
.
有关更多信息,请参见代码生成简介.
版本历史
Matlab명령
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。