Как вычислить значение R Squared для регрессии Лассо, используя glmnet в R
Я перебрал 8 вопросов stackru, говоря об этом вопросе. Но не было дано правильного практического ответа.
Я выполняю регрессию лассо в R, используя пакет glmnet:
fit.lasso <- glmnet(x,y)
plot(fit.lasso,xvar="lambda",label=TRUE)
Затем с помощью перекрестной проверки:
cv.lasso=cv.glmnet(x,y)
plot(cv.lasso)
Один учебник (последний слайд) предлагает следующее для R^2:
R_Squared = 1 - cv.lasso$cvm/var(y)
Но это не сработало.
Я хочу понять эффективность модели / производительность при подборе данных. Как обычно мы получаем R ^ 2 и корректируем R ^ 2 при выполнении функции lm() в r.
3 ответа
Если вы используете "гауссовское" семейство, вы можете получить доступ к значению R-квадрата с помощью
fit.lasso$glmnet.fit$dev.ratio
Я использую данные примера, чтобы продемонстрировать это
библиотека (glmnet)
загрузить данные
data(BinomialExample)
head(x)
head(y)
Для перекрестной проверки
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "class")
rsq = 1 - cvfit$cvm/var(y)
plot(cvfit$lambda,rsq)
Сначала подберите модель Лассо с выбранной лямбдой.
...
lasso.model <- glmnet(x=X,y=Y, family = "binomial", alpha=1, lambda = cv.model$lambda.min )
тогда вы можете получить псевдо R2 из подобранной модели
`lasso.model$dev.ratio`
это значение дает отклонение, объясненное моделью / нулевое отклонение