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

01模型简介
在海量电子病历数据的挖掘过程中,在影像学与基因组学领域的数据被纳入医学统计分析。这些来自不同领域的高维数据常常面临着维度灾难的问题,在实际应用中往往需要面对高维变量特征的选择问题。在线性回归模型中通过在代价函数后附加L1范数约束项来实现变量选择与复杂度调节的方法被称为Lasso回归。该方法利用λ参数同时完成变量筛选与复杂度调节的过程,并已被广泛应用于医学领域的各种研究中
目前广泛认可用于拟合广义线性模型的R包是 glmnet ,它是由 T. J. Hastie 开发并维护的主要工具。
以下是一个线性回归案例,请大家介绍一下使用R软件来进行Lasso回归的方法。
02加载数据
#### 加载包和读取数据
library(glmnet)
load(file="Lineartest")
data <- Lineartest
###### 分别存储 自变量和因变量
x <- as.matrix(data[,1:6])
y <- data[,7]
03采用glmnet() 建模
alpha1_fit <- glmnet(x,y,alpha=1,family="gaussian")
plot(alpha1_fit,xvar="lambda",label=TRUE)
设参数α=1,则构建Lasso回归模型;对于连续型因变量,则设置family='gaussian';对于二分类变量,则设置family='binomial'。利用plot()函数可绘制图形以观察模型系数的变化情况:图形中每条曲线代表一个自变量的系数变化轨迹;纵轴表示各系数值;随着参数逐步增大时,最终收缩至零的那些变量通常被认为更为重要。

04 交叉验证
alpha1.fit <- cv.glmnet(x,y,type.measure = "mse",alpha=1,family="gaussian")
plot(alpha1.fit)
print(alpha1.fit)
我们通常使用交叉验证(cross validation)来进行模型选择的过程,并根据该过程对模型性能进行更精确的评估。在这一过程中,type.measure参数用于指定交叉验证中最小化的目标指标。对于因变量为数值型变量的情况,默认采用"mse";而对于二分类问题,则可以选择"class"、"deviance"等多种指标作为目标指标。

将交叉验证的结果绘制在图表中,并在图表中标注红点以表示每个lambda值对应的目标参数;同时,在图表上用虚线标识出具有特殊意义的lambda值;然后将该图表打印出来并附上相应的解释文字
all: cv.glmnet(x = x, y = y, type.measure = "mse", alpha = 1, family = "gaussian")
Measure: Mean-Squared Error
Lambda Measure SE Nonzero
min 359.7 62894636 14233156 4
1se 2312.4 74688861 20560265 3
min指代所有lambda值中对应于mse最小的那个值;1se指的是在variance的一个范围内找到最简单的模型对应的lambda值;1se提供了一个性能优秀且自变量数量最少的模型。
05 变量筛选
从获得最优lambda值后的情况来看,在此模型中可以获得相应的变量系数和最优解。经分析可知,在此过程中被保留下来的变量包括3、5和6。在函数coef()中所使用的s参数即代表所选择的lambda值。
coef(alpha1_fit,s=alpha1.fit$lambda.1se)
(Intercept) 24980.4485
APMAM .
APSAB .
APSLAKE 777.2792
OPBPC .
OPRC 1599.4269
OPSLAKE 2199.9201
筛选出来的变量,在后续阶段将被应用线性回归模型于疾病危险因素评估及预测研究中。
文章在公粽号:易学统计
文章里的干货更多哟
欢迎交流,欢迎提问
