预测

类:RegressionLinear

预测线性回归模型的响应

描述

例子

伊哈特=预测(MdlX返回预测器数据中每个观测的预测响应X基于训练的线性回归模型Mdl伊哈特中每个正则化强度的响应Mdl

例子

伊哈特=预测(MdlX名称,值返回一个或多个指定的附加选项的预测响应名称,值对参数。例如,指定预测器数据中的列与观测值对应。

输入参数

全部展开

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

预测器数据,指定为n——- - - - - -p全或稀疏矩阵。这个方向的X表示行对应于单个观察值,列对应于单个预测变量。

请注意

如果您对预测器矩阵进行定位,使观察结果与列对应并指定“ObservationsIn”、“列”,那么您可能会经历计算时间的显著减少。

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

数据类型:|

名称-值对的观点

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

预测器数据观测维数,由指定的逗号分隔对组成“观测信号”“列”“行”

请注意

如果您对预测器矩阵进行定位,使观察结果与列对应并指定“ObservationsIn”、“列”,那么您可能会经历优化执行时间的显著减少。

输出参数

全部展开

预测的响应,返回为n——- - - - - -l数字矩阵。n观察的次数在吗Xl是中正则化强度的数量Mdl。lambdaYHat (j是对观察的反应吗采用具有正规化强度的线性回归模型Mdl。lambda(j

利用正则化强度模型预测响应j y j x β j + b j

  • x是来自预测数据矩阵的观察值X,为行向量。

  • β j 为估计的系数列向量。软件将这个向量存储在其中Mdl。β(:,j

  • b j 软件存储在其中的估计的标量偏差Mdl。偏差(j

例子

全部展开

从这个模型模拟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);

训练线性回归模型。保留30%的观察值作为保留样本。

CVMdl = fitrlinear (X, Y,“坚持”, 0.3);Mdl = CVMdl。训练有素的{1}
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0066 Lambda: 1.4286e-04 Learner: 'svm'属性,方法

CVMdl是一个RegressionPartitionedLinear模型。它包含属性训练有素的,这是一个1 × 1单元格数组RegressionLinear软件使用训练集进行训练的模型。

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

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

预测训练和测试样本的反应。

yHatTrain =预测(Mdl X (trainIdx:));yHatTest =预测(Mdl X (testIdx:));

因为有一个正规化强度MdlyHatTrainyHatTest是数字向量。

预测最佳表现,线性回归模型,使用套索惩罚和最小二乘。

模拟10000个观察值,如测试样本预测的反应

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,“观测信号”“列”“KFold”5.“λ”λ,...“学习者”“leastsquares”“规划求解”“sparsa”“正规化”“套索”); numCLModels=numel(CVMdl.Trained)
numCLModels = 5

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

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

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

Mdl1是一个RegressionLinear模型对象。fitrlinear构建Mdl1通过前四次训练。因为λ是一系列正则化强度,你可以想到Mdl1作为11个模型,其中每个正则化强度对应一个模型λ

估计交叉验证的MSE。

mse = kfoldLoss (CVMdl);

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

Mdl=菲特线性(X,Y,“观测信号”“列”“λ”λ,...“学习者”“leastsquares”“规划求解”“sparsa”“正规化”“套索”); numNZCoeff=sum(Mdl.Beta~=0);

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

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

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

idxFinal = 10;

提取对应最小MSE的模型。

idxFinal MdlFinal = selectModels (Mdl)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0050 Lambda: 0.0037初学者:'最小二乘'属性,方法
idxNZCoeff =找到(MdlFinal.Beta ~ = 0)
idxNZCoeff =2×1100 200
EstCoeff = Mdl.Beta (idxNZCoeff)
EstCoeff =2×11.0051 1.9965

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

模拟10个新的观测结果,并使用最佳模型预测相应的响应。

XNew = sprandn (d, 10日,新西兰);YHat =预测(MdlFinal XNew,“观测信号”“列”);

扩展功能

介绍了R2016a