失利

高斯核回归模型回归损失

描述

例子

l=损失(MDL,X,Y)返回均方误差(MSE)为高斯核回归模型MDL利用在预测数据X和对应的响应Y

例子

l=损失(MDL,X,Y,名称,值)使用由一个或多个名称值对参数中指定的附加选项。例如,你可以指定一个回归损失函数和观察权重。然后,失利返回使用指定损失函数的加权回归损失。

例子

全部折叠

训练高斯核回归模型,一个高大的阵列,然后计算resubstitution均方误差和ε-己不敏感的错误。

当您在高数组上执行计算时,MATLAB®使用并行池(如果您有并行计算工具箱™,则默认)或本地MATLAB会话。如果您希望在拥有并行计算工具箱时使用本地MATLAB会话运行示例,则可以使用mapreducer函数。

创建一个使用数据引用文件夹位置的数据存储。数据可以包含在单个文件、文件集合或整个文件夹中。治疗'NA'值丢失的数据,以便数据存储它们替换值。选择的变量使用的一个子集。在数据存储之上创建一个高台。

varnames = {'ArrTime',“DepTime”,“ActualElapsedTime”};DS =数据存储区('airlinesmall.csv',“TreatAsMissing”,'NA',...“SelectedVariableNames”,varnames);t =高(ds);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(worker数量:4)。

指定DepTimeArrTime作为预测变量(X)和ActualElapsedTime作为响应变量(Y)。选择其中的意见ArrTime是晚于DepTime

白天= t.ArrTime > t.DepTime;Y = t.ActualElapsedTime(白天);%响应数据X = {吨白天,{“DepTime”'ArrTime'}};%的预测数据

标准化预测变量。

Z = zscore(X);%标准化数据

用标准化的预测因子训练一个默认的高斯核回归模型。集'冗长',0抑制诊断消息。

[铜牌,FitInfo] = fitrkernel(Z,Y,“放牧”,0)
MDL = RegressionKernel PredictorNames:{X1 '×2'} ResponseName: 'Y' 学习者: 'SVM' NumExpansionDimensions:64 KernelScale:1 LAMBDA:8.5385e-06 BoxConstraint:1的Epsilon:5.9303属性,方法
FitInfo =同场的结构:求算器:“lbgf -tall”损耗函数:“epsilon隆不敏感”Lambda: 8.5385e-06 betatance: 1.0000e-03梯度公差:1.0000e-05客观评价:30.7814梯度大小:0.0191相对hangeinbeta: 0.0228 FitTime: 124.6182历史:[]

MDL是一个训练有素的RegressionKernel模型和结构数组FitInfo包含优化的详细信息。

通过估计重新替换的均值平方误差和爱扑塞隆不敏感误差,确定训练的模型如何很好地推广到新的预测值。

lossMSE =损失(Mdl, Z, Y)%重新替换均方误差
lossMSE = MxNx ......高大的阵列?吗?吗?...?吗?吗?...?吗?吗?...::::::
lossEI =损失(MDL,Z,Y,'LossFun',“epsiloninsensitive”)%Resubstitution的ε-不敏感的错误
lossEI = MxNx……高大的数组?吗?吗?...?吗?吗?...?吗?吗? ... : : : : : :

评估高大阵列和使用带来的结果到内存收集

[lossMSE, lossEI] =收集(lossMSE lossEI)
评估使用并行池“本地”高表达: - 的1遍1:在2.7秒评价完成在4秒完成
lossMSE = 2.8851e + 03
lossEI = 28.0050

为高斯核回归模型指定一个自定义回归损失(Huber损失)。

加载carbig数据集。

负载carbig

指定预测变量(X)和响应变量(Y)。

X =[重量、气缸、马力,Model_Year];Y = MPG;

删除行XY其中任意一个数组值。删除与行在将数据传递给fitrkernel可加快训练速度和减少内存使用。

缺失([X Y]);X = R (:, 1:4);Y = R(:,结束);

观测作为保留样本的储备10%。提取分区定义的训练和测试指标。

RNG(10)%用于重现N =长度(Y);本量利= cvpartition (N,'坚持',0.1);idxTrn =培训(cvp);训练集索引%idxTest =测试(cvp);%测试集指标

标准化的训练数据和训练回归模型的内核。

Xtrain = X(idxTrn,:);Ytrain = Y(idxTrn);[Ztrain,tr_mu,tr_sigma] = zscore(Xtrain);%标准化训练数据tr_sigma(tr_sigma == 0)= 1;MDL = fitrkernel(Ztrain,Ytrain)
Mdl = RegressionKernel ResponseName: 'Y' Learner: 'svm' numexpandimensions: 128 KernelScale: 1 Lambda: 0.0028 BoxConstraint: 1 Epsilon: 0.8617

MDLRegressionKernel模型。

创建测量胡伯损失匿名函数 ( δ = 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);

估计使用胡伯损失函数训练集回归损失。

eTrain =损失(MDL,Ztrain,Ytrain,'LossFun',huberloss)
eTrain = 1.7210

利用训练数据列的相同平均值和标准偏差标准化的测试数据。估计使用胡伯损失函数测试装置回归的损失。

XTEST = X(idxTest,:);ZTEST =(XTEST-tr_mu)./ tr_sigma;%标准化测试数据Ytest = Y(idxTest);Etest法=损失(MDL,ZTEST,Ytest,'LossFun',huberloss)
Etest法= 1.3062

输入参数

全部折叠

核回归模型,指定为RegressionKernel模型对象。您可以创建一个RegressionKernel模型对象使用fitrkernel

预测器数据,指定为n-通过-p数字矩阵,其中n是观测值的数量和p是预测的数目。p必须等于用于列车的预测变量数MDL

数据类型:|

响应数据,指定为n维数值向量。的长度Y和观察的数量X必须是相等的。

数据类型:|

名称 - 值对参数

的可选逗号分隔对名称,值参数。名称参数名和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:L =损失(MDL,X,Y, 'LossFun', 'epsiloninsensitive', '权重',权重)返回使用的ε-不敏感损失函数的加权回归损失。

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

  • 下表列出了可用的损失函数。使用其对应的字符向量或字符串标量指定一个。同样,在表格中, f ( x ) = T ( x ) β + b

    • x是从观察(行矢量)p预测变量。

    • T ( · ) 是一个观测(行矢量)的用于特征扩展的变换。T(x)地图x p 到一个高维空间( )。

    • β是的向量系数。

    • b是标量偏差。

    描述
    “epsiloninsensitive” 小量不敏感损失: ( 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是一个n×1观察权重的数值向量。

    使用以下命令指定您的函数'LossFun',@lossfun

数据类型:烧焦||function_handle

观察权重,指定为逗号分隔的一对组成的“重量”和正值的数值向量。失利晕死意见X与在相应的值权重。的大小权重必须等于n,观测的数量(行中X)。如果你提供观测权值,失利计算加权回归损失,即,加权均方误差要么ε-不敏感损失函数

失利规格化权重使和等于1。

数据类型:|

输出参数

全部折叠

回归损失,返回一个数字标。的解释l依赖于取决于权重LossFun。例如,如果您使用缺省的观察权重,并指定“epsiloninsensitive”为损失函数,则l是的ε-不敏感损失。

更多关于

全部折叠

加权均方误差

加权均方误差的计算方法如下:

MSE = Σ j = 1 n w j ( f ( x j ) - y j ) 2 Σ j = 1 n w j ,

地点:

  • n是观测值的数量。

  • xj是个j观测(预测数据行)。

  • yj是所观察到的响应xj

  • f(xj)是高斯内核回归模型的响应预测MDLxj

  • w是观察权重向量。

的每个观测权重w等于(n,1)/n默认情况下。属性可以为观测权值指定不同的值“重量”名称-值对的论点。失利规格化权重使和等于1。

ε-不敏感损失函数

爱扑塞隆不敏感的损失函数忽略了在函数值的距离以内的误差。功能的正式描述为:

l o 年代 年代 ε = { 0 , f | y - f ( x ) | ε | y - f ( x ) | - ε , o t h e r w 年代 e

平均的ε-不敏感损失的计算方法如下:

l o 年代 年代 = Σ j = 1 n w j 最大 ( 0 , | y j - f ( x j ) | - ε ) Σ j = 1 n w j ,

地点:

  • n是观测值的数量。

  • xj是个j观测(预测数据行)。

  • yj是所观察到的响应xj

  • f(xj)是高斯内核回归模型的响应预测MDLxj

  • w是观察权重向量。

的每个观测权重w等于(n,1)/n默认情况下。属性可以为观测权值指定不同的值“重量”名称-值对的论点。失利规格化权重使和等于1。

扩展功能

介绍了R2018a