主要内容

损失

失去对批数据线性增量学习模型

自从R2020b

描述

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

在数据流测量模型的性能,并将结果存储在输出模型,调用updateMetricsupdateMetricsAndFit

例子

l=损失(Mdl,X,Y)返回损失增量学习模型Mdl使用预测数据的批处理X和相应的反应Y

例子

l=损失(Mdl,X,Y,名称,值)使用附加选项指定一个或多个参数名称-值对。例如,您可以指定预测数据矩阵的列对应于观测,或者指定分类损失函数。

例子

全部折叠

增量模型的性能测量流数据在三个方面:

  1. 累积指标测量性能自增量学习的开始。

  2. 窗口指标测量观测的性能在一个指定的窗口。指标每次更新模型处理指定的窗口。

  3. 损失函数指定批措施上的性能数据。

载入人类活动数据集。随机洗牌数据。

负载humanactivityn =元素个数(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 (“β”,β,“偏见”偏见,“类名”独特的(Y),“之前”,“统一”,“MetricsWindowSize”,1000);

Mdl是一个incrementalClassificationLinear模型。所有的属性是只读的。不是指定任意值,您可以采取的这些行动配置模型:

  • SVM模型使用训练fitcsvmfitclinear在数据的一个子集(如果有的话),然后将模型转换为一个增量学习者通过使用incrementalLearner

  • 逐步适应Mdl通过使用数据适合

模拟数据流,并执行以下操作每个传入50块的观察:

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

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

  3. 调用适合以适应模型的一部分。覆盖前面的增量式模型与一个新安装的观察。

  4. 存储所有性能指标增量学习期间看到他们如何演变。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);ce = array2table (0 (nchunk, 3),“VariableNames”,(“累积”“窗口”“损失”]);%增量学习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”,:};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 (分类错误的)参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,r -。传奇(ce.Properties.VariableNames)包含(“迭代”)

图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel分类误差包含4线类型的对象,constantline。这些对象代表累积,窗口,损失。

黄线代表对每个传入的数据分类错误。度量预热期后,Mdl跟踪的累积和窗口指标。收敛的累积和批处理损失适合功能符合输入数据的增量式模型。

增量学习模型回归适合流媒体数据,并计算平均绝对偏差批次(疯狂)传入的数据。

加载机械臂数据集,获得样本大小n和预测变量的数量p

负载robotarmn =元素个数(ytrain);p =大小(Xtrain 2);

细节的数据集,输入描述在命令行中。

创建一个增量的线性回归模型。配置模型如下:

  • 指定一个度量预热期1000年的观察。

  • 指定一个指标500观察的窗口大小。

  • 跟踪平均绝对偏差(疯狂)测量模型的性能。创建一个匿名函数,每个新观测的绝对误差的措施。创建一个结构数组包含这个名字MeanAbsoluteError和其相应的功能。

  • 配置模型来预测反应通过指定,所有的回归系数和偏差都是0。

maefcn = @ (z, zfit, w) (abs (z - zfit));maemetric =结构(“MeanAbsoluteError”,maefcn);Mdl = incrementalRegressionLinear (“MetricsWarmupPeriod”,1000,“MetricsWindowSize”,500,“指标”maemetric,“β”0 (p - 1),“偏见”0,“EstimationPeriod”,0)
Mdl = incrementalRegressionLinear IsWarm: 0指标:[2 x2表]ResponseTransform:“没有一个”测试:[32 x1双]偏见:0学习者:“支持向量机”属性,方法

Mdl是一个incrementalRegressionLinear模型对象配置为增量学习。

执行增量学习。在每一次迭代:

  • 模拟数据流处理一块50的观察。

  • 调用updateMetrics计算累积和窗口对传入的数据指标。覆盖前面的增量式模型与一个新的安装覆盖前面的指标。

  • 调用损失计算上的疯狂传入的数据块。而累积和窗口指标要求自定义返回每个观测的损失,损失损失需要整块上的损失。计算平均绝对偏差的。

  • 调用适合适合增量模型传入的数据块。

  • 商店的累积、窗口和块指标增量学习期间看到他们如何演变。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);美= array2table (0 (nchunk, 3),“VariableNames”,(“累积”“窗口”“块”]);%增量式拟合j = 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.Metrics {“MeanAbsoluteError”,:};美{j 3} =损失(Mdl, Xtrain (idx:), ytrain (idx),“LossFun”@ (x, y, w)意味着(maefcn (x, y, w)));Mdl =适合(Mdl Xtrain (idx:), ytrain (idx));结束

Mdl是一个incrementalRegressionLinear模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetrics检查模型的性能的观察,和适合功能符合观测模型。

绘制性能指标增量学习期间看到他们是如何进化的。

图h =情节(mae.Variables);xlim ([0 nchunk]) ylabel (的平均绝对偏差)参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,r -。)包含(“迭代”传奇(h, mae.Properties.VariableNames)

图包含一个坐标轴对象。坐标轴对象包含迭代,ylabel平均绝对偏差包含4线类型的对象,constantline。这些对象代表累积,窗口,块。

情节建议如下:

  • updateMetrics计算后的性能指标度量预热期。

  • updateMetrics在每一次迭代计算累积度量。

  • updateMetrics计算指标500年处理后观察的窗口

  • 因为Mdl被配置为预测观察从增量学习的开始,损失可以计算每个传入的数据块的疯狂。

输入参数

全部折叠

增量学习模型,指定为一个incrementalClassificationLinearincrementalRegressionLinear模型对象。您可以创建Mdl直接或通过转换支持,传统上使用训练有素的机器学习模型金宝appincrementalLearner函数。更多细节,请参阅相应的引用页面。

您必须配置Mdl计算其损失一批观察。

  • 如果Mdl是一个转变,传统的训练模式,可以计算其损失没有任何修改。

  • 否则,Mdl必须满足以下条件,您可以指定直接或通过拟合Mdl使用的数据适合updateMetricsAndFit

    • 如果Mdl是一个incrementalRegressionLinear模型,其模型系数Mdl.Beta和偏见Mdl.Bias必须非空的数组。

    • 如果Mdl是一个incrementalClassificationLinear模型,其模型系数Mdl.Beta和偏见Mdl.Bias类名必须非空的数组Mdl.ClassNames之前必须包含两个类,类分布呢Mdl.Prior必须包含已知值。

    • 不管对象类型,如果您配置模型函数标准化预测数据,预测手段Mdl.Mu和标准偏差Mdl.Sigma必须非空的数组。

批预测数据来计算损失,指定为一个浮点矩阵n观察和Mdl.NumPredictors预测变量。的值ObservationsIn名称-值参数确定变量和观测的方向。默认的ObservationsIn值是“行”,这表明观察预测数据是面向的行X

观察标签的长度Y和观察的数量X必须是相等的;Y (j)观察的标签吗j(行或列)X

请注意

损失金宝app只支持浮点输入预测数据。如果你的输入数据包括分类数据,您必须准备一个编码版本的分类数据。使用dummyvar每个分类变量转换为一个数字矩阵的虚变量。然后,连接所有哑变量矩阵和任何其他数值预测。更多细节,请参阅虚拟变量

数据类型:|

批反应(标签)来计算损失,分类,指定字符,或字符串数组,逻辑或浮点向量,或单元阵列的特征向量分类问题;或一个浮点向量回归问题。

观察标签的长度Y和观察的数量X必须是相等的;Y (j)观察的标签吗j(行或列)X

对于分类问题:

  • 损失金宝app只支持二进制分类。

  • 如果Y包含一个标签,它不是一个成员Mdl.ClassNames,损失一个错误的问题。

  • 的数据类型YMdl.ClassNames必须相同。

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

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

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

损失函数,指定为逗号分隔组成的“LossFun”和一个内置的损失函数名或函数句柄。

  • 分类问题:下表列出了可用的损失函数时Mdl是一个incrementalClassificationLinear模型。指定一个使用其相应的特征向量或字符串标量。

    的名字 描述
    “binodeviance” 二项异常
    “classiferror”(默认) 误分类率小数
    “指数” 指数损失
    “枢纽” 铰链的损失
    “分对数” 物流损失
    “二次” 二次损失

    更多细节,请参阅分类损失

    逻辑回归学生返回后验概率作为分类的分数,但SVM学习者不(见预测)。

    指定一个自定义的损失函数,利用函数处理符号。函数必须有这种形式:

    lossval =lossfcn(C S W)

    • 输出参数lossval是一个n1浮点向量,lossval (j)分类损失的观察吗j

    • 你指定函数名(lossfcn)。

    • C是一个n2逻辑矩阵行指示相应的观察所属的类。列顺序对应于类秩序一会财产。创建C通过设置C (p,)=1,如果观察p是在课堂上指定的数据,对于每一个观察。设置行中的其他元素p0

    • 年代是一个n2数值矩阵的预测分类的分数。年代类似于分数的输出预测,行对应于观测数据和列顺序对应于类秩序一会财产。S (p,)分类的观察吗p在课堂上被分类

    • W是一个n1数字的观察向量权重。

  • 回归问题:下表列出了可用的损失函数时Mdl是一个incrementalRegressionLinear模型。指定一个使用其相应的特征向量或字符串标量。

    的名字 描述 学习者支持度规金宝app
    “epsiloninsensitive” ε不敏感损失 “支持向量机”
    “mse”(默认) 加权均方误差 “支持向量机”“leastsquares”

    更多细节,请参阅回归的损失

    指定一个自定义的损失函数,利用函数处理符号。函数必须有这种形式:

    lossval =lossfcn(Y, YFit W)

    • 输出参数lossval是一个浮点数。

    • 你指定函数名(lossfcn)。

    • Y是一个长度n数字矢量观察到的反应。

    • YFit是一个长度n数字矢量预测相应的反应。

    • W是一个n1数字的观察向量权重。

例子:“LossFun”、“mse”

例子:“LossFun”@lossfcn

数据类型:字符|字符串|function_handle

预测数据观察维度,指定为逗号分隔组成的“ObservationsIn”“列”“行”

数据类型:字符|字符串

批观察体重、指定为逗号分隔组成的“重量”和一个浮点矢量的积极的价值观。损失重的观察输入数据与相应的值权重。的大小权重必须等于n,这是观察输入数据的数量。

默认情况下,权重(n,1)

更多细节,请参阅观察权重

数据类型:|

输出参数

全部折叠

分类或回归损失,作为一个数字返回标量。的解释l取决于权重LossFun

更多关于

全部折叠

分类损失

分类损失函数度量分类模型的预测误差。当你在考虑对比许多相同类型的损失模型,较低的损失表示一个更好的预测模型。

考虑以下场景。

  • l是加权平均分类损失。

  • n是样本容量。

  • yj是观察到的类标签。软件代码为1或1,表明消极或积极类(或第一或第二课一会分别属性)。

  • f(Xj观察)是positive-class分类评分(行)j预测的数据X

  • j=yjf(Xj)是分类的分类评分观察j相对应的类yj。积极的价值观j显示正确的分类,不为平均损失作出多少贡献。负的j显示不正确的分类和对平均损失作出了重大贡献。

  • 观察的重量jwj

鉴于这种情况,下表描述了支持损失函数,您可以指定使用金宝appLossFun名称-值参数。

损失函数 的价值LossFun 方程
二项异常 “binodeviance” l = j = 1 n w j 日志 { 1 + 经验值 ( 2 j ] }
指数损失 “指数” l = j = 1 n w j 经验值 ( j )
误分类率小数 “classiferror”

l = j = 1 n w j { y ^ j y j } ,

在哪里 y ^ j 是最大的类标签对应类分数,然后呢{·}是指标函数。

铰链的损失 “枢纽” l = j = 1 n w j 马克斯 { 0 , 1 j }
分对数损失 “分对数” l = j = 1 n w j 日志 ( 1 + 经验值 ( j ) )
二次损失 “二次” l = j = 1 n w j ( 1 j ) 2

损失函数不省略一个观察得分时,计算加权平均损失。因此,损失可以返回当预测数据X包含缺失值,名称参数LossFun不是指定为“classiferror”。在大多数情况下,如果数据集不包含缺失的预测,损失函数不返回

这个图比较了损失函数的分数一个观察。一些函数归一化通过点(0,1)。

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

回归的损失

回归的损失函数测量回归模型的预测误差。当你在考虑对比许多相同类型的损失模型,较低的损失表示一个更好的预测模型。

考虑以下场景。

  • l是加权平均分类损失。

  • n是样本容量。

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

  • f(Xj)是观察的预测价值j预测的数据X

  • 观察的重量jwj

鉴于这种情况,下表描述了支持损失函数,您可以指定使用金宝appLossFun名称-值参数。

损失函数 的价值LossFun 方程
ε不敏感损失 “epsiloninsensitive” l = 马克斯 ( 0 , | y f ( x ) | ε ]
均方误差 “mse” l = ( y f ( x ) ] 2

损失函数不省略一个观察预测时计算加权平均损失。因此,损失可以返回当预测数据X包含缺失值。在大多数情况下,如果数据集不包含缺失的预测,损失函数不返回

算法

全部折叠

观察权重

对于分类问题,如果之前类概率分布是已知的(换句话说,先验分布不是经验),损失规范化观察权重总和之前类概率在各自的类。这个动作意味着观察权重前各自的默认类概率。

回归问题或者类概率分布是经验之前,软件可实现指定观察权重之和为1每次调用损失

扩展功能

版本历史

介绍了R2020b

全部展开