关于岭回归的质疑 - lambda的最优值

时间:2017-09-13 05:44:11

标签: r regression

我有一个关于R中的cv.glmnet()函数的查询,它应该找到"最佳"岭回归的参数lambda的值。

在下面的示例代码中,如果您尝试使用lambda的值小于cv.glmnet()给出的值,您会发现误差平方和实际上比cv.fit小得多$ lambda.min给出。

我注意到了许多数据集。甚至Gareth James等人着名的书籍#34;统计学习简介"(ISLR)中的例子也存在这个问题。 (使用Hitters数据集的第6.6.1节)。最小化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))

1 个答案:

答案 0 :(得分:1)

cv.glmnet搜索lambda最小化交叉验证得分,而不是MSE。

来自?cv.glmnet

  

该函数运行glmnet nfolds + 1次;第一个得到lambda   序列,然后余数来计算与每个的拟合   折叠省略。累积误差,平均误差和   计算折叠的标准偏差。