Czym jest macierz pomyłek?
Macierz pomyłek to tabela, która zlicza, ile elementów każdej rzeczywistej klasy model klasyfikacyjny przypisał do każdej przewidywanej klasy. Nazywa się ją też macierzą błędów (error matrix).
Jak ją czytać
W scikit-learn każdy wiersz to klasa rzeczywista, a każda kolumna to klasa przewidywana. Komórka w wierszu i i kolumnie j zlicza obserwacje klasy rzeczywistej i, które model umieścił w klasie j. Inne teksty zamieniają osie, więc najpierw sprawdź etykiety.
Komórki na przekątnej to poprawne przewidywania. Komórki poza przekątną to błędy, a każda z nich pokazuje, z jaką klasą model pomylił którą.
Przypadek binarny
Model z dwiema klasami, pozytywną i negatywną, daje cztery komórki.
| Przewidywane pozytywne | Przewidywane negatywne | |
|---|---|---|
| Rzeczywiście pozytywne | prawdziwie pozytywne (TP) | fałszywie negatywne (FN) |
| Rzeczywiście negatywne | fałszywie pozytywne (FP) | prawdziwie negatywne (TN) |
Fałszywie negatywny to rzeczywisty pozytyw, który model uznał za negatywny. Fałszywie pozytywny to rzeczywisty negatyw, który model uznał za pozytywny.
Metryki z komórek
- Dokładność = (TP + TN) / wszystkie obserwacje.
- Precyzja = TP / (TP + FP).
- Czułość (recall) = TP / (TP + FN).
- F1 = 2TP / (2TP + FP + FN).
Przykład z dokumentacji scikit-learn: 8 obserwacji daje TN = 2, FP = 1, FN = 2 i TP = 3. Dokładność wynosi 5/8 = 0,625, precyzja 3/4 = 0,75, czułość 3/5 = 0,6, a F1 6/9 = 0,67.
Dla więcej niż dwóch klas oblicz precyzję i czułość dla każdej klasy. Zrównoważona dokładność to średnia czułości wszystkich klas. Kappa Cohena i współczynnik korelacji Matthewsa (MCC) również korzystają z całej macierzy. Kappa mieści się między -1 a 1. MCC ma maksimum +1, a przy więcej niż dwóch klasach jego minimum mieści się między -1 a 0.
Dlaczego nie sama dokładność
Na danych niezbalansowanych dokładność może ukryć model, który nie znajduje niczego. Macierz pokazuje rzeczywiste pozytywy i to, dokąd trafiły, więc od razu ujawnia ten problem.
Często zadawane pytania
- Czy wiersze to klasa rzeczywista, czy przewidywana?
- Zależy od źródła. W scikit-learn każdy wiersz to klasa rzeczywista, a każda kolumna to klasa przewidywana. Inne teksty zamieniają osie. Przed odczytaniem liczb przeczytaj etykiety osi.
- Jaka jest różnica między precyzją a czułością?
- Precyzja to udział trafnych przewidywań pozytywnych: TP / (TP + FP). Czułość (recall) to udział rzeczywistych przypadków pozytywnych, które model znajduje: TP / (TP + FN). Czułość nazywa się też sensitivity.
- Dlaczego sama dokładność nie wystarcza do oceny modelu?
- Dokładność może być wysoka dla modelu, który jest bezużyteczny. Jeśli 99 z 100 elementów jest negatywnych, model, który zawsze przewiduje wynik negatywny, uzyska 99 procent. Macierz pokazuje ten problem, ponieważ każdy rzeczywisty pozytyw jest fałszywie negatywny.
- Co pokazuje znormalizowana macierz pomyłek?
- Pokazuje udziały zamiast liczności. W scikit-learn normalize='true' dzieli każdy wiersz przez jego sumę, więc komórka na przekątnej to czułość tej klasy. normalize='pred' dzieli każdą kolumnę, a normalize='all' dzieli przez liczbę obserwacji.
Bibliografia
- sklearn-model-evaluation
- scikit-learn User Guide, 3.4 Metrics and scoring: quantifying the quality of predictions scikit-learn
- sklearn-confusion-matrix-api
- sklearn.metrics.confusion_matrix scikit-learn
- google-ml-crash-course-metrics
- Machine Learning Crash Course: Classification, accuracy, precision and recall Google for Developers
- wikipedia-confusion-matrix
- Confusion matrix Wikipedia
To wpis referencyjny. TarmacView świadczy usługi inspekcji dronami i nie sprzedaje sprzętu ani materiałów opisanych w tym słowniczku.