Matriz de Precisão de trem vs Precisão de teste vs

11

Depois de desenvolver meu modelo preditivo usando a Floresta Aleatória, recebo as seguintes métricas:

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

Estes são os resultados deste 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)

No entanto, estou ficando um pouco confuso para interpretar e explicar esses valores.

O que exatamente essas três medidas me dizem sobre o meu modelo?

Obrigado!

Pedro Alves
fonte
Só para esclarecer, aqui sua matriz de confusão (e em geral) quando é relatada é baseada em dados de teste. Porque você pode tê-lo mesmo para dados de treinamento nos quais você construiu o modo.
TwinPenguins
Tenho algumas dúvidas para calcular essas medidas. Porque para Train Precisão put: (training_target, trained_model.predict (training_features) e não (training_target, trained_model.predict (test_target)?
Pedro Alves
A precisão apenas para a Classe 1 é 77/94?
Pravin

Respostas:

19

Definições

  • Precisão: a quantidade de classificações corretas / a quantidade total de classificações.
  • A precisão do trem: a precisão de um modelo nos exemplos nos quais ele foi construído.
  • A precisão do teste é a precisão de um modelo nos exemplos que ele não viu.
  • Matriz de confusão: Uma tabulação da classe prevista (geralmente verticalmente) em relação à classe real (portanto, horizontalmente).

Sobreajuste

O que eu comporia dos seus resultados é que seu modelo está se ajustando demais . Você pode perceber isso pela grande diferença de precisão entre o teste e a precisão do trem. Sobreajustar significa que aprendeu regras especificamente para o conjunto de trens, essas regras não generalizam muito além do conjunto de trens.

Sua matriz de confusão nos diz o quanto ela é super ajustada, porque sua maior classe representa mais de 90% da população. Supondo que você teste e treine conjunto tenha uma distribuição semelhante, qualquer modelo útil teria que ter mais de 90% de precisão: um modelo 0R simples. Seu modelo obtém pouco menos de 80% no conjunto de testes.

Olhe em profundidade a matriz de confusão

Se você olhar para a matriz de confusão relativamente (em porcentagens), ficaria assim:

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

Você pode deduzir do total na primeira linha que seu modelo prediz a Classe 1 81% das vezes, enquanto a ocorrência real da Classe 1 é 94%. Portanto, seu modelo está subestimando essa classe. Pode ser que tenha aprendido regras específicas (complexas) no conjunto de trens, que funcionam contra você no conjunto de testes.

Também vale a pena notar que, embora os falsos negativos da Classe 1 (ponto de 17%, linha 2, coluna 1)) estejam prejudicando mais o seu desempenho geral, os falsos negativos da Classe 2 (coluna de 4%, linha 1) 2) são realmente mais comuns em relação à população total das respectivas classes (94%, 6%). Isso significa que seu modelo é ruim em prever a Classe 1 , mas ainda pior em prever a Classe 2 . A precisão apenas para a Classe 1 é 77/99 enquanto a precisão para a Classe 2 é 2/6.

S van Balen
fonte
1
Votado para obter uma boa resposta. Talvez para fins educacionais, seria melhor se você pudesse elaborar uma base "quanto é superajustável" nos elementos reais da matriz de confusão. Também estou curioso para saber mais.
TwinPenguins
1
Adicionei um olhar mais aprofundado, deixe-me saber se é isso que você está procurando.
Balen
Assim, por exemplo, quando estou obtendo esse matirx de confusão: Precisão do trem :: 0.8147735305312381 Precisão do teste: 0.8086616099828725 Matriz de confusão [[9870 16] [2330 45]] Diz que meu modelo tem apenas uma precisão de 73%
Pedro Alves
Essa matriz de confusão corresponderia à precisão do seu teste. (9870 + 45) / (9870 + 2330 + 16 + 45) = 0,80866161
S van Balen