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
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 potokuStandardScaler→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_predictzStratifiedKFold(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_probaz 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)icohen_kappa_score(y1, y2); obie działają też dla wielu klas, choć wtedy minimum MCC nie musi wynosić −1.cohen_kappa_scorema 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
- Matthews B. W. „Comparison of the predicted and observed secondary structure of T4 phage lysozyme”, Biochimica et Biophysica Acta (BBA) — Protein Structure 405(2), 1975, s. 442–451. https://doi.org/10.1016/0005-2795(75)90109-9
- Cohen J. „A Coefficient of Agreement for Nominal Scales”, Educational and Psychological Measurement 20(1), 1960, s. 37–46. https://doi.org/10.1177/001316446002000104
- Chicco D., Jurman G. „The advantages of the Matthews correlation coefficient (MCC) over F1 score and accuracy in binary classification evaluation”, BMC Genomics 21, 2020, art. 6. https://doi.org/10.1186/s12864-019-6413-7
- Feinstein A. R., Cicchetti D. V. „High agreement but low kappa: I. The problems of two paradoxes”, Journal of Clinical Epidemiology 43, 1990, s. 543–549. https://doi.org/10.1016/0895-4356(90)90158-L
- Dokumentacja scikit-learn, „Metrics and scoring: quantifying the quality of predictions”: https://scikit-learn.org/stable/modules/model_evaluation.html
Czy to było pomocne?
Dzięki! To pomaga nam poprawiać Atlas.