主要内容

损失

类:RegressionLinear

回归线性回归模型的损失

描述

例子

l=损失(Mdl,X,Y)返回均方误差(MSE)线性回归模型Mdl使用预测数据X和相应的反应Yl包含一个MSE为每个正则化的力量Mdl

l=损失(Mdl,资源描述,ResponseVarName)返回MSE的预测数据资源描述和真实的反应Tbl.ResponseVarName

l=损失(Mdl,资源描述,Y)返回的MSE预测表中的数据资源描述和真实的反应Y

例子

l=损失(___,名称,值)指定选项使用一个或多个名称-值对参数除了任何输入参数组合在以前的语法。例如,指定列预测数据对应于观测或指定回归损失函数。

请注意

如果预测数据X或预测变量资源描述包含任何缺失值,损失函数可以返回NaN。更多细节,请参阅损失可以返回NaN预测数据缺失值

输入参数

全部展开

线性回归模型,指定为一个RegressionLinear模型对象。您可以创建一个RegressionLinear模型对象使用fitrlinear

预测数据,指定为一个n——- - - - - -p完整的或稀疏矩阵。这个方向的X表明行对应于个人观察,和列对应于个人预测变量。

请注意

如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”,那么你可能会经历显著减少计算时间。

的长度Y和观察的数量X必须是相等的。

数据类型:|

响应数据,指定为一个n维数值向量。的长度Y必须等于观测的数量X资源描述

数据类型:|

样本数据用于训练模型,指定为一个表。每一行的资源描述对应于一个观察,每一列对应一个预测变量。可选地,资源描述响应变量可以包含额外的列和观察权重。资源描述必须包含所有的预测用于火车Mdl。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。

如果资源描述包含响应变量用于火车Mdl,那么你不需要指定ResponseVarNameY

如果你训练Mdl使用样本数据包含在一个表中,然后输入数据损失也必须在一个表中。

响应变量名称,指定为一个变量的名字资源描述。响应变量必须是一个数字向量。

如果您指定ResponseVarName,那么你必须指定它作为特征向量或字符串标量。例如,如果响应变量是存储为Tbl.Y,然后指定ResponseVarName作为“Y”。否则,软件将所有列资源描述,包括Tbl.Y预测因子。

数据类型:字符|字符串

名称-值参数

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

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

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

  • 下表列出了可用的损失函数。指定一个使用其相应的价值。表中, f ( x ) = x β + b

    • β是一个向量的p系数。

    • x是一个观察从p预测变量。

    • b是标量的偏见。

    价值 描述
    “epsiloninsensitive” Epsilon-insensitive损失: ( y , f ( x ) ] = 马克斯 ( 0 , | y f ( x ) | ε ]
    mse的 均方误差: ( y , f ( x ) ] = ( y f ( x ) ] 2

    “epsiloninsensitive”只适合SVM的学习者。

  • 指定你自己的函数使用函数处理符号。

    n被观察的数量X。你的函数必须有这个签名

    lossvalue =lossfun(Y, Yhat W)
    地点:

    • 输出参数lossvalue是一个标量。

    • 你选择函数名(lossfun)。

    • Y是一个n维向量观察到的反应。损失通过输入参数YY

    • Yhat是一个n维向量预测的反应,这是类似的输出预测

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

    指定你的函数使用“LossFun”@lossfun

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

预测数据观察维度,指定为“行”“列”

请注意

如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”,那么你可能会经历显著减少计算时间。你不能指定“ObservationsIn”、“列”预测数据表。

数据类型:字符|字符串

观察体重、指定为逗号分隔组成的“重量”和一个数字向量或一个变量的名字资源描述

  • 如果您指定权重作为一个数字矢量,然后的大小权重必须等于观测的数量X资源描述

  • 如果您指定权重作为一个变量的名字资源描述,那么这个名字一定是一个特征向量或字符串标量。例如,如果存储为权重Tbl.W,然后指定权重作为' W '。否则,软件将所有列资源描述,包括Tbl.W预测因子。

如果你提供重量,损失计算加权回归损失和规范权重总和为1。

数据类型:|

输出参数

全部展开

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

l一样的尺寸吗Mdl.LambdaL (j)是回归的线性回归模型使用正规化训练力量Mdl.Lambda (j)

请注意

如果Mdl.FittedLossmse的在目标函数,那么损失项MSE的一半。损失默认返回MSE。因此,如果您使用损失错误检查resubstitution(训练),然后有一个MSE和优化结果之间的差异fitrlinear的回报。

例子

全部展开

从这个模型模拟10000年观测

y = x 1 0 0 + 2 x 2 0 0 + e

  • X = x 1 , , x 1 0 0 0 是一个10000 - 10% - 1000稀疏矩阵非零标准正态元素。

  • e是随机的正常误差均值为0和标准偏差0.3。

rng (1)%的再现性n = 1 e4;d = 1 e3;新西兰= 0.1;X = sprandn (n, d,新西兰);Y = X (:, 100) + 2 * (:, 200) + 0.3 * randn (n, 1);

火车一个线性回归模型。储备的30%作为抵抗样本观察。

CVMdl = fitrlinear (X, Y,“坚持”,0.3);Mdl = CVMdl.Trained {1}
Mdl = RegressionLinear ResponseName:‘Y’ResponseTransform:“没有一个”测试:[1000 x1双]偏见:-0.0066λ:1.4286 e-04学习者:“支持向量机”属性,方法

CVMdl是一个RegressionPartitionedLinear模型。它包含属性训练有素的,这是一个1×1单元阵列举行RegressionLinear使用训练集模型的软件培训。

从分区中提取的训练和测试数据的定义。

trainIdx =培训(CVMdl.Partition);testIdx =测试(CVMdl.Partition);

训练和测试样本估计均方误差。

mseTrain =损失(Mdl X (trainIdx:), Y (trainIdx))
mseTrain = 0.1496
mseTest =损失(Mdl X (testIdx:), Y (testIdx))
mseTest = 0.1798

因为有一个正规化的力量Mdl,mseTrainmseTest是数字标量。

从这个模型模拟10000年观测

y = x 1 0 0 + 2 x 2 0 0 + e

  • X = x 1 , , x 1 0 0 0 是一个10000 - 10% - 1000稀疏矩阵非零标准正态元素。

  • e是随机的正常误差均值为0和标准偏差0.3。

rng (1)%的再现性n = 1 e4;d = 1 e3;新西兰= 0.1;X = sprandn (n, d,新西兰);Y = X (:, 100) + 2 * (:, 200) + 0.3 * randn (n, 1);X = X ';%将观测列速度训练

火车一个线性回归模型。储备的30%作为抵抗样本观察。

CVMdl = fitrlinear (X, Y,“坚持”,0.3,“ObservationsIn”,“列”);Mdl = CVMdl.Trained {1}
Mdl = RegressionLinear ResponseName:‘Y’ResponseTransform:“没有一个”测试:[1000 x1双]偏见:-0.0066λ:1.4286 e-04学习者:“支持向量机”属性,方法

CVMdl是一个RegressionPartitionedLinear模型。它包含属性训练有素的,这是一个1×1单元阵列举行RegressionLinear使用训练集模型的软件培训。

从分区中提取的训练和测试数据的定义。

trainIdx =培训(CVMdl.Partition);testIdx =测试(CVMdl.Partition);

创建一个匿名函数,措施Huber损失( δ = 1),

l = 1 w j j = 1 n w j j ,

在哪里

j = { 0 5 e j ˆ 2 ; | e j ˆ | - - - - - - 0 5 ; | e j ˆ | 1 | e j ˆ | > 1

e j ˆ 观察剩余吗j。定制的损失函数必须用特定的形式。编写一个定制的损失函数规则,请参阅“LossFun”名称-值对的论点。

huberloss = @ (Y, Yhat, W)和(W . * ((0.5 * (abs (Y-Yhat) < = 1)。* (Y-Yhat) ^ 2) +((abs (Y-Yhat) > 1)。* abs (Y-Yhat) -0.5))) / (W)之和;

估计训练集和测试集使用Huber损失函数回归损失。

eTrain =损失(Mdl X (:, trainIdx), Y (trainIdx),“LossFun”huberloss,“ObservationsIn”,“列”)
eTrain = -0.4186
基线测试=损失(Mdl X (:, testIdx), Y (testIdx),“LossFun”huberloss,“ObservationsIn”,“列”)
基线测试= -0.4010

从这个模型模拟10000年观测

y = x 1 0 0 + 2 x 2 0 0 + e

  • X = { x 1 , , x 1 0 0 0 } 是一个10000 - 10% - 1000稀疏矩阵非零标准正态元素。

  • e是随机的正常误差均值为0和标准偏差0.3。

rng (1)%的再现性n = 1 e4;d = 1 e3;新西兰= 0.1;X = sprandn (n, d,新西兰);Y = X (:, 100) + 2 * (:, 200) + 0.3 * randn (n, 1);

创建一组15对数间隔正则化的优势 1 0 - - - - - - 4 通过 1 0 - - - - - - 1

λ= logspace (4 1、15);

坚持30%的数据进行测试。识别测试样本指标。

本量利= cvpartition(元素个数(Y),“坚持”,0.30);idxTest =测试(cvp);

火车一个线性回归模型使用套索处罚的优势λ。指定正则化的优点,使用SpaRSA优化目标函数,数据分区。提高执行速度,转置预测数据和指定列的观测。

X = X ';CVMdl = fitrlinear (X, Y,“ObservationsIn”,“列”,“λ”λ,“规划求解”,“sparsa”,“正规化”,“套索”,“CVPartition”、本量利);Mdl1 = CVMdl.Trained {1};元素个数(Mdl1.Lambda)
ans = 15

Mdl1是一个RegressionLinear模型。因为λ是15维向量的正则化优势,你能想到什么Mdl115训练模型,每个正则化的力量。

估计每个正规化的试样均方误差模型。

mse =损失(Mdl1 X (:, idxTest), Y (idxTest),“ObservationsIn”,“列”);

更高的值λ导致预测变量稀疏,这是一个好质量的回归模型。重新培训模型使用整个数据集和所有选择以前,除了数据分区规范。确定数量的非零系数模型。

Mdl = fitrlinear (X, Y,“ObservationsIn”,“列”,“λ”λ,“规划求解”,“sparsa”,“正规化”,“套索”);numNZCoeff = (Mdl.Beta ~ = 0)之和;

在同一人物,情节的MSE和频率非零系数为每个正则化的力量。所有变量在对数尺度的阴谋。

图;[h, hL1, hL2] = plotyy (log10(λ)log10 (mse),log10(λ)log10 (numNZCoeff));hL1。标志=“o”;hL2。标志=“o”;ylabel (h (1),“log_ {10} MSE的)ylabel (h (2),“log_ {10} nonzero-coefficient频率”)包含(“log_{10}λ的)举行

图包含2轴对象。坐标轴对象1包含log_{10}λ,ylabel log_ {10} MSE包含一个类型的对象。坐标轴对象2 ylabel log_ {10} nonzero-coefficient频率包含一个类型的对象。

选择的指数或指数λ平衡最小分类误差和预测变量稀疏(例如,λ(11))。

idx = 11;idx MdlFinal = selectModels (Mdl);

MdlFinal是一个培训RegressionLinear模型对象,使用λ(11)作为一个正规化的力量。

扩展功能

版本历史

介绍了R2016a

全部展开