【发布时间】:2018-02-21 16:50:32
【问题描述】:
我有一个关于 R 中的 cv.glmnet() 函数的查询,它应该为岭回归找到参数 lambda 的“最佳”值。
在下面的示例代码中,如果您尝试使用小于 cv.glmnet() 给出的值的 lambda 值,您会发现误差平方和实际上远小于 cv.fit $lambda.min 给出。
我在很多数据集上都注意到了这一点。即使是 Gareth James 等人着名的“统计学习简介”(ISLR)一书中的例子也有这个问题。 (第 6.6.1 节使用 Hitters 数据集)。最小化 MSE 的 lambda 的实际值小于 ISLR 书中给出的值。训练数据和新的测试数据都是如此。
这是什么原因?那么,cv.fit$lambda.min 究竟返回了什么?
拉维
data(mtcars)
y = mtcars$hp
X = model.matrix(hp~mpg+wt+drat, data=mtcars)[ ,-1]
X
lambdas = 10^seq(3, -2, by=-.1)
fit = glmnet(X, y, alpha=0, lambda=lambdas)
summary(fit)
cv.fit = cv.glmnet(X, y, alpha=0, lambda=lambdas)
# what is the optimum value of lambda?
(opt.lambda = cv.fit$lambda.min) # 1.995262
y.pred = predict(fit, s=0.01, newx=X, exact=T) # gives lower SSE
# Sum of Squares Error
(sse = sum((y.pred - y)^2))
【问题讨论】:
标签: r regression