主要内容

损失

批数据增量学习的线性模型损失

描述

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

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

例子

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

例子

l=损失(MdlXY名称,值使用由一个或多个名称值对参数指定的其他选项。例如,您可以指定预测器数据矩阵的列对应于观察,或指定分类损耗函数。

例子

全部折叠

增量模型在流数据上的性能可以用三种方法来衡量:

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

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

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

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

负载人类活动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模型。它的所有属性都是只读的。不需要指定任意值,您可以采取以下任一操作来配置模型:

  • 训练一个支持向量机模型使用fitcsvmFitClinear.在数据的子集上(如果可用),然后将模型转换为增量学习者使用incrementallearner.

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

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

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

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

  3. 称呼适合使模型与传入的数据块相匹配。用一个适合传入观测的新模型覆盖先前的增量模型。

  4. 存储所有性能指标,以查看它们在增量学习过程中是如何发展的。

%预先配置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)包含(“迭代”

图中包含一个轴对象。坐标轴对象包含4个类型为line、constantline的对象。这些对象表示累积、窗口、损失。

在指标预热期间(红线左边的区域),黄线表示每个传入数据块上的分类错误。在指标热身期之后,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)

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

这个情节暗示了以下内容:

  • updateMetrics仅在指标预热时间后计算性能指标。

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

  • updateMetrics在处理500个观测值后计算窗口度量值

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

输入参数

全部折叠

增量学习模型,指定为incrementalClassificationLinearincrementalRegressionLinear模型对象。您可以创建Mdl直接或通过使用支持的传统培训的机器学习模型转换金宝appincrementallearner.函数。有关更多详细信息,请参阅相应的参考页面。

您必须配置Mdl通过一组观测来计算它的损失。

  • 如果Mdl是一个转换的传统训练的模型,您可以在没有任何修改的情况下计算其损失。

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

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

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

    • 无论对象类型如何,如果您配置模型,使函数标准化预测器数据,预测器意味着Mdl。μ和标准偏差Mdl。年代igma必须是非空数组。

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

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

请注意

损失金宝app仅支持浮点输入预测器数据。如果输入模型Mdl表示转换的,传统训练的模型适合分类数据,使用dummyvar将每个分类变量转换为虚拟变量的数字矩阵,并将所有虚拟变量矩阵和任何其他数字预测器连接起来。有关详细信息,请参见虚拟变量

数据类型:单身的|

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

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

对于分类问题:

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

  • 一会输入模型的属性Mdl是非空的,以下条件适用:

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

    • 的数据类型YMdl。ClassNames肯定是一样的。

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

名称-值参数

指定可选的逗号分隔的对名称,值参数。姓名参数名和价值为对应值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

损失函数,指定为逗号分隔对组成'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 (p1,如果观察p是在课堂上,用于指定数据中的每一个观测。设置行中的其他元素p0

    • 年代是一个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取决于权重LossFun

更多关于

全部折叠

分类损失

分类损失功能测量分类模型的预测不准确性。当你在许多模型中比较同一类型的损失时,损失越低表明预测模型越好。

考虑以下场景。

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

  • n为样本量。

  • 对于二进制分类:

    • yj是观察到的类标签。软件将其代码为-1或1,表示负或正类(或第一个或第二类)一会分别属性)。

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

    • jyjfXj)为分类观察的分类评分j对应的类yj.积极的价值观j表明正确的分类,对平均损失贡献不大。负的j表示不正确的分类,并对平均损失显着贡献。

  • 观测权重jwj

给定此场景,下表描述了支持的损失函数,可以使用金宝app'lockfun'名称-值对的论点。

损失函数 的价值LossFun 方程
二项式偏差 “binodeviance” l σ. j 1 n w j 日志 1 + exp. - 2 j
指数损失 “指数” l σ. j 1 n w j exp. - 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 + exp. - j
二次损失 “二次” l σ. j 1 n w j 1 - j 2

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

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

回归的损失

回归的损失函数测量回归模型的预测不准确性。当你在许多模型中比较同一类型的损失时,损失越低表明预测模型越好。

考虑以下场景。

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

  • n为样本量。

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

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

  • 观测权重jwj

给定此场景,下表描述了支持的损失函数,可以使用金宝app'lockfun'名称-值对的论点。

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

l 马克斯 0 | y - f x | - ε

均方误差 “mse”

l y - f x 2

算法

全部折叠

观察权重

对于分类问题,如果先验类别概率分布已知(换句话说,先验分布不是经验的),损失将观察权值归一化到各自类中的先验类概率。这个操作意味着,默认情况下,观察权值是各自的先验类概率。

对于回归问题或如果先验类概率分布是经验的,该软件将指定的观察权值归一化,使其每次调用都为1损失

扩展能力

介绍了R2020b