Как извлечь ошибки 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)