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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 19:16   3709   0

01 模型简介


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

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

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

02 加载数据


####  加载包和读取数据library(glmnet)load(file="Lineartest")data ###### 分别存储 自变量和因变量x y 

03 采用glmnet() 建模


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

14c9dc16908b2c4301ef71d3507b9742.png

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

868312b9fae2135cc8361750d1dc0fe0.png

我们把交叉验证的结果作图,图中红点表示每个lambda对应的目标参量,两条虚线表示特殊的lambda值。打印出来,如下:
all:  cv.glmnet(x = x, y = y, type.measure = "mse", alpha = 1, family = "gaussian") Measure: Mean-Squared Error      Lambda  Measure  SE    Nonzeromin     359.7 62894636 14233156   41se    2312.4 74688861 20560265   3
min代表的是在所有的lambda值中,是mse最小的那一个值,1se是指在min一个方差范围内得到最简单模型的那一个lambda值,1se给出的是一个具备优良性能 且自变量个数最少的模型。

05 变量筛选


获得最优的lambda值后,就能得到该模型的变量系数和最优的变量。可以看出最终保留下来的变量是3,5,6。coef()中s是指选取的λ" role="presentation" style="padding-top: 1px; padding-bottom: 1px; font-family: Optima, "Lucida Sans", Calibri, Candara, Arial, source-han-serif-sc, "Source Han Serif SC", "Source Han Serif CN", "Source Han Serif TC", "Source Han Serif TW", "Source Han Serif", "Songti SC", "Microsoft YaHei", sans-serif; text-align: left; background-color: rgb(255, 255, 255); display: inline-block; line-height: 0; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial;">lambda值。λlambda值。 确定完特征变量后,可以结合多元线性回归模型做下一个部分的危险因素和预测部分。
coef(alpha1_fit,s=alpha1.fit$lambda.1se)(Intercept)   24980.4485APMAM           .     APSAB           .     APSLAKE       777.2792OPBPC           .     OPRC          1599.4269OPSLAKE       2199.9201
筛选出的变量,可以结合线性回归做下一部分的疾病危险因素分析、预测分析等。

- END -

eef1325446b22f8613aebf5616b26708.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP