Dogłębne omówienie metryk klasyfikacji
Macierz pomyłek, precision, recall, F1, ROC-AUC i krzywa PR — wybór właściwej metryki.
Dogłębne omówienie metryk klasyfikacji to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Dokładność to nie wszystko
Dokładność to odsetek poprawnych predykcji, ale może wprowadzać w błąd w przypadku danych niezrównoważonych. Model przewidujący wyłącznie klasę większościową może osiągać 99% dokładności, a jednocześnie być bezużyteczny dla klasy rzadkiej.
Macierz pomyłek
Macierz pomyłek dzieli predykcje na prawdziwie dodatnie, fałszywie dodatnie, prawdziwie ujemne i fałszywie ujemne. Stanowi podstawę wszystkich pozostałych metryk.
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]
print(confusion_matrix(y_true, y_pred))
# rows = actual, columns = predictedPrecyzja
Precyzja = TP / (TP + FP). Ile spośród wszystkich elementów przewidzianych jako pozytywne rzeczywiście jest pozytywnych? Wysoka precyzja oznacza niewiele fałszywych alarmów. Jest istotna, gdy fałszywie dodatnie wyniki są kosztowne (np. w filtrach spamu).
from sklearn.metrics import precision_score
print(precision_score(y_true, y_pred))Czułość
Czułość = TP / (TP + FN). Ile spośród wszystkich rzeczywistych przypadków pozytywnych udało się wykryć? Wysoka czułość oznacza niewiele przeoczonych przypadków. Jest istotna, gdy fałszywie ujemne wyniki są kosztowne (np. podczas badań przesiewowych w kierunku chorób).
from sklearn.metrics import recall_score
print(recall_score(y_true, y_pred))Wynik F1
Wynik F1 to średnia harmoniczna precyzji i czułości: 2 * P * R / (P + R). Równoważy obie wartości i jest przydatny, gdy potrzebna jest jedna liczba opisująca niezrównoważone dane.
from sklearn.metrics import f1_score, classification_report
print(f1_score(y_true, y_pred))
print(classification_report(y_true, y_pred))Krzywa ROC i AUC
Krzywa ROC przedstawia współczynnik prawdziwie dodatnich wyników względem współczynnika fałszywie dodatnich wyników dla różnych progów. roc_auc_score podsumowuje tę krzywą: wartość 1.0 oznacza wynik idealny, a 0.5 losowe zgadywanie.
from sklearn.metrics import roc_auc_score
# needs probability scores, not hard labels
proba = model.predict_proba(Xte)[:, 1]
print(roc_auc_score(yte, proba))Krzywa precyzji i czułości
Krzywa PR przedstawia precyzję względem czułości dla różnych progów. Jest bardziej miarodajna niż ROC przy silnie niezrównoważonych klasach, ponieważ koncentruje się na klasie pozytywnej.
from sklearn.metrics import precision_recall_curve
prec, rec, thresh = precision_recall_curve(yte, proba)
# plot rec (x) vs prec (y) to see the tradeoffŚrednia precyzja
average_precision_score podsumowuje krzywą PR za pomocą jednej liczby (pola pod krzywą PR). Jest preferowaną metryką podsumowującą dla niezrównoważonej klasyfikacji binarnej.
from sklearn.metrics import average_precision_score
print(average_precision_score(yte, proba))ROC AUC a średnia precyzja
ROC AUC może wyglądać optymistycznie w przypadku niezrównoważonych danych, ponieważ dominują w nich prawdziwie ujemne wyniki. Średnia precyzja pomija prawdziwie ujemne wyniki i bardziej rzetelnie odzwierciedla wydajność dla rzadkiej klasy pozytywnej.
Wybór właściwej metryki
W przypadku niezrównoważonych problemów należy używać F1 lub średniej precyzji. ROC AUC warto stosować do oceny jakości rankingu przy zrównoważonych klasach. Należy wybrać precyzję, gdy fałszywe alarmy są kosztowne, oraz czułość, gdy kosztowne jest przeoczenie przypadków. Przed wyborem metryki należy zawsze określić priorytet.
Dostrajanie progu
Większość metryk zależy od progu decyzyjnego (domyślnie 0.5). Zmiana progu pozwala wymieniać precyzję na czułość. Należy użyć krzywej PR, aby wybrać próg spełniający wymagania biznesowe.
import numpy as np
# pick threshold for at least 0.9 precision
idx = np.argmax(prec >= 0.9)
chosen = thresh[idx]
preds = (proba >= chosen).astype(int)Szybki test
Sprawdź swoje rozumienie metryk.
Podsumowanie
Podsumowanie: Należy zacząć od confusion_matrix. Precyzja ogranicza liczbę fałszywych alarmów, czułość ogranicza liczbę przeoczeń, a F1 równoważy obie wartości. roc_auc_score mierzy jakość rankingu, natomiast average_precision_score i krzywa PR lepiej sprawdzają się przy niezrównoważonych danych. Należy dostroić próg do własnych priorytetów.
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 53
- Lekcje
- 225
Często zadawane pytania
Czy lekcja „Dogłębne omówienie metryk klasyfikacji” jest bezpłatna?
Tak — pełny tekst „Dogłębne omówienie metryk klasyfikacji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Dogłębne omówienie metryk klasyfikacji”?
Macierz pomyłek, precision, recall, F1, ROC-AUC i krzywa PR — wybór właściwej metryki. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Dogłębne omówienie metryk klasyfikacji”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Strategie walidacji krzyżowej
- Dogłębne omówienie metryk klasyfikacji
- Wyszukiwanie siatkowe i losowe
- Optymalizacja bayesowska z Optuna