主要内容

selectModels

类:RegressionLinear

选择拟合的正则化线性回归模型

描述

例子

SubMdl= selectModels (Mdlidx从一组线性回归模型(Mdl)训练使用各种正则化的力量。指数idx对应于中的正则化强度Mdl。lambda,并指定要返回哪些模型。

输入参数

全部展开

线性回归模型训练使用各种正则化强度,指定为aRegressionLinear模型对象。您可以创建RegressionLinear使用模型对象fitrlinear

虽然Mdl是一个模型对象,如果元素个数(Mdl.Lambda)l≥2,那么你可以想到Mdl作为l训练模型。

对应于正则化强度的索引,指定为正整数的数字向量。的值idx必须在区间[1,l),l元素个数(Mdl.Lambda)

数据类型:|

输出参数

全部展开

使用各种正则化强度训练的线性回归模型的子集,返回为RegressionLinear模型对象。

例子

全部展开

从这个模型中模拟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 = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

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

Lambda = logspace(-4,-1,15);

保留30%的数据用于测试。确定测试样本指数。

cvp = cvpartition(numel(Y),“坚持”, 0.30);idxTest = test(cvp);

训练线性回归模型使用套索惩罚与力量λ.指定正则化强度,使用SpaRSA优化目标函数,以及数据分区。要提高执行速度,可以调换预测器数据,并指定观察值为列。

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

Mdl1是一个RegressionLinear模型。因为λ是一个15维的正则化强度向量,你能想到吗Mdl1作为15个训练过的模型,每个模型对应一个正则化强度。

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

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

较高的值λ导致预测变量的稀疏性,这是回归模型的一个很好的品质。使用整个数据集和之前使用的所有选项(数据分区规范除外)重新训练模型。确定每个模型的非零系数的数量。

Mdl = fitrlinear(X,Y,“ObservationsIn”“列”“λ”λ,...“规划求解”“sparsa”“正规化”“套索”);numNZCoeff = sum(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}非零系数频率')包含(“log_{10}λ的)举行

图中包含2个轴对象。Axes对象1包含一个line类型的对象。坐标轴对象2包含一个line类型的对象。

的索引λ平衡最小分类错误和预测变量稀疏性(例如,λ(11)).

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

MdlFinal是受过训练的RegressionLinear使用λ(11)作为正则化的力量。

提示

建立几个预测线性回归模型的一种方法是:

  1. 拿出一部分数据进行测试。

  2. 训练线性回归模型fitrlinear.属性指定正则化强度的网格λ名称-值对参数,并提供训练数据。fitrlinear返回一个RegressionLinear模型对象,但它包含每个正则化强度的模型。

  3. 为了确定每个正则化模型的质量,将返回的模型对象和保留的数据传递给,例如,损失

  4. 识别指标(idx)的正则化模型子集,然后将返回的模型和索引传递给selectModelsselectModels返回一个RegressionLinear模型对象,但它包含元素个数(idx)正则化模型。

  5. 为预测新数据的类标签,将数据和正则化模型的子集传递给预测

版本历史

在R2016a中引入

Baidu
map