如何检查 LASSO 选择的特征

机器算法验证 r 特征选择 套索
2022-03-31 07:57:25

我正在使用 LASSO (glmnet) 进行特征选择。

但是,如何检查选择了哪些功能?

1个回答

coef在 glmnet 模型上使用该功能。

您将需要选择一个 lambda 值,因为不同的 lambda 将为您提供不同的功能集。通常这是通过交叉验证完成的。

/编辑:例如,使用cv.glment

library(glmnet)
x <- model.matrix(Sepal.Length~., iris)[,-1]
y <- iris$Sepal.Length
mod <- cv.glmnet(as.matrix(x), y, alpha=1)

要查看具有最小交叉验证误差的系数:

as.matrix(coef(mod, mod$lambda.min))
                           1
(Intercept)        2.1670759
Sepal.Width        0.5032347
Petal.Length       0.8137398
Petal.Width       -0.3127065
Speciesversicolor -0.6763395
Speciesvirginica  -0.9595409

要查看具有“最大 lambda 值使得误差在最小值的 1 个标准误差内”的系数:

as.matrix(coef(mod, mod$lambda.1se))
                            1
(Intercept)        2.14705035
Sepal.Width        0.59950383
Petal.Length       0.57550203
Petal.Width       -0.23632776
Speciesversicolor  0.00000000
Speciesvirginica  -0.04770282

您还可以选择所需的任何其他 lambda 值。为 0 的系数已从模型中删除。例如:

CF <- as.matrix(coef(mod, mod$lambda.1se))
CF[CF!=0,]
 (Intercept)      Sepal.Width     Petal.Length      Petal.Width Speciesvirginica 
  2.14705035       0.59950383       0.57550203      -0.23632776      -0.04770282 

如果我们使用 1se lambda,则 Speciesversicolor 虚拟变量将从模型中删除。