主要内容

通过套索和并行计算宽数据

此示例显示了如何使用套索以及交叉验证来识别重要预测因子。

加载样本数据并显示描述。

加载光谱描述
描述= 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)
使用“本地”配置文件的并行池正在关闭。

也可以看看

||||

相关话题