Precisión del tren vs Precisión de prueba vs matriz de confusión

11

Después de desarrollar mi modelo predictivo utilizando Random Forest, obtengo las siguientes métricas:

        Train Accuracy ::  0.9764634601043997
        Test Accuracy  ::  0.7933284397683713
         Confusion matrix  [[28292  1474]
                            [ 6128   889]]

Estos son los resultados de este código:

  training_features, test_features, training_target, test_target, = train_test_split(df.drop(['bad_loans'], axis=1),
                                                  df['target'],
                                                  test_size = .3,
                                                  random_state=12)
clf = RandomForestClassifier()
trained_model = clf.fit(training_features, training_target)
trained_model.fit(training_features, training_target)
predictions = trained_model.predict(test_features)      

Train Accuracy: accuracy_score(training_target, trained_model.predict(training_features))
Test Accuracy: accuracy_score(test_target, predictions)
Confusion Matrix: confusion_matrix(test_target, predictions)

Sin embargo, me estoy confundiendo un poco al interpretar y explicar estos valores.

¿Qué me dicen exactamente estas 3 medidas sobre mi modelo?

¡Gracias!

Pedro Alves
fuente
Para ser claros, aquí su matriz de confusión (y en general) cuando se informa se basa en datos de prueba. Porque podrías tenerlo incluso para los datos de entrenamiento en los que construiste el modo.
TwinPenguins
Tengo algunas dudas para calcular estas medidas. ¿Por qué para Train Accuracy poner: (training_target, training_model.predict (training_features) y no (training_target, training_model.predict (test_target)?
Pedro Alves
¿La precisión solo para la clase 1 es 77/94?
Pravin

Respuestas:

19

Definiciones

  • Precisión: la cantidad de clasificaciones correctas / la cantidad total de clasificaciones.
  • La precisión del tren: la precisión de un modelo en ejemplos sobre los que se construyó.
  • La precisión de la prueba es la precisión de un modelo en ejemplos que no ha visto.
  • Matriz de confusión: una tabulación de la clase predicha (generalmente vertical) contra la clase real (por lo tanto, horizontalmente).

Sobreajuste

Lo que haría de sus resultados es que su modelo está sobreajustado . Se nota por la gran diferencia de precisión entre la prueba y la precisión del tren. El sobreajuste significa que aprendió reglas específicas para el conjunto de trenes, esas reglas no se generalizan mucho más allá del conjunto de trenes.

Su matriz de confusión nos dice cuánto está sobreajustando, porque su clase más grande representa más del 90% de la población. Suponiendo que el conjunto de prueba y entrenamiento tenga una distribución similar, cualquier modelo útil tendría que obtener una precisión superior al 90%: un modelo 0R simple lo haría. Su modelo puntúa un poco menos del 80% en el conjunto de pruebas.

Mira en profundidad la matriz de confusión

Si observara la matriz de confusión relativamente (en porcentajes) se vería así:

               Actual    TOT
               1    2
Predicted 1 | 77% | 4% | 81%  
Predicted 2 | 17% | 2% | 19%
TOT         | 94% | 6% |

Puede deducir del total en la primera fila que su modelo predice la Clase 1 el 81% del tiempo, mientras que la ocurrencia real de la Clase 1 es del 94%. Por lo tanto, su modelo está subestimando esta clase. Podría ser el caso de que aprendió reglas específicas (complejas) en el conjunto de trenes, que funcionan en su contra en el conjunto de pruebas.

También vale la pena señalar que, aunque los falsos negativos de la Clase 1 (17%, punto 2, fila 2, columna 1) están perjudicando más su rendimiento general, los falsos negativos de la Clase 2 (4%, punto, fila 1 columna 2) en realidad son más comunes con respecto a la población total de las clases respectivas (94%, 6%). Esto significa que su modelo es malo para predecir la Clase 1 , pero aún peor para predecir la Clase 2 . La precisión solo para la Clase 1 es 77/99, mientras que la precisión para la Clase 2 es 2/6.

S van Balen
fuente
1
Votado por una buena respuesta. Tal vez para fines educativos sería mejor si pudieras elaborar sobre la base de "cuánto está sobreajustando" en los elementos de la matriz de confusión real. También tengo curiosidad por aprender más.
TwinPenguins
1
Agregué una mirada más profunda, avíseme si esto es lo que está buscando.
S van Balen
Entonces, por ejemplo, cuando obtengo esta confusión matirx: Precisión del tren :: 0.8147735305312381 Precisión de la prueba :: 0.8086616099828725 Matriz de confusión [[9870 16] [2330 45]] Dice que mi modelo solo tiene una precisión del 73%
Pedro Alves
Esa matriz de confusión correspondería a la precisión de su prueba. (9870 + 45) / (9870 + 2330 + 16 + 45) = 0.80866161
S van Balen