关于数据批量学习的线性模型的丧失
损失
返回线性回归的配置增量学习模型的回归或分类损失(incrementalregressionlinear.
对象)或线性二元分类(incrementallassificeLifear.
对象)。
在数据流上测量模型性能并将结果存储在输出模型中,呼叫UpdateMetrics.
或updatemetricsandfit.
.
流数据上的增量模型的性能以三种方式测量:
累积指标衡量自增量学习开始以来的表现。
窗口度量度量指定观察窗口上的性能。每次模型处理指定的窗口时,度量都会更新。
当损失
函数仅度量指定一批数据的性能。
加载人工活动数据集。随机洗牌数据。
加载humanactivityn =元素个数(actid);rng (1);%的再现性idx = randsample(n,n);x = feat(idx,:);y = actid(idx);
有关数据集的详细信息,请输入描述
在命令行。
回复可以是五个课程之一:坐着,站立,走路,跑步或跳舞。通过识别主题是否正在移动(actid.
> 2)。
Y = Y> 2;
为二进制分类创建增量线性SVM模型。配置它损失
通过指定类名,先前类分发(统一)和任意系数和偏置值。指定度量窗口大小为1000个观察。
p =大小(X, 2);β= randn (p, 1);偏见= randn (1);Mdl = incrementalClassificationLinear (“β”,beta,“偏见”,偏见,...'classnames'独特的(Y),“之前”那“统一”那“MetricsWindowSize”,1000);
MDL.
是一个incrementallassificeLifear.
模型。它的所有属性都是只读的。不需要指定任意值,您可以采取以下任一操作来配置模型:
训练一个支持向量机模型使用fitcsvm.
或fitclinear
在数据的子集(如果可用)中,然后通过使用将模型转换为增量学习者incrementalLearner
.
渐进合身MDL.
通过使用适合
.
模拟一个数据流,并对每个传入的50个观察数据块执行以下操作:
调用UpdateMetrics.
测量累积性能和观察窗口内的性能。用一个新的增量模型覆盖以前的增量模型,以跟踪性能指标。
调用损失
来测量模型在传入块上的性能。
调用适合
将模型适合传入的块。用拟合传入观察的新一个覆盖以前的增量模型。
存储所有性能指标,以了解它们在增量学习期间的发展方式。
%preallocation.numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);CE = Array2table(零(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.metrics {“ClassificationError”,:};CE {J,“损失”} =损失(mdl,x(idx,:),y(idx));mdl = fit(mdl,x(idx,:),y(idx));结束
MDL.
是一个incrementallassificeLifear.
模型对象对流中的所有数据进行训练。在增量学习过程中以及模型热身后,UpdateMetrics.
检查模型对传入观察的性能,然后检查适合
功能适合该观察的模型。损失
是不可知的指标预热期,因此它度量所有迭代的分类错误。
要了解在培训期间绩效指标是如何发展的,请将它们绘制出来。
图;情节(CE.variables);XLIM([0 nchunk]);ylim([0 0.05])ylabel('分类错误')参照线(Mdl。MetricsWarmupPeriod / numObsPerChunk,'r-'。);传奇(ce.properties.variablenames)xlabel('迭代')
在度量预热期间(红色线左侧的区域)期间,黄线表示每个传入块的分类错误。在度量预热期后,MDL.
跟踪累积和窗口指标。累积和批量损失会聚适合
函数使增量模型适合传入数据。
适用于流向流数据的回归的增量学习模型,并计算进入数据批量上的平均绝对偏差(MAD)。
加载机器人臂数据集。获取样本大小N
和预测变量的数量P.
.
加载Robotarm.n = numel(ytrain);p =尺寸(XTrain,2);
有关数据集的详细信息,请输入描述
在命令行。
为回归创建一个增量线性模型。模型配置如下:
指定1000个观察值的指标预热周期。
指定一个指标窗口大小为500个观察值。
跟踪平均绝对偏差(MAD)来衡量模型的性能。创建一个匿名函数来测量每个新观测的绝对误差。创建包含名称的结构数组意思是ab
及其相应的功能。
通过指定所有回归系数和偏差为0,配置模型以预测响应。
Maefcn = @(z,zfit,w)(abs(z - zfit));maemetric =结构(“意思是贝蒂尔罗”, maefcn);Mdl = incrementalRegressionLinear (“MetricsWarmupPeriod”, 1000,“MetricsWindowSize”, 500,...'度量标准'maemetric,“β”0 (p - 1),“偏见”0,“EstimationPeriod”, 0)
Mdl = incrementalRegressionLinear IsWarm: 0 Metrics: [2x2 table] ResponseTransform: 'none' Beta: [32x1 double] Bias: 0 Learner: 'svm'属性,方法
MDL.
是一个incrementalregressionlinear.
为增量学习配置的模型对象。
执行增量学习。在每次迭代:
通过处理50个观察的块来模拟数据流。
调用UpdateMetrics.
计算数据传入块的累积和窗口指标。覆盖以前的一个增量模型,用一个装备覆盖以前的度量标准。
调用损失
来计算传入数据块的MAD。然而累积和窗口度量要求自定义损失返回每个观测的损失,损失
需要整个块的损失。计算绝对偏差的平均值。
调用适合
将增量模型拟合到收入的数据块。
存储累积,窗口和块称指标,以了解它们在增量学习期间的发展方式。
%preallocation.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));mae {j,1:2} = mdl.metrics {“意思是贝蒂尔罗”,:};美{j 3} =损失(Mdl, Xtrain (idx:), ytrain (idx),“LossFun”@ (x, y, w)意味着(maefcn (x, y, w)));Mdl =适合(Mdl Xtrain (idx:), ytrain (idx));结束
increntmentalmdl.
是一个incrementalregressionlinear.
模型对象对流中的所有数据进行训练。在增量学习过程中以及模型热身后,UpdateMetrics.
检查模型的性能在传入的观察,和适合
功能适合该观察的模型。
绘制性能指标,看看它们在增量学习期间的进化。
图;h = plot(mae.variables);ylabel('意味着绝对偏差')参照线(Mdl。MetricsWarmupPeriod / numObsPerChunk,'r-'。);Xlabel('迭代'传奇(h, mae.Properties.VariableNames)
情节表明以下内容:
UpdateMetrics.
仅在度量预热期后计算性能指标。
UpdateMetrics.
在每次迭代期间计算累积度量。
UpdateMetrics.
处理500次观察后计算窗口指标
因为MDL.
被配置为从增量学习开始就预测观察结果,损失
可以计算每个传入数据块的MAD。
MDL.
-增量学习模型incrementallassificeLifear.
模型对象|incrementalregressionlinear.
模型对象增量学习模型,指定为一个incrementallassificeLifear.
或incrementalregressionlinear.
模型对象。您可以创建MDL.
直接或转换支持的,传统训练的机器学习模型使用万博1manbetxincrementalLearner
函数。详细信息请参见对应的参考页面。
您必须配置MDL.
通过一组观测来计算它的损失。
如果MDL.
是经过转换的、传统训练的模型,您可以不作任何修改就计算其损失。
否则,MDL.
必须满足以下条件,您可以直接指定或通过拟合MDL.
使用数据适合
或updatemetricsandfit.
.
如果MDL.
是一个incrementalregressionlinear.
模型,其模型系数mdl.beta.
和偏见mdl.bias.
必须是非空数组。
如果MDL.
是一个incrementallassificeLifear.
模型,其模型系数mdl.beta.
和偏见mdl.bias.
必须是非空的数组,班级名称mdl.classnames.
必须包含两个类,和先前的类分布mdl.prior.
必须包含已知值。
无论对象类型如何,如果您配置模型,使函数标准化预测器数据,预测器意味着mdl.mu.
和标准偏差mdl.sigma.
必须是非空数组。
y
-批标签指定可选的逗号分离对名称,价值
参数。的名字
是参数名称和价值
是相应的价值。的名字
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
“ObservationsIn”、“列”、“重量”,W
指定预测器矩阵的列对应于观察和向量W.
包含要应用的观测权值。
“LossFun”
-损失函数损失函数,指定为逗号分隔对组成“LossFun”
以及内置的损失函数名或函数句柄。
分类问题:下表列出了当MDL.
是一个incrementallassificeLifear.
模型。使用其对应的字符向量或字符串标量指定一个。
的名字 | 描述 |
---|---|
“binodeviance” |
二项异常 |
“classiferror” (默认) |
十进制误分类率 |
“指数” |
指数损失 |
“铰链” |
铰链的损失 |
“logit” |
物流损失 |
“二次” |
二次损失 |
有关更多详细信息,请参阅分类损失.
Logistic回归学习者返回后验概率作为分类分数,但支持向量机学习者不返回(见预测
)。
要指定自定义丢失功能,请使用函数句柄表示法。该函数必须具有此表单:
损失=损失氟烃(C,S,W)
输出参数损失
是一个N-by-1浮点向量lossval (
分类是观察的损失吗j
)
.j
您指定函数名称(
)。损失氟烃
C.
是一个N-乘2的逻辑矩阵,其中的行表示相应的观测所属的类。中的列顺序对应于类的顺序Classnames.
财产。创建C.
通过设置c(
=P.
那问:
)1
,如果观察
是在课堂上P.
,对于指定数据中的每个观察。在行中设置其他元素问:
来P.
0.
.
S.
是一个N预测分类分数的-by-2数字矩阵。S.
类似于分
输出预测
,其中行对应于数据中的观察,列顺序对应于类顺序Classnames.
财产。S (
是观察的分类评分吗P.
那问:
)
被分类P.
.问:
W.
是一个N- 1个数字矢量重量的数字矢量。
回归问题:下表列出了当MDL.
是一个incrementalregressionlinear.
模型。使用其对应的字符向量或字符串标量指定一个。
的名字 | 描述 | 学习者支持指标万博1manbetx |
---|---|---|
“epsiloninsensitive” |
ε不敏感损失 | “支持向量机” |
“MSE” (默认) |
加权均方误差 | “支持向量机” 和'最不答案' |
有关更多详细信息,请参阅回归损失.
要指定自定义丢失功能,请使用函数句柄表示法。该函数必须具有此表单:
损失=损失氟烃(y,Yfit,W)
输出参数损失
是一个浮点标量。
您指定函数名称(
)。损失氟烃
y
是一个长度N观察到的反应的数字矢量。
YFIT.
是一个长度N对应预测响应的数值向量。
W.
是一个N- 1个数字矢量重量的数字矢量。
例子:“LossFun”、“mse”
例子:“LossFun”@
损失氟烃
数据类型:字符
|字符串
|function_handle.
'观察'
-预测数据观测维数'行'
(默认)|'列'
预测器数据观测维数,由指定的逗号分隔对组成'观察'
和'列'
或'行'
.
数据类型:字符
|字符串
'重量'
-批次观察权重观察权重批次,指定为逗号分隔对'重量'
以及正值的浮点载体。损失
使用相应的值称重输入数据中的观察重量
.大小重量
必须等于N,即输入数据中的观测次数。
默认情况下,重量
是那些(
.N
, 1)
有关更多详细信息,请参阅观察权重.
数据类型:双
|单
分类损失函数测量分类模型的预测不准确性。当您在许多模型之间比较相同类型的损耗时,较低的损耗表示更好的预测模型。
考虑以下场景。
L.是加权平均分类损失。
N是样本大小。
二进制分类:
yj是被观察的类标签。软件将其编码为-1或1,表示负类或正类(或中第一类或第二类)Classnames.
分别属性)。
F.(X.j)为观察(行)的阳性分类评分j预测数据的X..
mj=yjF.(X.j)为分类观察的分类评分j进入对应的课程yj.正值mj表明正确的分类,并没有为平均损失贡献。负值mj指出错误的分类,并对平均损失有很大的贡献。
观察的重量j是W.j.
给定此场景,下表描述了支持的损失函数,可以使用万博1manbetx“LossFun”
名称值对参数。
损失函数 | 价值LossFun |
方程 |
---|---|---|
二项异常 | “binodeviance” |
|
指数损失 | “指数” |
|
十进制误分类率 | “classiferror” |
是与具有最大分数的类对应的类标签。我{·}是指示函数。 |
铰链的损失 | “铰链” |
|
Logit损失 | “logit” |
|
二次损失 | “二次” |
该数字将损耗功能与分数进行比较m一个观察。某些功能被归一化以通过点(0,1)。
回归损失函数测量回归模型的预测不准确性。当您在许多模型之间比较相同类型的损耗时,较低的损耗表示更好的预测模型。
考虑以下场景。
L.是加权平均分类损失。
N是样本大小。
yj是观察到的观察响应j.
F.(X.j) =β0.+X.jβ是预测的观察值j预测数据的X.,在那里β0.是偏见和β是系数的向量。
观察的重量j是W.j.
给定此场景,下表描述了支持的损失函数,可以使用万博1manbetx“LossFun”
名称值对参数。
损失函数 | 价值LossFun |
方程 |
---|---|---|
ε不敏感损失 | “epsiloninsensitive” |
|
平均方形错误 | “MSE” |
|
对于分类问题,如果已知先前的概率分布(换句话说,先前分配不是经验),损失
将观察权重标准化,以总和在相应类中的现有类概率。此操作意味着默认情况下观察权重是相应的先前类概率。
对于回归问题或先前的概率分布是经验的,软件将指定的观察权重标准化为每次调用时总和为1损失
.
使用注意事项及限制:
使用saveLearnerForCoder
那loadLearnerForCoder
,和codegen
(MATLAB编码器)为此生成代码损失
函数。通过使用保存一个训练过的模型saveLearnerForCoder
.定义通过使用加载保存的模型的入口点函数loadLearnerForCoder
并调用损失
函数。然后使用codegen
为入口点函数生成代码。
要为丢失生成单精度C / C ++代码,请指定名称值参数“数据类型”、“单”
当你打电话的时候loadLearnerForCoder
函数。
这个表格包含关于的参数的注释损失
.表中未包含的参数完全支持。万博1manbetx
争论 | 注意和局限性 |
---|---|
|
对于模型对象的使用说明和限制,请参阅 |
|
|
|
|
|
指定的函数不能是匿名功能。 |
如果您配置MDL.
播放数据(mdl.shffle.
是真实
,或Mdl。S.olver
是'SGD'
或'ASGD'
),损失
函数在将模型拟合到这批之前,将每批传入的观测数据随机打乱。打乱的观测结果的顺序可能与MATLAB生成的顺序不匹配®.因此,如果你适合MDL.
在计算丢失之前,MATLAB中计算的损失和由生成的代码计算的丢失可能不相等。
为所有浮点输入参数和对象属性使用同质数据类型,具体而言单
或双
.
有关更多信息,请参见代码生成简介.
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。