批数据增量学习的线性模型损失
损失
返回线性回归的配置增量学习模型的回归或分类损失(incrementalRegressionLinear
对象)或线性二进制分类(incrementalClassificationLinear
对象)。
要测量数据流上的模型性能并将结果存储在输出模型中,调用updateMetrics
或updateMetricsAndFit
.
增量模型在流数据上的性能可以用三种方法来衡量:
累积指标衡量自增量学习开始以来的表现。
窗口指标测量指定的观察窗口上的性能。每次模型处理指定的窗口时都会更新指标。
的损失
函数仅度量指定一批数据的性能。
加载人工活动数据集。随机洗牌数据。
负载人类活动n = numel(actid);RNG(1);%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
关于数据集的详细信息,请输入描述
在命令行。
回答可以是五种类型之一:坐、站、走、跑或跳舞。通过识别被试是否在移动(actid
> 2)。
Y = Y > 2;
建立二元分类的增量线性支持向量机模型。配置它损失
通过指定类名、先验类分布(均匀)、任意系数和偏差值。指定1000个观察值的指标窗口大小。
p =大小(X, 2);β= randn (p, 1);偏见= randn (1);Mdl = incrementalClassificationLinear ('beta',β,“偏见”偏见,......“类名”,独特(Y),“之前”,'制服','metricswindowsize', 1000);
Mdl
是一个incrementalClassificationLinear
模型。它的所有属性都是只读的。不需要指定任意值,您可以采取以下任一操作来配置模型:
训练一个支持向量机模型使用fitcsvm
或FitClinear.
在数据的子集上(如果可用),然后将模型转换为增量学习者使用incrementallearner.
.
逐步适应Mdl
通过使用来数据适合
.
模拟数据流,并在50个观察的每个传入块上执行以下操作:
称呼updateMetrics
测量观察窗口内的累积性能和性能。用新的一个覆盖以前的增量模型来跟踪性能指标。
称呼损失
来测量模型在传入块上的性能。
称呼适合
使模型与传入的数据块相匹配。用一个适合传入观测的新模型覆盖先前的增量模型。
存储所有性能指标,以查看它们在增量学习过程中是如何发展的。
%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);ce = array2table (0 (nchunk, 3),'variablenames',[“累积”“窗口”“损失”]);%增量学习为n = 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。指标{“ClassificationError”,:};ce {j,“损失”} =损失(Mdl X (idx:), Y (idx));Mdl =适合(Mdl X (idx:), Y (idx));结束
Mdl
是一个incrementalClassificationLinear
模型对象在流中的所有数据上培训。在增量学习期间和模型预热后,updateMetrics
检查模型的性能对传入的观察,然后适合
函数使模型符合这个观察。损失
是不可知的指标预热期,因此它度量所有迭代的分类错误。
要了解培训期间演化的性能指标如何,请绘制它们。
图;情节(ce.Variables);xlim ([0 nchunk]);ylim (0.05 [0]) ylabel (分类错误的)xline(mdl.metricswarmupperiod / numobsperchunk,r -。);传奇(ce.Properties.VariableNames)包含(“迭代”)
在指标预热期间(红线左边的区域),黄线表示每个传入数据块上的分类错误。在指标热身期之后,Mdl
跟踪累积指标和窗口指标。累积损失和批损失收敛为适合
函数适合传入数据的增量模型。
拟合一个增量学习模型对流数据回归,并计算传入数据批的平均绝对偏差(MAD)。
加载机器人手臂数据集。获得样本量n
以及预测变量的数量p
.
负载robotarmn =元素个数(ytrain);p =大小(Xtrain 2);
关于数据集的详细信息,请输入描述
在命令行。
为回归创建一个增量线性模型。模型配置如下:
指定度量预热时间为1000个观察。
指定一个指标窗口大小为500个观察值。
跟踪平均绝对偏差(MAD)以测量模型的性能。创建一个匿名函数,测量每个新观察的绝对错误。创建包含名称的结构数组MeanAbsoluteError
及其相应的功能。
配置模型以通过指定所有回归系数和偏差为0来预测响应。
Maefcn = @(z,zfit,w)(abs(z - zfit));maemetric = struct(“MeanAbsoluteError”, maefcn);Mdl = incrementalRegressionLinear (“MetricsWarmupPeriod”, 1000,'metricswindowsize'500,......“指标”,raemetric,'beta',零(p,1),“偏见”0,'估计period', 0)
Mdl = incrementalRegressionLinear IsWarm: 0 Metrics: [2x2 table] ResponseTransform: 'none' Beta: [32x1 double] Bias: 0 Learner: 'svm'属性,方法
Mdl
是一个incrementalRegressionLinear
为增量学习配置的模型对象。
执行增量学习。在每一次迭代:
通过处理50个观察数据块来模拟数据流。
称呼updateMetrics
计算传入数据块的累积和窗口指标。用一个适合覆盖先前指标的新模型覆盖先前的增量模型。
称呼损失
来计算传入数据块的MAD。然而累积和窗口度量要求自定义损失返回每个观测的损失,损失
需要整块的损失。计算绝对偏差的平均值。
称呼适合
将增量模型拟合到传入数据块。
存储累积、窗口和块指标,以查看它们在增量学习期间是如何发展的。
%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);美= array2table (0 (nchunk, 3),'variablenames',[“累积”“窗口”“块”]);%增量式拟合为n = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;Mdl = updateMetrics (Mdl Xtrain (idx:), ytrain (idx));美{j, 1:2} = Mdl。指标{“MeanAbsoluteError”,:};美{j 3} =损失(Mdl, Xtrain (idx:), ytrain (idx),'lockfun'@ (x, y, w)意味着(maefcn (x, y, w)));Mdl =适合(Mdl Xtrain (idx:), ytrain (idx));结束
IncrementalMdl
是一个incrementalRegressionLinear
模型对象在流中的所有数据上培训。在增量学习期间和模型预热后,updateMetrics
检查模型对传入观察的性能,以及适合
函数使模型符合这个观察。
绘制性能指标,看看它们在增量学习过程中是如何发展的。
图;h =情节(mae.Variables);ylabel (的平均绝对偏差)xline(mdl.metricswarmupperiod / numobsperchunk,r -。);包含(“迭代”传奇(h, mae.Properties.VariableNames)
这个情节暗示了以下内容:
updateMetrics
仅在指标预热时间后计算性能指标。
updateMetrics
在每次迭代期间计算累积度量。
updateMetrics
在处理500个观测值后计算窗口度量值
因为Mdl
被配置为从增量学习开始就预测观察结果,损失
可以计算每个传入数据块的MAD。
Mdl
- - - - - -增量学习模型incrementalClassificationLinear
模型对象|incrementalRegressionLinear
模型对象增量学习模型,指定为incrementalClassificationLinear
或incrementalRegressionLinear
模型对象。您可以创建Mdl
直接或通过使用支持的传统培训的机器学习模型转换金宝appincrementallearner.
函数。有关更多详细信息,请参阅相应的参考页面。
您必须配置Mdl
通过一组观测来计算它的损失。
如果Mdl
是一个转换的传统训练的模型,您可以在没有任何修改的情况下计算其损失。
除此以外,Mdl
必须满足以下条件,您可以直接指定或通过拟合Mdl
使用的数据适合
或updateMetricsAndFit
.
如果Mdl
是一个incrementalRegressionLinear
模型,其模型系数Mdl。β
和偏见Mdl。偏见
必须是非空数组。
如果Mdl
是一个incrementalClassificationLinear
模型,其模型系数Mdl。β
和偏见Mdl。偏见
必须是非空数组,类名Mdl。ClassNames
必须包含两个类,和先前的类分布Mdl。之前
必须包含已知值。
无论对象类型如何,如果您配置模型,使函数标准化预测器数据,预测器意味着Mdl。μ
和标准偏差Mdl。年代igma
必须是非空数组。
X
- - - - - -预测数据批用于计算损失的一批预测数据,指定为的浮点矩阵n观察和Mdl。NumPredictors
预测变量。的价值“ObservationsIn”
名称-值对参数决定变量和观察值的方向。
观察标签的长度Y
和观察人数X
必须是相等的;Y (
是观察的标签j(行或列)在j
)X
.
请注意
损失
金宝app仅支持浮点输入预测器数据。如果输入模型Mdl
表示转换的,传统训练的模型适合分类数据,使用dummyvar
将每个分类变量转换为虚拟变量的数字矩阵,并将所有虚拟变量矩阵和任何其他数字预测器连接起来。有关详细信息,请参见虚拟变量.
数据类型:单身的
|双
Y
- - - - - -批量标签指定可选的逗号分隔的对名称,值
参数。姓名
参数名和价值
为对应值。姓名
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“ObservationsIn”、“列”、“重量”,W
指定预测器矩阵的列对应于观测值和向量W
包含要应用的观测权值。
LossFun
- - - - - -损失函数损失函数,指定为逗号分隔对组成'lockfun'
和内置丢失函数名称或功能句柄。
分类问题:下表列出了可用损耗功能时Mdl
是一个incrementalClassificationLinear
模型。使用其对应的字符向量或字符串标量指定一个。
姓名 | 描述 |
---|---|
“binodeviance” |
二项式偏差 |
“classiferror” (默认) |
十进制误分类率 |
“指数” |
指数损失 |
“枢纽” |
铰链的损失 |
“分对数” |
物流损失 |
“二次” |
二次损失 |
有关详细信息,请参见分类损失.
Logistic回归学习者将后续概率作为分类分数退回,但SVM学习者没有(见预测
).
要指定自定义的损失函数,请使用函数句柄表示法。函数必须是这样的形式:
lossval =lossfcn(C S W)
输出参数lossval
是一个n- 1个浮点矢量,在哪里lossval (
是分类的观察丧失j
)
.j
指定函数名(
).lossfcn
C
是一个n-2-2逻辑矩阵,具有指示相应观察所属的类的行。列顺序对应于类顺序一会
财产。创建C
通过设置C (
=p
,问
)1
,如果观察
是在课堂上p
,用于指定数据中的每一个观测。设置行中的其他元素问
到p
0
.
年代
是一个n预测分类分数的-by-2数字矩阵。年代
类似于分数
的输出预测
,其中行对应于数据中的观察值,列顺序对应于一会
财产。s(
是观察的分类评分吗p
,问
)
被分类p
.问
W
是一个n-乘1数值向量的观测权值。
回归问题:下表列出了可用损耗功能时Mdl
是一个incrementalRegressionLinear
模型。使用其对应的字符向量或字符串标量指定一个。
姓名 | 描述 | 学习者支持度规金宝app |
---|---|---|
“epsiloninsensitive” |
ε不敏感损失 | 'svm' |
“mse” (默认) |
加权均方误差 | 'svm' 和“leastsquares” |
有关详细信息,请参见回归的损失.
要指定自定义的损失函数,请使用函数句柄表示法。函数必须是这样的形式:
lossval =lossfcn(Y, YFit W)
输出参数lossval
是浮点标量。
指定函数名(
).lossfcn
Y
是一个长度n观测响应的数值向量。
YFit
是一个长度n相应预测响应的数字矢量。
W
是一个n-乘1数值向量的观测权值。
例子:'lockfun',“mse”
例子:“LossFun”@
lossfcn
数据类型:字符
|字符串
|function_handle
观察
- - - - - -预测数据观察维度“行”
(默认)|“列”
预测仪数据观察维度,指定为逗号分隔的配对组成“ObservationsIn”
和“列”
或“行”
.
数据类型:字符
|字符串
权重
- - - - - -观测权重批批观测权值,指定为逗号分隔对组成“重量”
和一个正的浮点向量。损失
将输入数据中的观测值与输入数据中的相应值进行权衡权重
.的大小权重
必须等于n,这是输入数据中的观察数。
默认情况下,权重
是(
.n
, 1)
有关详细信息,请参见观察权重.
数据类型:双
|单身的
分类损失功能测量分类模型的预测不准确性。当你在许多模型中比较同一类型的损失时,损失越低表明预测模型越好。
考虑以下场景。
l为加权平均分类损失。
n为样本量。
对于二进制分类:
yj是观察到的类标签。软件将其代码为-1或1,表示负或正类(或第一个或第二类)一会
分别属性)。
f(Xj)为观察(行)的阳性分类评分j预测的数据X.
米j=yjf(Xj)为分类观察的分类评分j对应的类yj.积极的价值观米j表明正确的分类,对平均损失贡献不大。负的米j表示不正确的分类,并对平均损失显着贡献。
观测权重j是wj.
给定此场景,下表描述了支持的损失函数,可以使用金宝app'lockfun'
名称-值对的论点。
损失函数 | 的价值LossFun |
方程 |
---|---|---|
二项式偏差 | “binodeviance” |
|
指数损失 | “指数” |
|
十进制误分类率 | “classiferror” |
为得分最大的类对应的类标签。我{·}是指示函数。 |
铰链的损失 | “枢纽” |
|
分对数损失 | “分对数” |
|
二次损失 | “二次” |
这个数字比较了分数上的损失函数米一个观察。一些函数被归一化通过点(0,1)。
回归的损失函数测量回归模型的预测不准确性。当你在许多模型中比较同一类型的损失时,损失越低表明预测模型越好。
考虑以下场景。
l为加权平均分类损失。
n为样本量。
yj观察到的是观察的反应吗j.
f(Xj)=β0+xjβ预测值是观测值吗j预测的数据X,在那里β0是偏见和β是系数的向量。
观测权重j是wj.
给定此场景,下表描述了支持的损失函数,可以使用金宝app'lockfun'
名称-值对的论点。
损失函数 | 的价值LossFun |
方程 |
---|---|---|
ε不敏感损失 | “epsiloninsensitive” |
|
均方误差 | “mse” |
|
对于分类问题,如果先验类别概率分布已知(换句话说,先验分布不是经验的),损失
将观察权值归一化到各自类中的先验类概率。这个操作意味着,默认情况下,观察权值是各自的先验类概率。
对于回归问题或如果先验类概率分布是经验的,该软件将指定的观察权值归一化,使其每次调用都为1损失
.
使用注意事项及限制:
使用saveLearnerForCoder
,loadlearnerforcoder.
,Codegen.
(MATLAB编码器)生成的代码损失
函数。通过使用保存一个训练过的模型saveLearnerForCoder
.定义一个入口点函数,通过使用loadlearnerforcoder.
并调用损失
函数。然后使用Codegen.
为入口点函数生成代码。
为。生成单精度C/ c++代码损失
,指定名称-值参数'dataType','single'
当你呼叫loadlearnerforcoder.
函数。
此表包含有关参数的注释损失
.不包含此表中未包含的参数完全支持。金宝app
论点 | 笔记和局限性 |
---|---|
|
有关模型对象的使用说明和限制,请参见 |
|
|
|
|
|
指定的函数不能是匿名函数。 |
如果您配置Mdl
打乱数据(Mdl。年代huffle
是真正的
, 或者Mdl。年代olver
是“sgd”
或“asgd”
),损失
函数在将模型拟合到批次之前随机随机洗牌。随机观察的顺序可能与Matlab生成的顺序不符®.因此,如果你适合Mdl
在计算损失之前,在MATLAB中计算的损失和由生成的代码计算的损失可能不相等。
对所有浮点输入参数和对象属性使用同构数据类型单身的
或双
.
有关更多信息,请参见代码生成简介.
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。