此示例显示了如何使用套索
以及交叉验证来识别重要预测因子。
加载样本数据并显示描述。
加载光谱描述
描述= 11×72焦炭阵列'==汽油==''''''''''NIR光谱和60汽油样品'''NIR:NIR光谱,以2nm间隔从900nm到1700测量NM''辛烷值:辛烷值'谱:一个数据集数组,包含NIR和Octane''''''''''''''''''''''''''''''''''Kalivas,John H,“近红外光谱的两个数据集”化学计量学“和智能实验室Systems,V.37(1997)PP.255-259'
套索和弹性网特别适用于广泛数据,即,与套索和弹性网的观察相比具有更多预测的数据。此类数据中存在冗余预测器。您可以使用套索
以及交叉验证来识别重要预测因子。
计算默认值套索
合身。
[b fitinfo] =套索(辛烷值);
根据函数绘制安装的套索正则化中的预测器数量lambda.
,使用对数X-轴。
Lassoplot(B,FitInfo,'plottype'那'lambda'那'xscale'那'日志');
很难判断哪个价值lambda.
是合适的。要确定良好的价值,请尝试使用交叉验证。
tic [b fitinfo] =套索(辛烷值,'简历',10);TOC.
经过时间为7.353767秒。
绘制结果。
Lassoplot(B,FitInfo,'plottype'那'lambda'那'xscale'那'日志');
显示建议的值lambda.
。
fitinfo.lambda1se.
ANS = 0.0302.
显示lambda.
用最小的MSE。
fitinfo.lambdaminmse.
ans = 0.0144.
检查适合的质量是否有建议的价值lambda.
。
lambdaindex = fitinfo.index1se;MSE = fitinfo.mse(lambdaindex)df = fitinfo.df(lambdaindex)
MSE = 0.0528 DF = 11
FIT仅使用401个预测器中的11个,并实现了一个小交叉验证的MSE。
检查交叉验证的MSE的情节。
Lassoplot(B,FitInfo,'plottype'那'简历');%使用MSE的日志比例来看更好地看到小的MSE值套装(GCA,'yscale'那'日志');
作为lambda.
增加(朝向左侧),MSE迅速增加。系数太大,它们不会充分符合响应。作为lambda.
减少,模型更大(具有更多的非零系数)。越来越大的MSE表明模型被过度接收。
默认设置lambda.
值不包括足够小的值以包括所有预测器。在这种情况下,似乎没有看出较小值的原因。但是,如果要比默认值较小,请使用lambdaratio
参数,或提供一系列lambda.
使用value.lambda.
范围。有关详细信息,请参阅套索
参考页面。
交叉验证可能很慢。如果您有一个并行计算工具箱许可证,请使用并行计算速度计算交叉验证的套索估计值。开始一个平行池。
mypool = parpool()
使用“本地”配置文件启动并行池(Parpool)...连接到6名工人。MyPool =具有属性的池:连接:TRUE NUMWORKERS:6集群:本地连接文件:{} AutoadDClientPath:True Idletimeout:30分钟(剩余30分钟)SPMDED:TRUE
设置并行计算选项并计算套索估计值。
opts = statset('使用指平行',真的);tic;[b fitinfo] =套索(辛烷值,'简历'10,'选项',选择);TOC.
经过时间为3.799009秒。
使用两个工人并行计算在此问题上更快。
停止并行池。
删除(mypool)
使用“本地”配置文件的并行池正在关闭。
Fitrinear.
|套索
|lassoglm.
|Lassoplot.
|岭