套索正规化

这个例子演示了通过查看数据集和识别人群中糖尿病的预测因子来使用套索进行特征选择。数据集包含10个预测器。目标是确定重要的预测因素,并丢弃那些不必要的因素。

查看完整的数据和功能这个演示。

下载数据

文件名=“diabetes.txt”;urlwrite (“http://www.stanford.edu/ hastie /论文/拉/ diabetes.data”文件名);

导入数据

文件保存后,您可以将数据导入到MATLAB作为表使用导入工具使用默认选项。或者,你可以使用下面的代码,它可以从导入工具自动生成:

formatSpec =' % f % % f % % % f % f % % % f % f % ^ \ n \ [r];文件标识= fopen(文件名,“r”);datalarray = textscan(fileID, formatSpec,“分隔符”' \ t '“HeaderLines”,1,“ReturnOnError”、假);文件关闭(文件标识);糖尿病=表(dataArray {1: end-1},“VariableNames”,{“年龄”“性”“身体质量指数”“英国石油公司”“S1 '“S2”“S3”S4的“S5”“S6”“Y”});clearvars文件名分隔符startRowformatSpec文件标识dataArray%删除文件删除diabetes.txt

从表中读取预测器和响应变量

predNames = diabetes.Properties.VariableNames (1: end-1);X =糖尿病{:1:end-1};y =糖尿病{:结束};

执行套索正规化

[beta, FitInfo] = lasso(X,y,)“标准化”,真的,“简历”10“PredictorNames”, predNames);FitInfo lassoPlot(β,“PlotType”“λ”“XScale”“日志”);hlplot =得到(gca,“孩子”);%为图中的每条线生成颜色颜色= hsv(元素个数(hlplot));Ii = 1:numel(hlplot) set(hlplot(Ii),“颜色”、颜色(ii,:));结束集(hlplot,“线宽”2)组(gcf“单位”“归一化”“位置”,[0.2 0.4 0.5 0.35])“位置”“最佳”

较大的lambda值出现在图的左侧,这意味着正则化增加了。随着lambda值的增加,非零预测器的数量也会增加。

重要的预测因子

作为经验法则,一个标准误差值通常用于选择一个较小的模型,并具有良好的拟合性。

林= FitInfo.Index1SE;isImportant = beta(:,lam) ~= 0;disp (predNames(重要信息)
' bmi ' ' bp ' ' s3 ' ' s5 '

用比较术语拟合一个线性模型

mdlFull = fitlm (X, y,“拦截”、假);disp (mdlFull)
线性回归模型:y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10估算SE tStat pValue x1 0.022296 0.22256 0.10018 0.92025 x2 -26.073 5.9561 -4.3775 1.5074e-05 x3 5.3537 0.73462 1.512e -12 x4 1.0178 0.2304 4.4175 1.2636 0.33044 3.8239 0.00015068 x6 -1.2849 0.3468 -3.7051 0.00023877 x7 -3.0683 0.37189 -8.2505 1.9259e-15 x8 -5.508 5.5883 -0.98565 0.32486 x9 5.5034 9.529365 0.55976 x100.12339 0.2788 0.44256 0.6583 Number of observations: 442, Error degrees of freedom: 432 Root Mean Squared Error: 55.6

比较正则化和非正则化模型的MSE。

disp ([“套索MSE:”num2str (FitInfo.MSE (lam))) disp ([“充分MSE:”num2str (mdlFull.MSE)])
套索MSE: 3176.5163全MSE: 3092.896

仅使用lasso确定的重要预测器的拟合的均方误差(MSE),与使用所有预测器的线性模型的误差相当接近。Lasso通常用于防止过拟合或去除冗余预测,以提高模型的准确性。