Как извлечь ошибки CV для оптимальной лямбды с помощью пакета glmnet?

Я использую пакет glment для регрессии в R. Я делаю перекрестную проверку, используя cv.fit<-cv.glmnet(x,y,...)и я получаю оптимальное лямбда, используя cvfit$lambda.min, но я хочу также получить соответствующее MSE(среднеквадратическая ошибка) для этой лямбды. кто-нибудь поможет мне получить это?

2 ответа

Решение

От ?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)’.
# ...

Так что в вашем случае перекрестно проверенные среднеквадратические ошибки находятся в cv.fit$cvm и соответствующие значения лямбда в 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]

Если вы используете glmnet с функцией потерь "mse", минимальная лямбда представляет минимальную MSE. Таким образом, вы можете найти это просто:

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

Другие вопросы по тегам