主要内容

正常化并行数据

此示例显示如何将具有比观察更多的预测器的模型正规化。广泛的数据与观察结果有更多的预测器是数据。通常,包含广泛的数据来识别重要的预测因子。采用lassoglm.作为一种探索性或筛选工具,以选择较小的变量集,以优先考虑您的建模和研究。使用并行计算来加速交叉验证。

加载卵巢癌数据。此数据有216个观察和4000个预测因子obs.工作区变量。响应是二进制的,也是如此'癌症''普通的', 在里面GRP.工作区变量。将响应转换为二进制文件以供使用lassoglm.

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

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

opt = statset('使用指平行',真正的);parpool ()
使用“local”配置文件启动并行池(parpool)…connection to the parallel pool (number of workers: 6). ans = ProcessPool with properties: Connected: true NumWorkers: 6 Cluster: local attachdfiles: {} AutoAddClientPath: true IdleTimeout: 30 minutes (30 minutes remaining) SpmdEnabled: true

适合交叉验证的正则化模型。使用Α参数,以支持保持高度相关的预测因子的组,而不是消除除小组的所有成员之外。通常,你使用相对大的价值Α

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

检查交叉验证情节。

Lassoplot(B,S,'plottype''简历');传奇('显示'%显示传奇

检查跟踪情节。

Lassoplot(B,S,'plottype''lambda''xscale''日志'

右(绿色)垂直虚线代表lambda.提供最小的交叉验证偏差。左(蓝色)虚线具有最小偏差加不超过一个标准偏差。这个蓝线有很多预测因子:

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

你问lassoglm.适合使用100不同lambda.价值观。它使用了多少钱?

大小(B)
ans =.1×24000 84.

lassoglm.84值后停止,因为偏差太小而不能小lambda.价值观。避免过度装满,lassoglm.当拟合模型的偏差太小时停止与二进制响应的偏差太小时,忽略了预测变量。

你可以强迫lassoglm.通过使用更多条款'lambda'名称值对参数。例如,定义一组lambda.另外的值包括小于值的三个值S.Lambda.

minlambda = min(s.lambda);ExplicitLambda = [minlambda * [。1 .01 .001] s.lambda];

指定'lambda',explicitlambda当你打电话的时候lassoglm.功能。lassoglm.当拟合模型的偏差太小时,暂时停止,即使您明确提供一组lambda.价值观。

要节省时间,可以使用:

  • 较少lambda.,意味着少拟合

  • 交叉验证折叠较少

  • 更大的价值lambdaratio

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

tic [Bquick,Squick] = lassoglm(obs,y, y)“二”'numlambda',25,......'lambdaratio',1e-2,'简历'5);TOC.
经过时间为16.517331秒。

将新结果与第一个结果进行图形化比较。

Lassoplot(Bquick,Squick,'plottype''简历');传奇('显示'%显示传奇

Lassoplot(Bquick,Squick,'plottype''lambda''xscale''日志'

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