Tengo una pregunta sobre la validez del uso de RMSE (Root Mean Squared Error) para comparar diferentes modelos logísticos. La respuesta es bien 0
o 1
y las predicciones son las probabilidades entre 0
- 1
?
¿La forma aplicada a continuación también es válida con las respuestas binarias?
# 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
Ahmed El-Gabbas
fuente
fuente
Respuestas:
Para comprender por qué "[la] respuesta es
0
o1
[pero] las predicciones son probabilidades entre0
-1
", debe comprender el tipo de modelo con el que está trabajando. Elimine los métodos de penalización y la validación cruzada, y está ejecutando una regresión logística básica. Los parámetros se ajustan a las probabilidades de registro / escala logística. Esto se llama el "predictor lineal". (Para obtener más información sobre esto, puede ayudarlo leer mi respuesta aquí: Diferencia entre modelos logit y probit .) Si conectó un valor x y simplificó, el valor sería el logaritmo natural predicho del modelo de las probabilidades de 'éxito' (1
) Si exponía ese valor, tendría las probabilidades predichas del modelodel éxito'. Para obtener una probabilidad pronosticada , necesitaría convertir las probabilidades en una probabilidad mediante probabilidades / (1 + probabilidades). (Para obtener más información sobre esto, puede ayudarlo leer mi respuesta aquí: Interpretación de predicciones simples a razones de posibilidades en regresión logística ). Esto aún no lo lleva a una clase predicha . Para obtener eso, necesitaría comparar su probabilidad pronosticada con algún umbral, y si es menor que el umbral pronostique 'falla' (0
), de lo contrario 'éxito' (1
). El umbral predeterminado más común es .5, pero esto a menudo no es óptimo. Lapredict.glm()
función de R le permitirá usartype="link"
, que genera predicciones en la escala del predictor lineal (es decir, antes de todas las transformaciones anteriores), pero eso no lo ayudará en este contexto. El usotype="response"
te da las probabilidades predichas.Cuando intenta evaluar qué tan bien un modelo de regresión binario (por ejemplo, logístico) predice una respuesta, tiene varias opciones:
.2, .4, .6, .8
, y haya agregado .01 a todas ellas (.21, .41, .61, .81
), el AUC sería el mismo a pesar de que ambos conjuntos de probabilidades predichas no pueden ser igualmente precisas.Es lamentable que el puntaje de Brier sea menos conocido y utilizado. Aunque la intuición relativa de estos métodos es: porcentaje correcto> AUC> puntaje de Brier, su verdadera información es lo contrario: puntaje de Brier> AUC> porcentaje correcto. Si solo desea una medida simple del rendimiento de su modelo, la distinción entre estos métodos es menos importante, pero si desea utilizar estos métodos para optimizar un modelo o seleccionar un modelo, utilizar un método inferior conducirá a un peor rendimiento .
fuente
Usar RMSE tiene mucho más sentido si su término de error se distribuye normalmente con media cero, pero en los resultados binarios no lo es. Por lo tanto, creo que debería usar diferentes enfoques que se prestan a resultados binarios, como comparar las diferencias de probabilidad.
fuente