4

我在 R 中使用glment包进行回归。我使用 进行交叉验证cv.fit<-cv.glmnet(x,y,...),并使用cvfit$lambda.min. 但我还想获得该MSElambda 的对应(均方误差)。有人会帮我拿到它吗?

4

2 回答 2

9

来自?cv.glmnet

# ...
# Value:
#
#     an object of class ‘"cv.glmnet"’ is returned, which is a list with
#     the ingredients of the cross-validation fit. 
#
# lambda: the values of ‘lambda’ used in the fits.
#
#   cvm: The mean cross-validated error - a vector of length
#       ‘length(lambda)’.
# ...

因此,在您的情况下,交叉验证的均方误差在 incv.fit$cvm并且相应的 lambda 值在cv.fit$lambda.

要找到最小 MSE,您可以使用which如下:

i <- which(cv.fit$lambda == cv.fit$lambda.min)
mse.min <- cv.fit$cvm[i]

或更短

mse.min <- cv.fit$cvm[cv.fit$lambda == cv.fit$lambda.min]
于 2014-06-03T20:51:59.267 回答
4

如果您使用损失函数“mse”运行 glmnet,则最小 lambda 表示最小 MSE。因此,您可以通过以下方式找到它:

mse.min <- min(cv.fit$cvm)

于 2014-12-02T04:35:53.053 回答