updateMetrics
更新性能指标在线性增量学习模型给定的新数据
描述
给定的流数据,updateMetrics
措施的性能配置增量学习模型为线性回归(incrementalRegressionLinear
(对象)或线性二元分类incrementalClassificationLinear
对象)。updateMetrics
存储性能指标的输出模型。
updateMetrics
允许灵活的增量学习。后调用该函数来更新模型性能指标对传入的数据,您可以执行其他操作之前火车模型的数据。例如,您可以决定你是否需要培训模型基于业绩分配一个数据块。或者,您可以更新模型性能指标和训练模型数据到达时,在一个调用中,通过使用updateMetricsAndFit
函数。
测量模型的性能在一个指定的一批数据,调用损失
代替。
例子
增量模型的跟踪性能
火车二进制分类使用的线性模型fitclinear
,把它转换成增量学习,然后跟踪流数据的性能。
加载和数据预处理
载入人类活动数据集。随机洗牌数据。
负载humanactivityrng (1)%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
细节的数据集,输入描述
在命令行中。
响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid
> 2)。
Y = Y > 2;
为二进制分类培训线性模型
二进制分类符合线性模型的随机样本数据的一半。
idxtt = randsample((真假),n, true);TTMdl = fitclinear (X (idxtt:), Y (idxtt))
TTMdl = ClassificationLinear ResponseName:“Y”类名:[0 1]ScoreTransform:“没有一个”测试:[60 x1双]偏见:-0.2999λ:8.2967 e-05学习者:“支持向量机”属性,方法
TTMdl
是一个ClassificationLinear
模型对象代表二进制分类的传统训练的线性模型。
转换训练模型
传统训练分类模型转换为一个二进制分类线性模型的增量学习。
IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1指标:[1 x2表]一会:[0 1]ScoreTransform:“没有一个”测试:[60 x1双]偏见:-0.2999学习者:“支持向量机”属性,方法
IncrementalMdl.IsWarm
ans =逻辑1
增量模型是温暖的。因此,updateMetrics
可以跟踪模型给定的性能指标数据。
跟踪性能指标
跟踪模型性能对其余数据使用updateMetrics
函数。模拟数据流处理50观测一次。在每一次迭代:
调用
updateMetrics
更新和窗口分类累积误差模型的输入块的观察。覆盖前面的增量式模型更新的损失指标
财产。注意,函数不符合模型的一部分数据,大部分是“新”的数据模型。存储分类错误,第一个系数 。
%预先配置idxil = ~ idxtt;nil =总和(idxil);numObsPerChunk = 50;nchunk =地板(nil / numObsPerChunk);ce = array2table (0 (nchunk, 2),“VariableNames”,(“累积”“窗口”]);beta1 = [IncrementalMdl.Beta (1);0 (nchunk 1)];自= X (idxil:);Yil = Y (idxil);%增量式拟合为j = 1: nchunk ibegin = min (nil, numObsPerChunk * (j - 1) + 1);iend = min (nil, numObsPerChunk * j);idx = ibegin: iend;IncrementalMdl = updateMetrics (IncrementalMdl自(idx:), Yil (idx));ce {j:} = IncrementalMdl.Metrics {“ClassificationError”,:};beta1 (j + 1) = IncrementalMdl.Beta (1);结束
IncrementalMdl
是一个incrementalClassificationLinear
模型对象,追踪观察的数据流模型的性能。
画一个跟踪性能指标和估计系数的情节 。
t = tiledlayout (2, 1);nexttile h =情节(ce.Variables);xlim ([0 nchunk]) ylabel (分类错误的传奇(h, ce.Properties.VariableNames) nexttile情节(beta1) ylabel (“\ beta_1”)xlim ([0 nchunk])包含(t)“迭代”)
累计损失是稳定的,而跳窗的损失。
不会改变,因为updateMetrics
不符合模型的数据。
配置跟踪性能指标增量式模型
创建一个二进制增量线性支持向量机模型的分类。指定一个估计的5000年观察和SGD解算器。
Mdl = incrementalClassificationLinear (“EstimationPeriod”,5000,“规划求解”,“sgd”)
Mdl = incrementalClassificationLinear IsWarm: 0指标:[1 x2表]一会:[1 x0双]ScoreTransform:“没有一个”测试:[0 x1双]偏见:0学习者:“支持向量机”属性,方法
Mdl
是一个incrementalClassificationLinear
模型。所有的属性是只读的。
确定模型是温暖和度量的大小预热期通过查询模型属性。
isWarm = Mdl.IsWarm
isWarm =逻辑0
mwp = Mdl.MetricsWarmupPeriod
mwp = 1000
Mdl.IsWarm
是0;
因此,Mdl
没有温暖。
确定数量的观察增量的拟合函数,如适合
之前,必须处理测量模型的性能。
numObsBeforeMetrics = Mdl。指标WarmupPeriod + Mdl.EstimationPeriod
numObsBeforeMetrics = 6000
载入人类活动数据集。随机洗牌数据。
负载humanactivityn =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
细节的数据集,输入描述
在命令行中。
响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid
> 2)。
Y = Y > 2;
执行增量学习。在每一次迭代:
模拟数据流处理一块50的观察。
测量模型的性能指标的一部分使用
updateMetrics
。覆盖输入模型。符合模型通过使用传入的一部分
适合
函数。覆盖输入模型。商店 和错误分类错误率,看看他们在增量学习发展。
%预先配置numObsPerChunk = 50;nchunk =地板(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 = updateMetrics (Mdl X (idx:), Y (idx));ce {j:} = Mdl.Metrics {“ClassificationError”,:};Mdl =适合(Mdl X (idx:), Y (idx));beta1 (j) = Mdl.Beta (1);结束
Mdl
是一个incrementalClassificationLinear
模型对象培训中的所有数据流。
在增量学习看到参数如何演变,把它们在不同的瓷砖。
t = tiledlayout (2, 1);nexttile情节(beta1) ylabel (“\ beta_1”)参照线(Mdl.EstimationPeriod / numObsPerChunk,r -。)包含(“迭代”)轴紧nexttile情节(ce.Variables) ylabel (“ClassificationError”)参照线(Mdl.EstimationPeriod / numObsPerChunk,r -。)参照线(numObsBeforeMetrics / numObsPerChunk,“g -”。)xlim ([0 nchunk])传说(ce.Properties.VariableNames)包含(t)“迭代”)
mdlIsWarm = numObsBeforeMetrics / numObsPerChunk
mdlIsWarm = 120
情节表明适合
不符合模型的数据或更新之前的参数估计。同时,updateMetrics
没有跟踪的分类误差估计和度量之前热身阶段(120块)。
执行条件的培训
逐步培养一个线性回归模型只有当性能就会降低。
负载和洗牌2015年纽约市住房数据集。更多细节数据,看看纽约市公开的数据。
负载NYCHousing2015rng (1)%的再现性n =大小(NYCHousing2015, 1);shuffidx = randsample (n, n);NYCHousing2015 = NYCHousing2015 (shuffidx:);
提取反应变量SALEPRICE
从表中。数值稳定、规模SALEPRICE
通过1 e6
。
Y = NYCHousing2015.SALEPRICE / 1 e6;NYCHousing2015。SALEPRICE = [];
创建虚拟变量分类预测矩阵。
catvars = [“区”“BUILDINGCLASSCATEGORY”“社区”];dumvarstbl = varfun (@ (x) dummyvar(分类(x)), NYCHousing2015,…“数据源”,catvars);dumvarmat = table2array (dumvarstbl);NYCHousing2015 (:, catvars) = [];
对所有其他表中的数值变量的线性预测销售价格。连接矩阵的虚变量的预测数据,和转置数据加速计算。
idxnum = varfun (@isnumeric NYCHousing2015,“OutputFormat”,“统一”);X = [dumvarmat NYCHousing2015 {:, idxnum}] ';
配置一个线性回归模型的增量学习,没有一个评估或量度的加热时间。指定一个指标1000观察的窗口大小。符合配置的模式第一个100年的观察,并指定观察是面向数据的列。
Mdl = incrementalRegressionLinear (“EstimationPeriod”0,“MetricsWarmupPeriod”0,…“MetricsWindowSize”,1000);numObsPerChunk = 100;Mdl =适合(Mdl X (: 1: numObsPerChunk), Y (1: numObsPerChunk),“ObservationsIn”,“列”);
Mdl
是一个incrementalRegressionLinear
模型对象。
执行增量学习,条件合适,每个迭代遵循这个过程:
模拟数据流处理一块100年的观察。
更新模型的性能计算ε不敏感损失,在200年的观察窗。指定的观测是面向列的数据。
符合模型的数据块只有在最小损失的损失超过双打有经验。指定的观测是面向列的数据。
当跟踪性能和装配,覆盖前面的增量式模型。
存储和ε不敏感损失 看到培训期间损失和系数如何演变。
跟踪时
适合
火车模型。
%预先配置n =元素个数(Y)——numObsPerChunk;nchunk =地板(n / numObsPerChunk);beta313 = 0 (nchunk, 1);ei = array2table (nan (nchunk, 2),“VariableNames”,(“累积”“窗口”]);训练= false (nchunk, 1);%增量式拟合为j = 2: nchunk ibegin = min (n, numObsPerChunk * (j - 1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;Mdl = updateMetrics (Mdl X (:, idx), Y (idx),“ObservationsIn”,“列”);ei {j:} = Mdl.Metrics {“EpsilonInsensitiveLoss”,:};minei = min (ei {: 2});pdiffloss = (ei {j 2} - minei) / minei * 100;如果pdiffloss > 100 Mdl =适合(Mdl X (:, idx), Y (idx),“ObservationsIn”,“列”);训练(j) = true;结束beta313 (j) = Mdl.Beta(结束);结束
Mdl
是一个incrementalRegressionLinear
模型对象培训中的所有数据流。
模型的性能和 进化在训练,放到单独的瓷砖。
t = tiledlayout (2, 1);nexttile情节(beta313)在情节(找到(训练),beta313(训练),“r”。)xlim ([0 nchunk]) ylabel (“\ beta_”{313})参照线(Mdl.EstimationPeriod / numObsPerChunk,r -。)传说(“\ beta_”{313},培训发生的,“位置”,“东南”)举行从nexttile情节(ei.Variables) xlim ([0 nchunk]) ylabel (“ε不敏感损失”)参照线(Mdl.EstimationPeriod / numObsPerChunk,r -。传奇(ei.Properties.VariableNames)包含(t)“迭代”)
跟踪的情节 显示时间的常量值,最小的损失没有双有经验。
输入参数
Mdl
- - - - - -增量学习模型
incrementalClassificationLinear
模型对象|incrementalRegressionLinear
模型对象
增量学习模型的性能测量,指定为一个incrementalClassificationLinear
或incrementalRegressionLinear
模型对象。您可以创建Mdl
直接或通过转换支持,传统上使用训练有素的机器学习模型金宝appincrementalLearner
函数。更多细节,请参阅相应的引用页面。
如果Mdl.IsWarm
是假
,updateMetrics
没有跟踪的性能模型。你必须适应Mdl
来Mdl.EstimationPeriod+ Mdl.MetricsWarmupPeriod
通过观察Mdl
和数据适合
之前updateMetrics
可以跟踪性能指标。更多细节,请参阅性能指标。
X
- - - - - -块的预测数据
浮点矩阵
块的预测数据测量模型的性能,指定为一个浮点矩阵n观察和Mdl.NumPredictors
预测变量。的值ObservationsIn
名称-值参数确定变量和观测的方向。默认的ObservationsIn
值是“行”
,这表明观察预测数据是面向的行X
。
观察标签的长度Y
和观察的数量X
必须是相等的;Y (
观察的标签吗j(行或列)j
)X
。
请注意
数据类型:单
|双
Y
- - - - - -块的反应(标签)
分类数组|字符数组|字符串数组|逻辑向量|浮点矢量|单元阵列的特征向量
请注意
如果一个观察(预测或标签)或重量包含至少一个失踪(南
)的值,updateMetrics
忽略了观察。因此,updateMetrics
使用不到n性能计算模型,观察n观察的数量吗X
。
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:“ObservationsIn”、“列”、“重量”,W
指定的列预测矩阵对应于观测,和向量W
在增量学习包含观察权重应用。
输出参数
Mdl
——更新增量学习模型
incrementalClassificationLinear
模型对象|incrementalRegressionLinear
模型对象
增量学习模型更新,作为增量学习模型对象返回相同的数据类型作为输入模型Mdl
,要么incrementalClassificationLinear
或incrementalRegressionLinear
。
如果模型没有温暖,updateMetrics
不计算性能指标。结果,指标
的属性Mdl
是完全由南
值。如果模型是温暖的,updateMetrics
计算累积和窗口性能指标的新数据X
和Y
,覆盖相应的元素Mdl.Metrics
。所有其他的属性输入模型Mdl
带入输出模型Mdl
。更多细节,请参阅性能指标。
提示
与传统的培训、增量学习可能没有一个单独的测试(抵抗)。因此,将每个传入的数据作为测试集,通过增量式模型和每个传入的块
updateMetrics
在训练模型相同的数据使用适合
。
算法
性能指标
updateMetrics
只跟踪模型性能指标,表的行指定的标签Mdl.Metrics
当增量式模型,从新的数据温暖的(IsWarm
属性是真正的
)。增量模型后温暖适合
函数的增量式模型Mdl.MetricsWarmupPeriod
观察,这是度量预热期。如果
Mdl.EstimationPeriod
> 0,hyperparameters估计函数拟合模型的数据。因此,必须处理一个额外的功能EstimationPeriod
观察模型开始前预热期的指标。的
指标
增量模型的属性存储两种形式的各性能指标作为一个表的变量(列),累积
和窗口
行,个别指标。当增量模型是温暖的,updateMetrics
在以下的频率更新指标:累积
——函数计算累积度量模型以来的跟踪性能。功能更新指标每次你叫它和基地提供的计算对整个数据集。窗口
——函数计算指标基于观测由在一个窗口Mdl.MetricsWindowSize
财产。Mdl.MetricsWindowSize
也决定了软件更新的频率窗口
指标。例如,如果Mdl.MetricsWindowSize
是20,函数计算指标根据过去的20的观察提供的数据(X((结束- 20 + 1):,:)
和Y((- 20 + 1)结束:结束)
)。增量跟踪性能指标的函数在一个窗口中使用以下过程:
存储一个缓冲区的长度
Mdl.MetricsWindowSize
为每个指定的度量,并存储一个缓冲区的观察权重。填充的元素指标基于批次缓冲与模型性能的观察,并存储相应的权重观察权重缓冲区。
当缓冲区满,覆盖
Mdl.Metrics.Window
窗口的加权平均性能指标。如果缓冲区溢出时,函数过程一批观察,最新的传入Mdl.MetricsWindowSize
观察输入缓冲区,和最早的观察从缓冲区中删除。例如,假设Mdl.MetricsWindowSize
是20,缓冲区的指标有10个值从一个以前批处理,和15值传入的。组成20窗口长度,函数使用的测量15传入的观察和最新5测量前一批。
省略了一个观察的软件
南
预测(得分为分类和响应回归)计算累积
和窗口
性能度量值。
观察权重
对于分类问题,如果之前类概率分布是已知的(换句话说,先验分布不是经验),updateMetrics
规范化观察权重总和之前类概率在各自的类。这个动作意味着观察权重前各自的默认类概率。
回归问题或者类概率分布是经验之前,软件可实现指定观察权重之和为1每次调用updateMetrics
。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)生成的代码updateMetrics
函数。通过使用保存训练模型saveLearnerForCoder
。定义一个入口点函数,通过使用加载保存模型loadLearnerForCoder
并调用updateMetrics
函数。然后使用codegen
入口点函数来生成代码。生成单精度C / c++代码
updateMetrics
,指定名称参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。此表包含的参数
updateMetrics
。参数不包括在这个表是完全支持。金宝app论点 笔记和局限性 Mdl
使用notes和限制的模型对象,明白了
incrementalClassificationLinear
或incrementalRegressionLinear
。X
批次,观测的数量可以是一个变量的大小,但必须等于观测的数量
Y
。预测变量的数目必须相等
Mdl.NumPredictors
。X
必须单
或双
。
Y
批次,观测的数量可以是一个变量的大小,但必须等于观测的数量
X
。对于分类问题,所有的标签
Y
必须在Mdl.ClassNames
。Y
和Mdl.ClassNames
必须具有相同的数据类型。
以下限制:
如果您配置
Mdl
洗牌数据(Mdl.Shuffle
是真正的
,或Mdl.Solver
是“sgd”
或“asgd”
),updateMetrics
函数随机打乱每个传入批观测之前,适合批量模型。的顺序打乱观察MATLAB生成的顺序可能不匹配®。因此,如果你健康Mdl
之前更新的性能指标,指标计算在MATLAB计算生成的代码可能不相等。使用齐次所有浮点数据类型的输入参数和对象属性,具体地说,
单
或双
。
有关更多信息,请参见介绍代码生成。
版本历史
介绍了R2020b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。