主要内容

宽数据通过Lasso和并行计算

这个例子展示了如何使用套索通过交叉验证来确定重要的预测因素。

加载示例数据并显示描述。

负载光谱描述
描述= 11×72 char数组' = =光谱和辛烷汽油的数据  == ' ' ' ' 近红外光谱和60辛烷值汽油样品' ' ' ' NIR:近红外光谱,以2 nm间隔从900纳米到1700纳米的辛烷:辛烷值的光谱:近红外光谱数据集包含变量的数组和辛烷‘‘参考:“近红外光谱的两组数据”,“化学计量学”和“智能实验室系统”,第37页(1997) pp.255 - 259”

套索和弹性网尤其适用于广泛的数据,即预测量比观测量多的数据。在这类数据中有冗余的预测因子。您可以使用套索通过交叉验证来确定重要的预测因素。

计算违约套索健康。

[b fitinfo] = lasso(NIR,辛烷);

在拟合的套索正则化中绘制预测数作为的函数λ,使用对数x设在。

lassoPlot (b fitinfo“PlotType”“λ”“XScale”“日志”);

很难判断……的价值λ是适当的。为了确定一个好的值,尝试用交叉验证进行拟合。

tic [b fitinfo] = lasso(NIR,辛烷值,“简历”10);toc
运行时间为7.353767秒。

策划的结果。

lassoPlot (b fitinfo“PlotType”“λ”“XScale”“日志”);

显示的建议值λ

fitinfo。λ1SE
ans = 0.0302

显示λ以最小均方误差。

fitinfo。λMinMSE
ans = 0.0144

检查质量的适合建议的价值λ

lambdaindex = fitinfo.Index1SE;mse = fitinfo.MSE(lambdaindex) df = fitinfo.DF(lambdaindex)
Mse = 0.0528 df = 11

该模型仅使用401个预测因子中的11个,并实现了一个小的交叉验证的MSE。

检查交叉验证的MSE图。

lassoPlot (b fitinfo“PlotType”“简历”);%使用对数尺度的MSE,以更好地看到较小的MSE值集(gca),“YScale”“日志”);

作为λ增加(向左),MSE迅速增加。系数降低得太多,不能充分地拟合响应。作为λ减小时,模型更大(有更多的非零系数)。MSE的增加表明模型被过度拟合。

的默认集λ值不包括小到足以包含所有预测器的值。在这种情况下,似乎没有理由查看较小的值。但是,如果您想要比默认值更小的值,请使用LambdaRatio参数,或提供的序列λ值使用λ参数。具体操作请参见套索参考页面。

交叉验证可能会很慢。如果您有并行计算工具箱许可证,请使用并行计算加速交叉验证lasso估计的计算。启动并行池。

mypool = parpool ()
使用“local”配置文件启动并行池(parpool)…连接到6个工人。mypool = Pool with properties: Connected: true NumWorkers: 6 Cluster: local attachdfiles: {} AutoAddClientPath: true IdleTimeout: 30 minutes (30 minutes remaining) SpmdEnabled: true

设置并行计算选项并计算套索估计。

选择= statset (“UseParallel”,真正的);抽搐;[b fitinfo] =套索(NIR,辛烷,“简历”10“选项”、选择);toc
运行时间为3.799009秒。

在这个问题上,使用两个工人并行计算更快。

停止平行池。

删除(mypool)
使用“本地”配置文件的并行池正在关闭。

另请参阅

||||

相关的话题