并行规范数据
此示例显示了如何使模型与观测值更大的预测变量正规化。宽数据比观测值更多的数据。通常,有了广泛的数据,您需要识别重要的预测指标。采用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,类似于第一次计算。