04 · Ocena · 4 min czytania · Interaktywne · aktualizacja
Czym jest AUC-ROC i dlaczego próg decyzji go nie zmienia?
W skrócie
ROC AUC to prawdopodobieństwo, że losowy przykład pozytywny dostanie wyższy wynik niż losowy negatywny. Zależy od kolejności wyników, nie od progu.
Co to jest
ROC AUC (area under the ROC curve) to pole pod krzywą ROC, która dla każdego możliwego progu decyzji pokazuje odsetek trafionych pozytywów (recall, TPR) względem odsetka fałszywych alarmów (FPR). Liczbowo AUC równa się prawdopodobieństwu, że losowo wybrany przykład pozytywny dostanie od modelu wyższy wynik niż losowo wybrany negatywny.
AUC = 1 oznacza idealne uporządkowanie, 0,5 — losowe. To standardowa metryka klasyfikacji dwuklasowej, niezależna od progu i od proporcji klas, często używana w konkursach i w medycynie.
Mechanizm — dlaczego tak działa
Krzywa ROC powstaje tak: sortujemy przykłady według wyniku modelu, przesuwamy próg od najwyższego wyniku do najniższego i w każdym punkcie zapisujemy parę (FPR, TPR). Każdy przykład pozytywny przesuwa krzywą w górę, każdy negatywny — w prawo. Pole pod nią to odsetek par (pozytyw, negatyw), w których pozytyw stoi wyżej; remisy liczą się po połowie. Stąd równoważność ze statystyką U Manna–Whitneya: AUC = U / (n₊ · n₋) (Hanley i McNeil 1982).
Konsekwencja, która zaskakuje: we wzorze nie ma progu. AUC ocenia uporządkowanie (ranking), a nie decyzje. Przesunięcie progu zmienia recall, precyzję, accuracy i balanced accuracy, bo te oceniają decyzje przy jednym cięciu, ale nie zmienia AUC ani trochę. Tak samo każde ściśle rosnące przekształcenie wyników — temperatura, logarytm, kalibracja Platta — zachowuje kolejność, więc zachowuje AUC. Stały wynik dla wszystkich przykładów to same remisy, czyli AUC = 0,5.
AUC nie zależy też od proporcji klas, bo liczy pary, a nie wiersze. To zaleta przy porównywaniu modeli, ale i pułapka: przy bardzo rzadkiej klasie pozytywnej AUC bywa wysokie, choć precyzja jest fatalna, bo FPR liczony względem ogromnej klasy negatywnej pozostaje mały nawet przy wielu fałszywych alarmach. Wtedy lepsza jest krzywa precyzja–recall i pole pod nią (average precision).
Zastrzeżenie: AUC mierzy jakość rankingu, nie jakość prawdopodobieństw — model z AUC 0,95 może być fatalnie skalibrowany. Jeśli ostatecznie podejmujesz decyzję przy jednym progu, AUC jest tylko pośrednim wskaźnikiem.
Na przykładzie
Breast Cancer Wisconsin, test na 171 guzach (64 złośliwe, random_state=0). Celowo słaby model — regresja logistyczna tylko na średniej teksturze i gładkości guza — ma AUC 0,77; ten sam wynik daje wzór U / (n₊ · n₋) policzony przez scipy.stats.mannwhitneyu. Przy progu 0,2 model łapie 83% guzów złośliwych przy 49% fałszywych alarmów (BA 0,67), przy progu 0,3 — 78% przy 38% (BA 0,70), przy 0,5 — 53% przy 19% (BA 0,67), a przy 0,7 — 30% przy 5% (BA 0,63). Balanced accuracy, recall i FPR zmieniają się z progiem; AUC przez cały czas wynosi 0,77.
Podzielenie logitów przez temperaturę 0,5, 2 albo 5 zmieniło średnie przewidywane prawdopodobieństwo z 0,32 do 0,46, a AUC zostało dokładnie 0,772. Wynik stały dla wszystkich guzów daje 0,5, a pełny model na 30 cechach — 0,99.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- scikit-learn:
roc_auc_score(y_true, scores)— podawaj prawdopodobieństwa albo wyniki ciągłe, nie twarde etykiety zpredict(), które zostawiają z krzywej jeden punkt wewnętrzny;roc_curve,RocCurveDisplay. - Wieloklasowo:
roc_auc_score(..., multi_class="ovr")lub"ovo"z uśrednieniem. - XGBoost/LightGBM:
eval_metric="auc"przy early stoppingu. - AUC poniżej 0,5 oznacza, że model porządkuje odwrotnie — najczęściej to błąd znaku lub zamienione etykiety.
- Typowy błąd: strojenie progu „pod AUC” — próg nie ma na AUC wpływu; stroi się go pod metryki decyzyjne.
Najczęstsze pytania
- Jak interpretować AUC równe 0,8?
- Jeśli wylosujesz jeden przykład pozytywny i jeden negatywny, w 80% przypadków model da pozytywnemu wyższy wynik. 0,5 to zgadywanie, 1,0 to idealne uporządkowanie. Wartość mówi o rankingu, nie o tym, ile decyzji przy wybranym progu będzie trafnych.
- Dlaczego AUC nie zmienia się po zmianie progu?
- Bo AUC jest policzone ze wszystkich progów naraz — to pole pod krzywą, którą próg przebiega. Wybór progu to wybór punktu na tej krzywej; krzywa i pole pod nią zostają. Zmiana progu zmienia recall, precyzję i accuracy, nie AUC.
- ROC AUC czy average precision?
- Przy w miarę zbalansowanych klasach ROC AUC jest standardem i łatwo go interpretować. Przy bardzo rzadkiej klasie pozytywnej ROC AUC bywa optymistyczne; krzywa precyzja–recall pokazuje wtedy prawdziwy koszt fałszywych alarmów.
Źródła
- Fawcett, T. (2006). "An introduction to ROC analysis". Pattern Recognition Letters 27(8), 861–874. doi:10.1016/j.patrec.2005.10.010
- Hanley, J. A., McNeil, B. J. (1982). "The meaning and use of the area under a receiver operating characteristic (ROC) curve". Radiology 143(1), 29–36.
- Davis, J., Goadrich, M. (2006). "The relationship between precision-recall and ROC curves". ICML.
- Géron, A. (2022). Hands-On Machine Learning, 3rd ed., O'Reilly, rozdz. 3 "Classification" (the ROC curve).
- scikit-learn: "Receiver operating characteristic (ROC)". https://scikit-learn.org/stable/modules/model_evaluation.html#roc-metrics