机器学习与MATLAB

套索正规化

这个例子演示了使用套索看一个数据集的特征选择和确定预测糖尿病的人口。数据集包含10个预测因子。我们的目标是识别重要的预测因子,抛弃那些不必要的。

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

下载数据

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

导入数据

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

formatSpec =' % % f % f % % % f % f % % % f % f % ^ \ n \ [r];文件标识= fopen(文件名,“r”);formatSpec dataArray = textscan(文件标识,“分隔符”,' \ 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 =糖尿病{:结束};

执行套索正规化

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

更大的λ值出现在左边的图,这意味着增加正规化。随着λ值的增加,非零预测的数量也增加了。

重要的预测因子

作为一个经验法则,一个标准误差值通常用于选择一个较小的模型与一个不错的选择。

林= FitInfo.Index1SE;重要信息=β(:,lam) ~ = 0;disp (predNames(重要信息)
“身体质量指数”“英国石油”的S3 S5的

符合条件的线性模型的比较

mdlFull = fitlm (X, y,“拦截”、假);disp (mdlFull)
线性回归模型:y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 +×8 + x9 + x10估计系数:估计SE tStat pValue x1 x2 0.022296 0.22256 0.10018 0.92025 -26.073 5.9561 -4.3775 1.5074 e-05 x3 e-12 x4 1.0178 0.2304 4.4175 1.5112 5.3537 0.73462 7.2877 1.2635 e-05 x5 1.2636 0.33044 3.8239 0.00015068 x6 x7 -3.0683 0.37189 -8.2505 0.00023877 -1.2849 0.3468 -3.7051 -5.508 5.5883 -0.98565 0.32486 1.9259 e15汽油的混合体x9 5.5034 0.12339 0.2788 0.44256 0.6583 9.4293 0.58365 0.55976 x10的观测数量:442年,错误自由度:432根均方误差:55.6

比较正规化的MSE和unregularized模型。

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

均方误差(MSE)只适合使用的重要预测因子取决于套索,相当接近线性模型的误差,使用所有的预测因子。套索常被用来防止过度拟合或删除冗余提高模型预测精度。