【发布时间】:2018-07-17 03:11:19
【问题描述】:
我已经阅读了一些关于此的问答,但我仍然不确定我是否理解,为什么基于相同样本和相同超参数的 glmnet 和插入符号模型的系数略有不同。非常感谢您的解释!
我正在使用插入符号来训练岭回归:
library(ISLR)
Hitters = na.omit(Hitters)
x = model.matrix(Salary ~ ., Hitters)[, -1] #Dropping the intercept column.
y = Hitters$Salary
set.seed(0)
train = sample(1:nrow(x), 7*nrow(x)/10)
library(caret)
set.seed(0)
train_control = trainControl(method = 'cv', number = 10)
grid = 10 ^ seq(5, -2, length = 100)
tune.grid = expand.grid(lambda = grid, alpha = 0)
ridge.caret = train(x[train, ], y[train],
method = 'glmnet',
trControl = train_control,
tuneGrid = tune.grid)
ridge.caret$bestTune
# alpha is 0 and best lambda is 242.0128
现在,我使用上面找到的 lambda(和 alpha)来训练整个数据集的岭回归。最后,我提取系数:
ridge_full <- train(x, y,
method = 'glmnet',
trControl = trainControl(method = 'none'),
tuneGrid = expand.grid(
lambda = ridge.caret$bestTune$lambda, alpha = 0)
)
coef(ridge_full$finalModel, s = ridge.caret$bestTune$lambda)
最后,使用完全相同的 alpha 和 lambda,我尝试使用 glmnet 包拟合相同的岭回归 - 并提取系数:
library(glmnet)
ridge_full2 = glmnet(x, y, alpha = 0, lambda = ridge.caret$bestTune$lambda)
coef(ridge_full2)
【问题讨论】:
-
尝试在交叉验证时询问
-
当然可以,但是为什么呢?或者您是说这不是编程问题,而是统计计算问题?
-
可能......我什至无法回答这个问题,因为我对这两个都不太精通:O,但也发帖看看会发生什么!
标签: r r-caret glmnet coefficients