1 votos

¿Cómo determinar si las probabilidades predichas por la regresión logística de sklearn son exactas?

Soy totalmente nuevo en el aprendizaje automático y estoy tratando de usar scikit-learn para hacer un modelo de regresión logística simple con 1 variable de entrada (X) y un resultado binario (Y). Mis datos consisten en 325 muestras, con 39 aciertos y 286 fallos. Los datos se han dividido en un conjunto de entrenamiento y otro de prueba (30%).

Mi objetivo es, en realidad, obtener las probabilidades de éxito predichas para una X determinada a partir de mis datos, no la predicción de la clasificación en sí. Es decir, tomaré las probabilidades predichas para utilizarlas en un modelo separado que estoy construyendo y no utilizaré la regresión logística como clasificador en absoluto. Así que es importante que las probabilidades predichas se ajusten realmente a los datos.

Sin embargo, me cuesta entender si mi modelo se ajusta bien a los datos o si las probabilidades calculadas son realmente exactas.

Estoy obteniendo las siguientes métricas:

  • Precisión de la clasificación: metrics.accuracy_score(Y_test, predicted) \= 0.92. Según entiendo esta métrica, el modelo tiene una alta probabilidad de hacer predicciones correctas, por lo que me parece que el modelo se ajusta bien.

  • Pérdida logarítmica: cross_val_score(LogisticRegression(), X, Y, scoring='neg_log_loss', cv=10) \= -0.26 Esta es probablemente la métrica más confusa para mí, y aparentemente la más importante, ya que es la precisión de las probabilidades predichas. Sé que cuanto más se acerque a cero la puntuación, mejor, pero ¿cuánto se acerca?

  • AUC: metrics.roc_auc_score(Y_test, probs[:, 1]) \= 0.9. Una vez más, esto tiene buena pinta, ya que cuanto más se acerque la puntuación ROC a 1, mejor.

  • Matriz de confusión: metrics.confusion_matrix(Y_test, predicted) \=

            [  88,  0]
               [8,  2]

    Entiendo que la diagonal da el número de predicciones correctas en el conjunto de entrenamiento, así que esto parece correcto.

  • Informe: metrics.classification_report(Y_test, predicted) \=

                precision    recall  f1-score   support
    
    0.0       0.92      1.00      0.96        88
    1.0       1.00      0.20      0.33        10
    
    avg / total       0.93      0.92      0.89        98

    Según este informe de clasificación, el modelo tiene una buena precisión, por lo que es un buen ajuste. No estoy seguro de cómo interpretar la recuperación o si este informe es una mala noticia para mi modelo: la documentación de sklearn indica que la recuperación es la capacidad de un modelo para encontrar todas las muestras positivas, por lo que una puntuación de 0,2 para una predicción de 1 significaría que sólo encuentra los positivos el 20% de las veces. Eso suena como un ajuste realmente malo a los datos.

Agradecería mucho que alguien me aclarara si estoy interpretando estas métricas de la manera correcta, y tal vez me aclare si mi modelo es bueno o falso. Además, si hay alguna otra prueba que pueda hacer para determinar si las probabilidades calculadas son exactas, por favor hágamelo saber.

Si no se trata de buenas puntuaciones métricas, agradecería que se me indicara por dónde seguir en términos de mejora.

¡Gracias!

1voto

Vitaly Puntos 53

Sklearn tiene un módulo para las curvas de calibración y también para la puntuación de Brier. Ambos abordan la cuestión de la precisión de las probabilidades. Una curva de calibración es un gráfico de dispersión en el que un eje es la probabilidad predicha y el otro es la probabilidad real. Se calcula tomando, por ejemplo, 100 casos, de los cuales Q=40 son realmente positivos. La probabilidad actaul de que estos 100 sean positivos es de 0,4. Pasamos cada uno de estos casos por el modelo de ajuste y producimos una estimación de la probabilidad para cada uno. Lo ideal sería que, si hiciéramos una media de estas 100 estimaciones, obtuviéramos 0,4. Con una curva de calibración, sólo hay que repetir este proceso para diferentes Qs y se debería obtener una línea diagonal. La puntuación de Brier es el MSE con respecto a esta línea.

Tienes razón en que la pérdida de registros es difícil de interpretar y también de relacionar.

La precisión/recuperación no son tan útiles para esto. Dependen de un umbral y se compensan.

0 votos

Gracias, es exactamente el tipo de ayuda que estoy buscando. Pero tengo otra pregunta tonta: Según mi resultado anterior, la precisión de la predicción del resultado no es muy buena (supongo que porque si hay, digamos, una probabilidad de 0,3 para predecir el éxito para un X dado, la clasificación predeciría un fracaso cada vez, incluso en los casos en que debería ser un éxito). ¿Es posible que un modelo de regresión logística pueda asignar probabilidades exactas pero seguir fallando en la predicción exacta?

0 votos

La clasificación depende de un umbral (comúnmente 0,5) tal que si P(éxito)>=0,1, clasifica como 1 y clasifica como 0 en caso contrario. Puede cambiar el umbral, por ejemplo a 0,0001. En este caso, si P(éxito)>=0,0001 clasifica como 1 y 0 en caso contrario. Puede imaginar que obtendrá muchas más predicciones de éxito de esta forma que si hubiera utilizado un umbral de 0,5. Con el umbral a 0,0001, la precisión podría no ser tan alta como con el umbral a 0,5. Así que la precisión depende del umbral y, por tanto, podría ser mala aunque el modelo esté dando probabilidades precisas.

0 votos

A veces, las probabilidades también son exactas en un determinado intervalo, aunque la exactitud global no sea grande. Un modelo con probabilidades de predicción globalmente muy buenas debe dar una buena precisión. Así que, para responder a tu pregunta, no creo que un modelo que ofrezca probabilidades exactas falle en la predicción exacta siempre que se elija un buen umbral, pero lo contrario no es cierto. Un modelo con una precisión muy alta podría dar probabilidades muy malas (algunos modelos como SVM hacen esto por naturaleza).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X