У меня есть вопрос относительно правильности использования RMSE (среднеквадратичная ошибка) для сравнения различных логистических моделей. Ответ либо, 0
либо 1
и прогнозы вероятности между 0
- 1
?
Применяется ли приведенный ниже способ и для двоичных ответов?
# Using glmnet
require(glmnet)
load(url("https://github.com/cran/glmnet/raw/master /data/BinomialExample.RData"))
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "mse")
A <- predict(cvfit, newx = x, s = "lambda.min", type = "response")
RMSE1 <- mean((y - A)^2)
# 0.05816881
# glm
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
AAA <- predict(mylogit, newdata = mydata, type = "response")
RMSE2 <- mean((mydata$admit - AAA)^2)
# 0.194714
regression
logistic
generalized-linear-model
glmnet
rms
Ахмед Эль-Габбас
источник
источник
Ответы:
Чтобы понять, почему «[т] он является ответом
0
или1
[но] предсказаниями являются вероятности между0
-1
», вам необходимо понять тип модели, с которой вы работаете. Удалите методы наказания и перекрестную проверку, и вы запускаете базовую логистическую регрессию. Параметры вписываются в логарифмическую шкалу / логистическую шкалу. Это называется «линейным предиктором». (Более подробно об этом может помочь вам прочитать мой ответ здесь: Разница между логит-моделями и пробит-моделями .) Если вы включили значение x и упростили, это значение будет предсказанным естественным логарифмом модели шансов «успеха». (1
). Если вы возведете в степень это значение, вы получите прогнозные шансы модели«успеха». Чтобы получить прогнозируемую вероятность , вам необходимо преобразовать шансы в вероятность через шансы / (1 + шансы). (Подробнее об этом может помочь вам прочитать мой ответ здесь: Интерпретация простых предсказаний для отношений шансов в логистической регрессии .) Это все еще не приведет вас к предсказанному классу . Чтобы получить это, вам необходимо сравнить прогнозируемую вероятность с некоторым порогом, и, если он меньше порога, предсказать 'fail' (0
), иначе 'success' (1
). Наиболее распространенный порог по умолчанию - .5, но это часто не оптимально.predict.glm()
Функция R позволит вам использоватьtype="link"
, который выводит прогнозы в масштабе линейного предиктора (т. е. перед всеми этими преобразованиями выше), но это не поможет вам в этом контексте. Использованиеtype="response"
дает вам прогнозируемые вероятности.Когда вы пытаетесь оценить, насколько хорошо бинарная (например, логистическая) модель регрессии предсказывает ответ, у вас есть несколько вариантов:
.2, .4, .6, .8
и добавили 0,01 ко всем из них (.21, .41, .61, .81
), AUC будет одинаковым, даже если оба набора предсказанных вероятностей не могут быть одинаково точными.К сожалению, оценка Бриера менее известна и используется. Хотя относительная интуитивность этих методов такова: процент правильных> AUC> показатель Бриера, их истинная информативность противоположна: показатель Бриера> AUC> процент правильных. Если вам нужна только простая мера производительности вашей модели, различие между этими методами менее важно, но если вы хотите использовать эти методы для оптимизации модели или выбора модели, использование низшего метода приведет к снижению производительности. ,
источник
Использование RMSE имеет гораздо больше смысла, если ваш термин ошибки нормально распределен со средним нулем, но в двоичных результатах это не так. Поэтому я думаю, что вы должны использовать разные подходы, которые поддаются бинарным результатам, как, например, сравнение различий в вероятности.
источник