Para comprender por qué "[la] respuesta es 0
o 1
[pero] las predicciones son probabilidades entre 0
- 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. La predict.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 uso type="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:
- La primera, y la más intuitiva, es comparar la clase predicha con la clase observada y calcular el porcentaje correcto. Aunque es intuitivo, tiene problemas. Es contingente, en parte, que el umbral sea óptimo, además de que los otros aspectos del modelo se ajusten adecuadamente. También arroja mucha información (es decir, qué tan lejos del umbral está la probabilidad pronosticada), lo cual no es algo bueno.
- Su próxima opción es usar el área bajo la curva de Características de funcionamiento del receptor (ROC). La mayoría de la gente usa esta opción; es considerablemente mejor que usar el porcentaje correcto. Sin embargo, lo que la mayoría de las personas no se dan cuenta del AUC es que en realidad mide el orden apropiado de sus predicciones, no su precisión real. Es decir, si hubiera predicho probabilidades para cuatro observaciones de
.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.
- La tercera forma de evaluar su modelo sería utilizar una función de puntaje adecuada. Quizás la función de puntaje más popular en su contexto es el puntaje Brier . Como señala @fcoppens, el método en su código es el puntaje Brier. Evaluará no solo si el modelo predice adecuadamente que una observación es más probable que sea un "éxito" que otra observación, sino si la probabilidad predicha del modelo es realmente correcta.
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 .