我正在使用 LASSO (glmnet) 进行特征选择。
但是,如何检查选择了哪些功能?
我正在使用 LASSO (glmnet) 进行特征选择。
但是,如何检查选择了哪些功能?
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 虚拟变量将从模型中删除。