ML Atlas

04 · Ocena · 6 min czytania · aktualizacja

Współczynnik Matthewsa (MCC) i kappa Cohena — metryki odporne na niezrównoważone klasy

W skrócie

MCC i kappa Cohena oceniają całą macierz pomyłek. Na Breast Cancer z 4,8% guzów złośliwych klasyfikator „zawsze łagodny” ma 95,2% trafności, ale MCC i kappę 0.

Co to jest

Współczynnik korelacji Matthewsa (MCC) i kappa Cohena (κ) to dwie miary jakości klasyfikacji, które biorą pod uwagę wszystkie cztery pola macierzy pomyłek: trafne pozytywy TP, trafne negatywy TN, fałszywe alarmy FP i przeoczenia FN. Obie przyjmują 1 przy pełnej zgodności, około 0 przy zgodności na poziomie przypadku i wartości ujemne, gdy jest gorzej niż przypadek.

MCC zaproponował Matthews (1975) do oceny przewidywań struktury białek. To zwykła korelacja Pearsona między dwiema zmiennymi zero-jedynkowymi: prawdziwą etykietą i prognozą. Kappę wprowadził Cohen (1960) jako miarę zgodności dwóch oceniających, którzy przypisują te same obiekty do kategorii. W uczeniu maszynowym jednym „oceniającym” bywa model, drugim — prawdziwa etykieta albo inny model.

Intuicja: trafność 95% nic nie znaczy, jeśli 95% przypadków należy do jednej klasy. MCC i κ pytają, o ile model jest lepszy od zgadywania, które zna tylko proporcje klas.

Mechanizm — dlaczego tak działa

wszystkie cztery pola macierzy pomyłekprognozataknieprawdataknieTPtrafneFNpominięteFPalarmTNtrafneTrafność:tylko przekątnaF1:pomija TNMCC i κ:wszystkie czteryi przypadekZawsze klasa większościowa: wysoka trafność,ale κ = 0, bo tyle samo daje zgadywanie.
Schemat: wszystkie cztery pola macierzy pomyłek

MCC = (TP · TN − FP · FN) / √((TP + FP)(TP + FN)(TN + FP)(TN + FN)). Licznik porównuje iloczyn trafień z iloczynem pomyłek, mianownik normuje wynik do przedziału od −1 do 1. Wzór jest symetryczny: zamiana, która klasa jest „pozytywna”, nie zmienia wyniku. Miara F1 tej własności nie ma, bo ignoruje TN.

κ = (p_o − p_e) / (1 − p_e), gdzie p_o to odsetek zgodnych decyzji (dla modelu i etykiet — trafność), a p_e to zgodność oczekiwana przypadkiem przy tych samych sumach brzegowych: p_e = Σ (odsetek klasy k u pierwszego oceniającego) · (odsetek klasy k u drugiego). Kappa mówi, jaką część drogi od „zgodności przypadkowej” do „zgodności pełnej” udało się przejść.

Dlaczego to pomaga przy niezrównoważonych klasach? Klasyfikator, który zawsze wybiera klasę większościową, ma wysoką trafność, ale p_o = p_e, więc κ = 0. W MCC jedna kolumna macierzy jest wtedy pusta (TP + FP = 0), a licznik równy zero. Chicco i Jurman (2020) pokazują, że MCC jest wysoki tylko wtedy, gdy model dobrze radzi sobie naraz z obiema klasami, i zalecają go zamiast trafności i F1 w klasyfikacji binarnej.

Gdzie to się psuje. Po pierwsze, MCC jest niezdefiniowany, gdy któryś wiersz albo kolumna macierzy pomyłek jest pusta: mianownik wynosi wtedy zero. Tak jest dla każdego klasyfikatora stałego. scikit-learn zwraca w takiej sytuacji 0 bez ostrzeżenia, więc „MCC = 0” może znaczyć zarówno „brak związku”, jak i „nie dało się policzyć”. Po drugie, kappa ma dwa paradoksy opisane przez Feinsteina i Cicchettiego (1990): przy bardzo nierównych proporcjach kategorii wysoka zgodność daje niską kappę, a przy nierównych sumach brzegowych obu oceniających kappa bywa wyższa niż przy równych. Po trzecie, obie miary oceniają decyzje po progu, nie prawdopodobieństwa — zmiana progu zmienia wynik. Po czwarte, żadna z nich nie uwzględnia kosztów: przeoczenie nowotworu i fałszywy alarm ważą tyle samo.

Na przykładzie

Breast Cancer Wisconsin, 143 przypadki testowe, w tym 53 złośliwe (37,1%), klasa pozytywna to „złośliwy”. Klasyfikator „zawsze łagodny” ma trafność 62,9%, F1 0, zbalansowaną trafność 0,5, a MCC i κ równe 0. Regresja logistyczna myli się dwa razy (2 przeoczenia, 0 fałszywych alarmów): trafność 98,6%, F1 0,981, MCC 0,970, κ 0,970. Las losowy ma te same 2 przeoczenia i 5 fałszywych alarmów: trafność 95,1%, MCC 0,897, κ 0,896. Przy prawie zrównoważonych klasach wszystkie miary układają modele w tej samej kolejności.

Niezrównoważona próbka: wszystkie 357 łagodnych guzów i 18 losowo wybranych złośliwych (4,8%), wyniki z 5-krotnej walidacji krzyżowej. Klasyfikator „zawsze łagodny” ma teraz trafność 95,2%, a MCC i κ nadal 0. Klasyfikator „zawsze złośliwy” ma trafność 4,8%, ale F1 aż 0,092 — choć nie odróżnia niczego. Jego MCC jest niezdefiniowany (scikit-learn podaje 0), a κ = 0.

Najciekawszy jest model z progiem 0,02 zamiast 0,5 (regresja logistyczna wykrywa wtedy wszystkie 18 guzów, kosztem 19 fałszywych alarmów). Trafność 94,9% jest niższa niż u „zawsze łagodnego”. Zbalansowana trafność 0,973 jest najwyższa ze wszystkich modeli, bo każdy fałszywy alarm to tylko 1/357 swoistości. F1 wynosi 0,655, MCC 0,679, κ 0,631. Trzy miary dają trzy różne werdykty, a MCC i κ leżą pośrodku: doceniają wykrycie wszystkich guzów, ale karzą za to, że na 37 alarmów 19 jest fałszywych.

Kappa jako zgodność dwóch modeli: regresja logistyczna i las losowy na 143 przypadkach testowych zgadzają się w 96,5% (5 różnic), κ = 0,925. W próbce niezrównoważonej zgadzają się w 99,2% (3 różnice), ale κ spada do 0,899 — przy rzadkiej klasie każda różnica waży więcej.

Paradoks kappy na dwóch oceniających i 100 przypadkach. Gdy obaj mówią „tak” w 85 przypadkach, „nie” w 5, a w 10 się różnią (po 5 w każdą stronę), zgodność wynosi 90%, a κ tylko 0,44. Przy tym samym odsetku zgodności, ale proporcjach 45 i 45, κ = 0,80. Gdy wszystkie 10 różnic idzie w jedną stronę (80, 10, 0, 10), κ rośnie do 0,62, a MCC wynosi 0,67.

Jak to policzono
  • Dane: load_breast_cancer, klasa pozytywna „złośliwy” (212 z 569); scikit-learn 1.9.1. Metryki: accuracy_score, f1_score(zero_division=0), balanced_accuracy_score, matthews_corrcoef, cohen_kappa_score.
  • Modele: DummyClassifier(strategy="most_frequent"), DummyClassifier(strategy="constant", constant=1), regresja logistyczna w potoku StandardScaler → LogisticRegression(max_iter=5000), RandomForestClassifier(n_estimators=300, random_state=0).
  • Zbiór pełny: train_test_split(test_size=0.25, stratify=y, random_state=0), test 143 (53 złośliwe). „Zawsze łagodny”: TP 0, FN 53, FP 0, TN 90; trafność 0,629; F1 0; F1 dla klasy łagodnej 0,773; zbalansowana 0,500; MCC 0; κ 0. Regresja: 51, 2, 0, 90; 0,986; 0,981; 0,981; MCC 0,970; κ 0,970. Las: 51, 2, 5, 85; 0,951; 0,936; 0,953; MCC 0,897; κ 0,896. κ regresja–las 0,925, zgodność 96,5%.
  • Próbka niezrównoważona: 357 łagodnych + 18 złośliwych wybranych np.random.default_rng(0).choice(..., 18, replace=False); n = 375; cross_val_predict z StratifiedKFold(5, shuffle=True, random_state=0).
  • Wyniki (TP, FN, FP, TN; trafność; F1; zbalansowana; MCC; κ): „zawsze łagodny” 0, 18, 0, 357; 0,952; 0; 0,500; 0; 0. „Zawsze złośliwy” 18, 0, 357, 0; 0,048; 0,092; 0,500; 0 (niezdefiniowany); 0. Regresja (próg 0,5) 16, 2, 0, 357; 0,995; 0,941; 0,944; 0,940; 0,938. Las 14, 4, 1, 356; 0,987; 0,848; 0,888; 0,845; 0,842. Regresja z progiem 0,02 na predict_proba z tych samych foldów: 18, 0, 19, 338; 0,949; 0,655; 0,973; 0,679; 0,631. κ regresja–las 0,899, zgodność 99,2%.
  • Paradoks (tak/tak, tak/nie, nie/tak, nie/nie): 85, 5, 5, 5 → p_o 0,90, p_e 0,82, κ 0,444, MCC 0,444; 45, 5, 5, 45 → p_e 0,50, κ 0,800; 80, 10, 0, 10 → p_e 0,74, κ 0,615, MCC 0,667.
  • Porównanie |κ| i |MCC|: wszystkie macierze 2 × 2 o polach 0–39 z niezerowym mianownikiem MCC i p_e < 1 (2 553 759 macierzy); |κ| > |MCC| w 0 przypadków.

Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)

W praktyce

  • sklearn.metrics.matthews_corrcoef(y_true, y_pred) i cohen_kappa_score(y1, y2); obie działają też dla wielu klas, choć wtedy minimum MCC nie musi wynosić −1.
  • cohen_kappa_score ma wariant ważony (weights="linear" lub "quadratic") dla kategorii uporządkowanych, np. skali ocen 1–5.
  • Gdy MCC wychodzi dokładnie 0, zajrzyj do macierzy pomyłek: pusta kolumna oznacza klasyfikator stały, a nie „zerową korelację”.
  • Przy niezrównoważonych klasach raportuj macierz pomyłek i co najmniej dwie miary (np. MCC i zbalansowaną trafność), a próg dobieraj osobno.
  • Kappę do oceny zgodności anotatorów podawaj razem z odsetkiem zgodności i proporcjami kategorii, żeby czytelnik mógł rozpoznać paradoks.

Najczęstsze pytania

Czym MCC różni się od kappy Cohena?
Dla klasyfikacji binarnej są zwykle bardzo bliskie (na naszych danych 0,970 wobec 0,970 i 0,845 wobec 0,842). Różnią się, gdy sumy brzegowe prognoz i etykiet są różne: MCC to korelacja, kappa to zgodność skorygowana o przypadek. Wartość bezwzględna kappy nie przekroczyła wartości bezwzględnej MCC w żadnej z 2,55 mln sprawdzonych macierzy 2 × 2.
Dlaczego nie wystarczy F1?
F1 pomija prawdziwe negatywy i zależy od tego, którą klasę nazwiemy pozytywną. Klasyfikator „zawsze złośliwy” dostał F1 0,092, choć nie niesie żadnej informacji. MCC i κ dały mu 0.
Jaka wartość kappy jest „dobra”?
Nie ma jednej granicy. Popularne słowne skale są umowne, a paradoksy kappy sprawiają, że ta sama liczba znaczy co innego przy różnych proporcjach kategorii. Porównuj kappę w tych samych warunkach, nie z tabelką.
Czy MCC zastępuje krzywe ROC i PR?
Nie. MCC ocenia jeden zestaw decyzji po progu. Krzywe ROC i PR opisują model przy wszystkich progach. Oba spojrzenia się uzupełniają.

Źródła

Zobacz też