主要内容

调整宽数据并行

这个例子展示了如何调整模型的预测比观察。广泛的数据与预测比观测数据。通常,用宽数据要识别重要的预测因子。使用lassoglm作为探索性或筛选工具选择一个较小的一组变量优先考虑您的建模和研究。利用并行计算来加快交叉验证。

加载ovariancancer数据。这个数据有216个观察和4000年预测奥林匹克广播服务公司工作空间变量。是二进制的响应“癌症”“正常”,在grp工作空间变量。将响应转换为二进制的lassoglm

负载ovariancancery = strcmp (grp,“癌症”);

设置选项使用并行计算。准备使用并行计算parpool

选择= statset (“UseParallel”,真正的);parpool ()
开始平行池(parpool)使用“本地”概要文件…连接到平行池(工人数量:6)。ans = ProcessPool属性:连接:真正的NumWorkers: 6集群:本地AttachedFiles: {} AutoAddClientPath:真正的IdleTimeout: 30分钟(30分钟)SpmdEnabled:真的

配合一套旨在正则化模型。使用α参数有利于留住组织高度相关的预测,而不是消除小组的一个成员。通常,您可以使用一个相对大的价值α

rng (“默认”)%的再现性抽搐(B S) = lassoglm(奥林匹克广播服务公司,y,“二”,“NumLambda”,100,“α”,0.9,“LambdaRatio”1的军医,“简历”10“选项”、选择);toc
运行时间是90.892114秒。

检查交叉验证的阴谋。

lassoPlot (B S“PlotType”,“简历”);传奇(“显示”)%显示传奇

检查跟踪情节。

lassoPlot (B S“PlotType”,“λ”,“XScale”,“日志”)

正确的(绿色)垂直的虚线表示λ提供最小的旨在异常。左边(蓝色)虚线的最小偏差+不超过一个标准差。这个蓝色线少了许多预测:

[S.DF (S.Index1SE) S.DF (S.IndexMinDeviance)]
ans =1×250 89

你问lassoglm使用100种不同的适应λ值。它使用了多少了?

大小(B)
ans =1×24000 84

lassoglm84年后停止值,因为小的异常太小λ值。为了避免过度拟合,lassoglm暂停时,拟合模型的异常相比太小了二进制的异常响应,忽略了预测变量。

你可以强迫lassoglm包括更多的使用条款“λ”名称-值对的论点。例如,定义一组λ值,另外包括三个值小于中的值S.Lambda

minLambda = min (S.Lambda);explicitLambda = [minLambda * [。1 . 01措施]S.Lambda];

指定“λ”,explicitLambda当你打电话给lassoglm函数。lassoglm拟合模型的异常时中断太小,即使你显式地提供一组λ值。

为了节省时间,您可以使用:

  • 更少的λ,这意味着更少的适合

  • 更少的交叉验证折叠

  • 一个更大的值LambdaRatio

使用串行计算和所有这三个节省时间的方法:

抽搐(Bquick Squick] = lassoglm(奥林匹克广播服务公司,y,“二”,“NumLambda”25岁的“LambdaRatio”1飞行,“简历”5);toc
运行时间是16.517331秒。

图形比较新的结果第一个结果。

lassoPlot (Bquick Squick,“PlotType”,“简历”);传奇(“显示”)%显示传奇

lassoPlot (Bquick Squick,“PlotType”,“λ”,“XScale”,“日志”)

非零系数最低的数量大约50 +一个标准差模型,类似于第一个计算。