这个例子说明了如何套索
识别并丢弃不必要的预测因子。
生成从与各种装置指数分布五维人造数据X的200个样本。
RNG(3,“扭腰”)%用于重现X =零(200,5);对于II = 1:5 X(:,ⅱ)= exprnd(II,200,1);结束
生成的响应数据ÿ
=X
*[R
+EPS
,其中[R
只有两个非零的成分,和噪声EPS
是正常的标准偏差0.1。
R = [0; 2; 0; -3; 0];Y = X * R + randn(200,1)* 1;
飞度车型有交叉验证序列套索
,并绘制结果。
并[b,fitinfo] =套索(X,Y,'简历',10);lassoPlot(B,fitinfo,'PlotType',“拉姆达”,'的XScale',“日志”);
该图表显示了回归的各值非零系数LAMBDA
调整参数。值越大LAMBDA
出现在曲线图的左侧,这意味着更多的正则化,导致较少的非零回归系数。
垂直虚线表示LAMBDA
以最小均方误差(右)值,LAMBDA
值最小均方误差加上一个标准差。后面这个值是一个推荐的设置LAMBDA
。这些线仅当您执行交叉验证出现。交叉验证通过设置'简历'
名称 - 值对的参数。此示例使用10倍交叉验证。
的曲线图显示了自由度(DF)的,这意味着在回归非零系数的数目,作为LAMBDA的函数的上部。在左边,LAMBDA的较大值会导致所有,但一个系数为0,右侧全部五个系数是非零,虽然图中显示只有两个清晰。其他三个系数是如此之小,你不能从视觉0区别开来。
对于较小的值(在图中向右),系数值接近于最小二乘估计。
找出LAMBDA
最小的交叉验证均方误差值加1个标准差。检查拟合在该MSE和系数LAMBDA
。
林= fitinfo.Index1SE;fitinfo.MSE(LAM)
ans = 0.1398
B(:,LAM)
ANS =5×10 1.8855 0 -2.9367 0
套索
干得不错找到系数向量[R
。
为了进行比较,发现最小二乘估计[R
。
RHAT = X \ÿ
RHAT =5×1-0.0038 1.9952 0.0014 -2.9993 0.0031
估计B(:,LAM)
比的均方误差稍微均方误差RHAT
。
RES = X * RHAT - ÿ;%计算残差MSEmin = RES' * RES / 200%B(:,LAM)值是0.1398
MSEmin = 0.0088
但B(:,LAM)
只有两个非零的成分,因此可以提供新的数据更好的预测估计。
fitrlinear
|套索
|lassoPlot
|lassoglm
|岭