美文网首页生信数据库公共数据挖掘机器学习
如何进行高维变量筛选和特征选择(一)?Lasso回归

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

作者: 小易学统计 | 来源:发表于2020-06-26 14:34 被阅读0次

    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回归

        本文链接:https://www.haomeiwen.com/subject/jyfufktx.html