主要内容

并行规范数据

此示例显示了如何使模型与观测值更大的预测变量正规化。宽数据比观测值更多的数据。通常,有了广泛的数据,您需要识别重要的预测指标。采用lassoglm作为探索性或筛选工具,可以选择较小的变量集来确定建模和研究的优先级。使用并行计算加快交叉验证。

加载卵巢癌数据。该数据在obs工作区变量。响应是二进制的'癌症'或者'普通的', 在里面grp工作区变量。转换对二进制的响应以备lassoglm

加载卵巢癌y = strcmp(grp,'癌症');

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

opt = statset(“ useparalallel',真的);parpool()
使用“本地”配置文件开始并行池(PARPOOL)...连接到并行池(工人数量:6)。ans = processPool with属性:连接:true Numworkers:6群集:local actactedfiles:{} autoAddclientPath:true Idletimeout:30分钟(剩余30分钟)SPMDENBABLE:TRUE

安装一组正规化模型。使用Α参数有利于高度相关预测指标的保留组,而不是消除除该组的一个成员以外的所有成员。通常,您使用相对较大的价值Α

rng('默认'%可再现性tic [b,s] = lassoglm(obs,y,“二项式”,,,,'numlambda',100,...'Α',0.9,'lambdaratio',1E-4,'简历',10,'选项',选择);TOC
经过的时间为90.892114秒。

检查交叉验证图。

lassoplot(b,s,“ plottype',,,,'简历');传奇('显示'%显示传奇

检查跟踪图。

lassoplot(b,s,“ plottype',,,,'lambda',,,,'XScale',,,,'日志'

右(绿色)垂直虚线表示兰姆达提供最小的交叉验证偏差。左(蓝色)虚线的偏差最小,不超过一个标准偏差。这条蓝线的预测因素较少:

[s.df(s.index1se)s.df(s.indexmindeviance)]
ans =1×250 89

您询问lassoglm适合使用100个不同的兰姆达值。它使用了多少?

尺寸(b)
ans =1×24000 84

lassoglm在84个值之后停止,因为偏差太小而对小兰姆达值。为了避免过度拟合,lassoglm当拟合模型的偏差与二进制响应的偏差相比,停止时停止,忽略了预测变量。

你可以强迫lassoglm通过使用'lambda'名称值对参数。例如,定义一组兰姆达还包括三个值小于值的值S.Lambda

minlambda = min(s.lambda);explicitlambda = [minlambda*[。1.01 .001] s.lambda];

指定'lambda',explicitlambda当您致电lassoglm功能。lassoglm当拟合模型的偏差太小时,停止了,即使您明确提供一组兰姆达值。

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

  • 更少兰姆达,意味着更少的合适

  • 更少的交叉验证褶皱

  • 更大的价值Lambdaratio

使用串行计算以及所有这三种节省时间的方法:

tic [bquick,squick] = lassoglm(obs,y,“二项式”,,,,'numlambda',25,...'lambdaratio',1E-2,'简历',5);TOC
经过的时间为16.517331秒。

以图形方式将新结果与第一个结果进行比较。

lassoplot(bquick,squick,“ plottype',,,,'简历');传奇('显示'%显示传奇

lassoplot(bquick,squick,“ plottype',,,,'lambda',,,,'XScale',,,,'日志'

最低和一个标准偏差模型中的非零系数的数量约为50,类似于第一次计算。