R 函数 cv.glm(库:boot)计算广义线性模型的估计 K 折交叉验证预测误差并返回 delta。将此函数用于套索回归(库:glmnet)是否有意义,如果是,如何执行?glmnet 库使用交叉验证来获得最佳转弯参数,但我没有找到任何交叉验证最终 glmnet 方程的示例。
R中的交叉验证套索回归
机器算法验证
r
回归
交叉验证
套索
网络
2022-03-03 22:49:05
1个回答
glmnet
关于如何在mtcars
数据集上对 lasso 进行香草普通交叉验证的示例。
加载数据集。
准备特征(自变量)。他们应该是
matrix
一流的。df
将包含的分类变量转换为最简单的方法matrix
是 viamodel.matrix
。请注意,默认情况下glmnet
适合截距,因此您最好从模型矩阵中去除截距。准备响应(因变量)。让我们将高于平均水平的汽车编码
mpg
为高效('1'),其余为低效('0')。将此变量转换为因子。通过 运行交叉验证
cv.glmnet
。它将alpha=1
从默认glmnet
参数中拾取,这就是您所要求的:套索回归。通过检查交叉验证的输出,您可能对至少 2 条信息感兴趣:
lambda,可以最大限度地减少交叉验证的错误。
glmnet
实际上提供了 2 个 lambda:lambda.min
和lambda.1se
. 这是您作为执业统计学家使用的判断电话。产生的正则化系数。
请按照上述说明查看 R 代码:
# Load data set
data("mtcars")
# Prepare data set
x <- model.matrix(~.-1, data= mtcars[,-1])
mpg <- ifelse( mtcars$mpg < mean(mtcars$mpg), 0, 1)
y <- factor(mpg, labels = c('notEfficient', 'efficient'))
library(glmnet)
# Run cross-validation
mod_cv <- cv.glmnet(x=x, y=y, family='binomial')
mod_cv$lambda.1se
[1] 0.108442
coef(mod_cv, mod_cv$lambda.1se)
1
(Intercept) 5.6971598
cyl -0.9822704
disp .
hp .
drat .
wt .
qsec .
vs .
am .
gear .
carb .
mod_cv$lambda.min
[1] 0.01537137
coef(mod_cv, mod_cv$lambda.min)
1
(Intercept) 6.04249733
cyl -0.95867199
disp .
hp -0.01962924
drat 0.83578090
wt .
qsec .
vs .
am 2.65798203
gear .
carb -0.67974620
最后评论:
其它你可能感兴趣的问题