主要内容

损失

关于数据批量学习的线性模型的丧失

描述

损失返回线性回归的配置增量学习模型的回归或分类损失(incrementalregressionlinear.对象)或线性二元分类(incrementallassificeLifear.对象)。

在数据流上测量模型性能并将结果存储在输出模型中,呼叫UpdateMetrics.updatemetricsandfit.

示例

L.=损失(MDL.X.y返回增量学习模型的损失MDL.使用批量预测器数据X.和相应的反应y

示例

L.=损失(MDL.X.y名称,价值使用由一个或多个名称-值对参数指定的附加选项。例如,您可以指定预测器数据矩阵的列与观测值对应,或者指定分类损失函数。

例子

崩溃

流数据上的增量模型的性能以三种方式测量:

  1. 累积指标衡量自增量学习开始以来的表现。

  2. 窗口度量度量指定观察窗口上的性能。每次模型处理指定的窗口时,度量都会更新。

  3. 损失函数仅度量指定一批数据的性能。

加载人工活动数据集。随机洗牌数据。

加载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个观察数据块执行以下操作:

  1. 调用UpdateMetrics.测量累积性能和观察窗口内的性能。用一个新的增量模型覆盖以前的增量模型,以跟踪性能指标。

  2. 调用损失来测量模型在传入块上的性能。

  3. 调用适合将模型适合传入的块。用拟合传入观察的新一个覆盖以前的增量模型。

  4. 存储所有性能指标,以了解它们在增量学习期间的发展方式。

%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('迭代'

图中包含一个坐标轴。轴包含4个对象的类型线,恒线。这些对象代表累积,窗口,损失。

在度量预热期间(红色线左侧的区域)期间,黄线表示每个传入块的分类错误。在度量预热期后,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)

图中包含一个坐标轴。轴包含4个对象的类型线,恒线。这些对象代表累积、窗口、块。

情节表明以下内容:

  • UpdateMetrics.仅在度量预热期后计算性能指标。

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

  • UpdateMetrics.处理500次观察后计算窗口指标

  • 因为MDL.被配置为从增量学习开始就预测观察结果,损失可以计算每个传入数据块的MAD。

输入参数

崩溃

增量学习模型,指定为一个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.必须是非空数组。

批量预测数据,用于计算丢失,指定为浮点矩阵N观察和Mdl。NumPredictors预测变量。价值'观察'名称-值对参数决定变量和观察值的方向。

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

注意

损失万博1manbetx仅支持浮点输入预测器数据。如果输入模型MDL.代表转换的传统培训的模型适合分类数据,使用戴维尔将每个分类变量转换为虚拟变量的数字矩阵,并连接所有虚拟变量矩阵和任何其他数字预测器。有关更多详细信息,请参阅虚拟变量

数据类型:|

用于计算损失的一批标签,指定为用于分类问题的类别、字符或字符串数组、逻辑或浮点向量,或字符向量的单元数组;或者是用于回归问题的浮点向量。

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

对于分类问题:

  • 损失万博1manbetx仅支持二进制分类。

  • Classnames.输入模型的属性MDL.为非空时,应用以下条件:

    • 如果y包含不是成员的标签mdl.classnames.损失发出错误。

    • 的数据类型ymdl.classnames.肯定是一样的。

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

名称值对参数

指定可选的逗号分离对名称,价值参数。的名字是参数名称和价值是相应的价值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:“ObservationsIn”、“列”、“重量”,W指定预测器矩阵的列对应于观察和向量W.包含要应用的观测权值。

损失函数,指定为逗号分隔对组成“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.取决于重量LossFun

更多关于

崩溃

分类损失

分类损失函数测量分类模型的预测不准确性。当您在许多模型之间比较相同类型的损耗时,较低的损耗表示更好的预测模型。

考虑以下场景。

  • L.是加权平均分类损失。

  • N是样本大小。

  • 二进制分类:

    • yj是被观察的类标签。软件将其编码为-1或1,表示负类或正类(或中第一类或第二类)Classnames.分别属性)。

    • F.X.j)为观察(行)的阳性分类评分j预测数据的X.

    • mj=yjF.X.j)为分类观察的分类评分j进入对应的课程yj.正值mj表明正确的分类,并没有为平均损失贡献。负值mj指出错误的分类,并对平均损失有很大的贡献。

  • 观察的重量jW.j

给定此场景,下表描述了支持的损失函数,可以使用万博1manbetx“LossFun”名称值对参数。

损失函数 价值LossFun 方程
二项异常 “binodeviance” L. = j = 1 N W. j 日志 { 1 + 经验值 [ 2 m j ] }
指数损失 “指数” L. = j = 1 N W. j 经验值 m j
十进制误分类率 “classiferror”

L. = j = 1 N W. j { y ^ j y j }

y ^ j 是与具有最大分数的类对应的类标签。{·}是指示函数。

铰链的损失 “铰链” L. = j = 1 N W. j 最大 { 0. 1 m j }
Logit损失 “logit” L. = j = 1 N W. j 日志 1 + 经验值 m j
二次损失 “二次” L. = j = 1 N W. j 1 m j 2

该数字将损耗功能与分数进行比较m一个观察。某些功能被归一化以通过点(0,1)。

不同损失函数分类损失的比较

回归损失

回归损失函数测量回归模型的预测不准确性。当您在许多模型之间比较相同类型的损耗时,较低的损耗表示更好的预测模型。

考虑以下场景。

  • L.是加权平均分类损失。

  • N是样本大小。

  • yj是观察到的观察响应j

  • F.X.j) =β0.+X.jβ是预测的观察值j预测数据的X.,在那里β0.是偏见和β是系数的向量。

  • 观察的重量jW.j

给定此场景,下表描述了支持的损失函数,可以使用万博1manbetx“LossFun”名称值对参数。

损失函数 价值LossFun 方程
ε不敏感损失 “epsiloninsensitive”

L. = 最大 [ 0. | y F. X. | ε ]

平均方形错误 “MSE”

L. = [ y F. X. ] 2

算法

崩溃

观察权重

对于分类问题,如果已知先前的概率分布(换句话说,先前分配不是经验),损失将观察权重标准化,以总和在相应类中的现有类概率。此操作意味着默认情况下观察权重是相应的先前类概率。

对于回归问题或先前的概率分布是经验的,软件将指定的观察权重标准化为每次调用时总和为1损失

扩展功能

在R2020B中介绍