如何进行高维变量筛选和特征选择(一)?Lasso回归

01 模型简介


       随着海量电子病历的挖掘,影像学、基因组学等数据进入医学统计分析,经常会面临对高维变量特征选择的问题,Lasso回归是在线性回归模型的代价函数后面加上L1范数的约束项的模型,它通过控制参数lambda进行变量筛选和复杂度调整,被广泛的用到医学领域。

       目前较好用的拟合广义线性模型的R包是glmnet,由Lasso回归的发明人,斯坦福统计学家 Trevor Hastie 领衔开发。

      下面结合一个线性回归的例子,和大家分享一下如何运用R软件进行Lasso回归。

02 加载数据

R代码1

03 采用glmnet() 建模

R代码2

        alpha=1表示搭建Lasso回归模型,若因变量为连续型因变量则使用family = "gaussian",若为二分类变量则使用family="binomial"。通过plot()可以做图观察模型的系数是如何变化的:图中的每一条曲线代表了每一个自变量系数的变化轨迹,纵坐标是系数值,上横坐标是此时模型中非零系数的个数。蓝色变量随着参数的不断增大,而最终系数被压缩为0的变量,说明比较重要。

图一

04  交叉验证

R代码3

我们都会用交叉验证(cross validation)拟合进而选取模型,同时对模型的性能有一个更准确的估计。这里的type.measure是用来指定交叉验证选取模型时希望最小化的目标参量。当因变量是连续变量的时候,一般会采用"mse",当因变量为二分类变量,可采用"class","deviance"等。

图二

     我们把交叉验证的结果作图,图中红点表示每个lambda对应的目标参量,两条虚线表示特殊的lambda值。打印出来,如下:

R代码4

      min代表的是在所有的lambda值中,是mse最小的那一个值,1se是指在min一个方差范围内得到最简单模型的那一个lambda值,1se给出的是一个具备优良性能且自变量个数最少的模型。

05 变量筛选

     获得最优的lambda值后,就能得到该模型的变量系数和最优的变量。可以看出最终保留下来的变量是3,5,6。coef()中s是指选取的lambda值。

R代码5

 筛选出的变量,可以结合线性回归做下一部分的疾病危险因素分析、预测分析等。

作者介绍:医疗大数据统计分析师,擅长R语言。

欢迎各位关注二维码,在后台留言,恳请斧正!

图三

你可能感兴趣的:(如何进行高维变量筛选和特征选择(一)?Lasso回归)