主要内容

RegressionPartitionedLinear

包:classreg.learning.partition
超类:RegressionPartitionedModel

交叉验证线性回归模型的高维数据

描述

RegressionPartitionedLinear是一组经过交叉验证的折叠训练的线性回归模型。要获得交叉验证的线性回归模型,请使用fitrlinear并指定一个交叉验证选项。您可以使用一种或多种“kfold”方法来估计模型的预测质量,或线性回归模型的概括程度:kfoldPredictkfoldLoss

每一种“kfold”方法都使用经过内折观察训练的模型来预测外折观察的反应。例如,假设您使用五次折叠进行交叉验证。在这种情况下,软件将每个观察结果随机分配到五个大小大致相同的组。的培训褶皱包含四个组(即大约4/5的数据)和测试褶皱包含另一组(也就是说,大约是数据的1/5)。在这种情况下,交叉验证的过程如下:

  1. 软件训练第一个模型(存储在CVMdl。训练有素的{1}),使用后四组的观察结果,并保留第一组的观察结果以供验证。

  2. 软件训练第二个模型(存储在CVMdl。训练有素的{2}),使用第一组和后三组的观察结果。软件将第二组的观察结果保留下来进行验证。

  3. 软件以类似的方式进行第三到第五个模型。

如果你通过调用来验证kfoldPredict,它使用第一种模型计算第一组观测结果的预测,使用第二种模型计算第二组观测结果的预测,以此类推。简而言之,该软件使用未经该观察而训练过的模型来估计每个观察结果的反应。

请注意

与其他交叉验证的回归模型不同,RegressionPartitionedLinear模型对象不存储预测器数据集。

建设

CVMdl = fitrlinear (X, Y,名称,值)时创建交叉验证的线性回归模型的名字要么是“CrossVal”“CVPartition”“坚持”,或“KFold”.更多信息请参见fitrlinear

属性

全部展开

交叉验证的属性

交叉验证的模型名,指定为字符向量。

例如,“线性”为二进制分类或回归指定交叉验证的线性模型。

数据类型:字符

交叉验证的折叠数,指定为一个正整数。

数据类型:

交叉验证参数值,例如用于交叉验证线性模型的名称-值对参数值,指定为一个对象。ModelParameters不包含估计参数。

访问的属性ModelParameters使用点符号。

训练数据中的观察数,指定为一个正数标量。

数据类型:

数据分区,指示软件如何将数据分割为交叉验证折叠,指定为cvpartition模型。

交叉验证折叠的线性回归模型,指定为单元数组RegressionLinear模型。训练有素的k细胞,k是折叠的数量。

数据类型:细胞

用于交叉验证模型的观测权值,指定为一个数值向量。WNumObservations元素。

软件将训练中使用的重量标准化,这样sum (W, omitnan)1

数据类型:|

用于交叉验证模型的观察响应,指定为包含的数字向量NumObservations元素。

每一行的Y表示预测数据中相应观测值的观测响应。

数据类型:|

其他回归属性

分类预测指标,指定为一个正整数的向量。假设预测器数据包含成行的观测数据,CategoricalPredictors包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]).

数据类型:|

预测器名称按其在预测器数据中出现的顺序排列,指定为字符向量的单元数组。的长度PredictorNames是否等于训练数据中的变量数X资源描述用作预测变量。

数据类型:细胞

响应变量名,指定为字符向量。

数据类型:字符

响应变换函数,指定为“没有”或者函数句柄。ResponseTransform描述软件如何转换原始响应值。

对于一个MATLAB®函数或您定义的函数,请输入它的函数句柄。例如,可以输入Mdl。ResponseTransform = @函数,在那里函数接受原始响应的数值向量,并返回包含转换后响应的相同大小的数值向量。

数据类型:字符|function_handle

方法

kfoldLoss 未用于训练的观察的回归损失
kfoldPredict 预测未用于训练的观察结果的反应

复制语义

价值。要了解值类如何影响复制操作,请参见复制对象

例子

全部折叠

用这个模型模拟10000次观测

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

  • X x 1 x 1 0 0 0 是一个10000 × 1000的稀疏矩阵,含有10%的非零标准法向元素。

  • e为随机正态误差,均值为0,标准差为0.3。

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

交叉验证线性回归模型。为了提高执行速度,可以调换预测器数据,并指定观察结果列在列中。

X = X ';CVMdl = fitrlinear (X, Y,“CrossVal”“上”“ObservationsIn”“列”);

CVMdl是一个RegressionPartitionedLinear旨在模型。因为fitrlinear默认情况下实现10次交叉验证,CVMdl。训练有素的包含一个10的细胞向量RegressionLinear模型。每个单元格包含一个线性回归模型,训练九次折叠,然后测试剩下的折叠。

预测对外部观测的响应,通过传递估计泛化误差CVMdlkfoldPredictkfoldLoss,分别。

oofYHat = kfoldPredict (CVMdl);通用电气= kfoldLoss (CVMdl)
通用电气(ge) = 0.1748

估计、泛化、均方误差为0.1748。

为了确定使用最小二乘的线性回归模型的良好的套索惩罚强度,实现5倍交叉验证。

用这个模型模拟10000次观测

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

  • X x 1 x 1 0 0 0 是一个10000 × 1000的稀疏矩阵,含有10%的非零标准法向元素。

  • e为随机正态误差,均值为0,标准差为0.3。

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

创建一组15个对数间隔的正则化强度 1 0 - 5 通过 1 0 - 1

λ= logspace(5、1、15);

旨在模型。为了提高执行速度,可以调换预测器数据,并指定观察结果列在列中。利用SpaRSA优化目标函数。

X = X ';CVMdl = fitrlinear (X, Y,“ObservationsIn”“列”“KFold”5,“λ”λ,...“学习者”“leastsquares”“规划求解”“sparsa”“正规化”“套索”);numCLModels =元素个数(CVMdl.Trained)
numCLModels = 5

CVMdl是一个RegressionPartitionedLinear模型。因为fitrlinear实现5倍交叉验证,CVMdl包含5RegressionLinear软件在每个折线上训练的模型。

显示第一个训练的线性回归模型。

Mdl1 = CVMdl。训练有素的{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double] Bias: [1x15 double] Lambda: [1x15 double]学习者:'leastsquares'属性,方法

Mdl1是一个RegressionLinear模型对象。fitrlinear构造Mdl1通过前四圈的训练。因为λ你能想到一个正则化优势的序列吗Mdl1作为15个模型,每一个正则化强度在λ

估计交叉验证的MSE。

mse = kfoldLoss (CVMdl);

更高的值λ导致预测变量稀疏,这是一个良好的质量的回归模型。对于每一个正则化强度,使用整个数据集和交叉验证模型时的相同选项训练一个线性回归模型。确定每个模型的非零系数的数量。

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

在同一图中,绘制交叉验证的MSE和频率的非零系数的每一个正则化强度。在对数尺度上标出所有变量。

图[h,hL1,hL2] = plotyy(log10(Lambda),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包含一个类型为line的对象。轴2包含一个类型为line的对象。

选择平衡预测变量稀疏性和低MSE的正则化强度指数(例如,λ(10)).

idxFinal = 10;

提取与最小均方误差相对应的模型。

idxFinal MdlFinal = selectModels (Mdl)
mllfinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0050 Lambda: 0.0037 Learner: 'leastsquares' Properties, Methods
idxNZCoeff =找到(MdlFinal.Beta ~ = 0)
idxNZCoeff =2×1100 200
EstCoeff = Mdl.Beta (idxNZCoeff)
EstCoeff =2×11.0051 - 1.9965

MdlFinal是一个RegressionLinear一个正则化强度的模型。非零系数EstCoeff与模拟数据的系数接近。

介绍了R2016a