Precisione del treno vs precisione del test e matrice di confusione


11

Dopo aver sviluppato il mio modello predittivo utilizzando Random Forest ottengo le seguenti metriche:

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

Questi sono i risultati di questo codice:

  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)

Comunque sto diventando un po 'confuso per interpretare e spiegare questi valori.

Cosa mi dicono esattamente queste 3 misure sul mio modello?

Grazie!


Giusto per essere chiari, qui la tua matrice di confusione (e in generale) quando viene segnalata si basa su dati di test. Perché potresti averlo anche per i dati di allenamento su cui hai costruito la modalità.
TwinPenguins,

Ho dei dubbi per calcolare queste misure. Perché per Train Accuracy metti: (training_target, lasting_model.predict (training_features) e non (training_target, training_model.predict (test_target)?
Pedro Alves,

La precisione solo per la Classe 1 è 77/94?
Pravin

Risposte:


19

definizioni

  • Precisione: la quantità di classificazioni corrette / la quantità totale di classificazioni.
  • La precisione del treno: la precisione di un modello sugli esempi su cui è stata costruita.
  • L'accuratezza del test è l'accuratezza di un modello su esempi che non ha visto.
  • Matrice di confusione: una tabulazione della classe prevista (di solito in verticale) rispetto alla classe effettiva (quindi in orizzontale).

sovradattamento

Quello che vorrei inventare dei tuoi risultati è che il tuo modello è troppo adatto . Lo si può notare dalla grande differenza di precisione tra l'accuratezza del test e quella del treno. Overfitting significa che ha appreso le regole specificamente per il treno, tali regole non si generalizzano ben oltre il treno.

La tua matrice di confusione ci dice quanto è troppo adatto, perché la tua classe più grande costituisce oltre il 90% della popolazione. Supponendo che il test e il set di treni abbiano una distribuzione simile, qualsiasi modello utile dovrebbe ottenere una precisione superiore al 90%: un semplice modello 0R. Il tuo modello segna poco meno dell'80% sul set di test.

Approfondimento sulla matrice di confusione

Se osservassi la matrice di confusione relativamente (in percentuale) sembrerebbe così:

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

Si può dedurre dal totale in prima fila che il modello predice Classe 1 81% del tempo, mentre l'effettivo verificarsi di Classe 1 è del 94%. Quindi il tuo modello sta sottovalutando questa classe. Potrebbe essere il caso che abbia appreso regole specifiche (complesse) sul set di treni, che lavorano contro di te nel set di test.

Potrebbe anche valere la pena notare che anche se i falsi negativi della Classe 1 (punto 17%, riga 2, colonna 1)) danneggiano maggiormente le prestazioni complessive, i falsi negativi della Classe 2 (punto 4%, colonna riga 1) 2) sono in realtà più comuni rispetto alla popolazione totale delle rispettive classi (94%, 6%). Ciò significa che il tuo modello non è in grado di prevedere la Classe 1 , ma anche peggio nel prevedere la Classe 2 . La precisione solo per la Classe 1 è 77/99 mentre la precisione per la Classe 2 è 2/6.


1
Votato per una buona risposta. Forse per scopi educativi sarebbe meglio se tu potessi approfondire la base di "quanto si adatta troppo" agli elementi della matrice di confusione reale. Sono anche curioso di saperne di più.
TwinPenguins,

1
Ho aggiunto uno sguardo più approfondito, fammi sapere se questo è quello che stai cercando.
S van Balen,

Quindi, per esempio, quando ricevo questa confusione matirx: Train Accuracy :: 0.8147735305312381 Precisione test :: 0.8086616099828725 Confusion matrix [[9870 16] [2330 45]] Dice che il mio modello ha solo una precisione del 73%
Pedro Alves

Quella matrice di confusione corrisponderebbe alla precisione del test. (9870 + 45) / (9870 + 2330 + 16 + 45) = 0.80866161
S van Balen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.