Krzywe ROC i inne techniki oceny jakości klasyfikatorów Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego 20 maja 2009
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Krzywe ROC są użyteczną techniką selekcji klasyfikatorów i wizualizacji ich skuteczności. Są one często używane w zagadnieniach decyzyjnych w medycynie, a w ostatnich latach coraz częściej używa się ich w zagadnieniach uczenia maszyn oraz eksploracji danych. W statystycznych badaniach zmiennej binarnej korzysta się z miar takich jak wrażliwość i specyficzność. Co oznaczają te miary można łatwo zrozumieć na prostym przykładzie.
Przykład Załóżmy, że przeprowadzamy test na obecność wirusa grypy A/H1N1. W grupie osób badanych występują osoby, które są zarażone oraz osoby zdrowe. Jeżeli i-ta osoba jest zarażona to zaznaczamy y i = 1. Przeprowadzając badanie krwi podajemy wynik testu, albo inaczej mówiąc prognozujemy, czy dana osoba jest zarażona. Jeżeli wynik jest pozytywny zapisujemy ŷ i = 1. Jeżeli test wskazuje, że badany jest zdrowy to ŷ i = 0.
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Niestety każdy test ma margines błędu w związku z tym możemy błędnie zaklasyfikować badanych: osoba sklasyfikowana jako zdrowa jest chora - wynik błędnie wykluczający, błąd II rodzaju (false negative) osoba sklasyfikowana jako zdrowa jest zdrowa - wynik poprawnie wykluczający (true negative) osoba sklasyfikowana jako chora jest zdrowa - wynik błędnie włączający, błąd I rodzaju (false positive) osoba sklasyfikowana jako chora jest chora - wynik poprawnie włączający (true positive)
Wynik badania chory zdrowy Stan faktyczny chory zdrowy True False Positive Positive False True Negative Negative
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Wrażliwością nazywamy prawdopodobieństwo, że chorą osobę nasz test zakwalifikuje poprawnie jako chorą (true positive rate). wrażliwość = liczba poprawnie zakwalifikowanych chorych liczba zakwalifikowanych jako chorzy Specyficznością nazywamy prawdopodobieństwo, że osobę zdrową nasz test zakwalifikuje poprawnie jako zdrową (true negative rate). liczba poprawnie zakwalifikowanych zdrowych specyficzność = liczba zakwalifikowanych jako zdrowi
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
to dwu-wymiarowy wykresy przedstawiające wrażliwość na osi Y oraz wartości 1 specyficzność na osi X. Wizualizujemy w ten sposób stosunek korzyści (true positive) do kosztów (false positive) Dyskretny wykres ROC
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Znaczenie punktów krańcowych Punkt (0, 0) oznacza strategię nigdy nie uznawania badanego za chorego, dzięki temu unikamy błędów I rodzaju ale też nie zyskujemy prawidłowych wskazań true positive, Punkt (1, 1) oznacza strategię przeciwną, zawsze uznajemy badanego za chorego, Punkt (0, 1) oznacza idealną klasyfikację Punkty na prostej y = x oznaczają strategię losowego zgadywania. Dla przykłądu jeżeli wynik testu na grypę daje wynik pozytywny z prawdopodobieństwem 50% możemy spodziewać się, że połowa wyników pozytywnych jak i negatywnych będzie prawdziwa co daje punkt (0, 5; 0, 5). Jeżeli w 90% przypadków klasyfikuje jako chorych to 90% wyników pozytywnych i 90% negatywnych będzie prawdziwa dając punkt (0, 9; 0, 9).
Który z punktów jest lepszy? Nieformalnie mówimy, że jeden punkt jest lepszy od drugiego jeżeli znajduje się dalej na północny zachód (wrażliwość i specyficzność są wyższe) od pierwszego. Klasyfikatory dające punkty po lewej stronie i przy osi X są uznawane za konserwatywne uznają za chorą osobę tylko jeżeli są na to silne dowody. Zaś klasyfikatory dające punkty w górnym prawym rogu można określić jako liberalne dają wynik pozytywny nawet przy niewielkich przesłankach.
Przykład krzywej ROC 1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Przykład krzywej ROC Klasyfikator Naive Bayes lub sieci neuronowe w naturalny sposób dają wartość prawdopodobieństwa lub ocenę, wartość numeryczną która określa stopień przynależności do danej klasy. Taki klasyfikator w połączeniu z wartością graniczną daje klasyfikator dyskretny: jeżeli ocena jest powyżej wartości granicznej uznajemy badanego za chorego a w przeciwnym wypadku nie. Każda wartość graniczna daje inny punkt na przestrzeni ROC, obliczając wrażliwość i specyficzność dla każdej wartości granicznej ([0, 1] dla prawdopodobieństwa, [, + ] dla oceniania)
Przykład krzywej ROC 1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Przykład Przykład krzywej ROC L.p. Stan Prawd. W.g. Wraż. Spec. 1-Spec. 1 1 chory 0, 9 0, 9 6 1 0 1 3 1 2 zdrowy 0, 7 0, 7 6 4 4 2 3 1 3 chory 0, 55 0, 55 6 4 4 2 2 2 4 zdrowy 0, 53 0, 53 6 4 4 3 2 2 5 chory 0, 51 0, 51 6 4 4 4 2 2 6 chory 0, 4 0, 4 6 4 4 5 2 2 7 chory 0, 38 0, 38 6 4 4 8 zdrowy 0, 36 0, 36 5 6 9 zdrowy 0, 34 0, 34 5 6 0 1 10 chory 0, 3 0, 3 1 0 1 1 4 3 4
Krzywa ROC Przykład krzywej ROC Przykładowa krzywa ROC
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
AUC - Area Under ROC Curve Aby łatwiej porównywać klasyfikatory oblicza się pole powierzchni pod krzywą ROC (AUC - Area Under ROC Curve). Idealny klasyfikator ma wartość AUC = 1, natomiast ze względu na to, że losowe zgadywanie daje odcinek pomiędzy (0, 0) a (1, 1) czyli AUC = 0, 5 żaden porządny klasyfikator nie powinien mieć wartości AUC < 0, 5. Pomimo prostoty porównywania klasyfikatorów za pomocą AUC, funkcją celu optymalizowaną przez większość klasyfikatorów jest współczynnik błędów (error rate). Nawet niektóre z nowych algorytmów zaproponowanych do maksymalizacji AUC nie obliczają wartości AUC dokładniej niż algorytmy do minimalizacji współczynnika błędów. Dlatego ważne jest aby zrozumieć zależności pomiędzy tymi wartościami.
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
AUC Ważną statystyczną własnością AUC jest to, że wartość AUC klasyfikatora odpowiada prawdopodobieństwu, że klasyfikator wyżej oceni losowo wybrany pozytywny element niż losowo wybrany negatywny element. Nich a 1,..., a m i b 1,..., b n będą ocenami klasyfikatora odpowiednio dla pozytywnych i negatywnych elementów. Wtedy: m n AUC = i=1 j=1 mn 1 ai >b j Jest to równoważne testowi Wilcoxon a (Hanley i McMeil, 1982).
AUC jest również powiązane ze współczynnikiem Gini (Breiman i współpracownicy, 1984), który jest dwukrotnie większy od obszaru pomiędzy diagonalą a krzywą ROC (Hand i Till, 2001). Gini + 1 = 2 AUC
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Różne klasyfikatory mogą mieć ten sam współczynnik błędów lecz różne wartości AUC. Dla ustalonej wartości granicznej θ, przestawienie elementów z wartościami klasyfikatora większymi niż θ nie zmienia współczynnika błędów lecz zmienia wartość AUC
L.p. Stan Prawd. Stan Prawd. 1 chory 0, 9 zdrowy 0, 9 2 zdrowy 0, 7 chory 0, 7 3 chory 0, 55 chory 0, 55 4 zdrowy 0, 53 zdrowy 0, 53 5 chory 0, 51 chory 0, 51 6 chory 0, 4 chory 0, 4 7 chory 0, 38 chory 0, 38 8 zdrowy 0, 36 zdrowy 0, 36 9 zdrowy 0, 34 zdrowy 0, 34 10 chory 0, 3 chory 0, 3
Załóżmy, że liczba błędów jest ustalona i wynosi k. Chcemy obliczyć średnią wartość AUC wszystkich klasyfikatorów z k błędami. Zakładamy, że wszystkie klasyfikatory są tak samo prawdopodobne. Dla ustalonej klasyfikacji może wystąpić x, 0 x k błędów I rodzaju a zatem liczba błędów II rodzaju wynosi k x. Wartość graniczna θ dzieli elementy na 2 dwie grupy: Wartość graniczna θ k x pozytywne elementy x negatywne elementy n x negatywne elementy m (k x) pozytywne elementy
Dla ustalonego x obliczanie AUC można podzielić na 3 części: AUC = A 1 + A 2 + A 3, gdzie (1) mn A 1 = suma po wszystkich parach (a i, b j ) leżących w różnych obszarach A 2 = suma po wszystkich parach (a i, b j ) leżących powyżej θ A 3 = suma po wszystkich parach (a i, b j ) leżących poniżej θ
Pierwszy składnik, A 1, łatwo obliczyć. Ponieważ jest (m (k x)) pozytywnych elementów powyżej wartości granicznej θ oraz n x negatywnych elementów poniżej θ, A 1 wynosi: A 1 = (m (k x))(n x) (2)
Aby obliczyć A 2, przyporządkujmy każdemu negatywnemu elementowi powyżej θ pozycję na podstawie oceny klasyfikatora. Na pierwszej pozycji znajdzie się element o najniższej ocenie powyżej θ i niech α 1 <... < α x oznaczają pozycje x negatywnych elementów powyżej θ w rosnącej kolejności. Łączna liczba elementów zaklasyfikowanych jako pozytywne wynosi N = m (k x) + x. Zatem zgodnie z definicją A 2 wynosi: A 2 = x (N α i ) (x i). (3) i=1 Gdzie (N α i ) określa liczbę elementów ocenionych wyżej niż i-ty element a (x i) określa liczbę negatywnych przykładów błędnie ocenionych wyżej niż i-ty element.
Analogicznie niech α 1 <... < α k x określają pozycję k x pozytywnych elementów poniżej wartości granicznej θ, licząc pozycje w kierunku od θ w dół. Wtedy A 3 można przedstawić za pomocą wzoru: A 3 = (N α j ) (x j). (4) x j=1 Gdzie N = n x + (k x) a x = k x.
Łącząc wzory na A 1, A 2 i A 3 dostajemy: AUC = A 1 + A 2 + A 3 mn = 1 + (k 2x)2 + k 2mn ( x x α i + α j ) i=1 Dla ustalonego x wartość oczekiwana AUC wynosi: E x (AUC) = 1 mn x n + k x m. 2 j=1 (5) (6)
E(AUC) = k x=0 ( N x )( N x ) x 1 n + k x m 2 k ( )( ) = N N (7) x=0 1 k m + n (n m)2 (m + n + 1) 4mn x x k m + n k 1 ( ) m + n x x=0 k ( ) m + n + 1 x x=0 (8)
Ze wzoru 8 widać, że średnia wartość AUC jest identyczna z dokładnością klasyfikatora tylko dla parzystej liczby elementów (n = m). Dla n m, wartość oczekiwana AUC jest monotoniczną funkcją dokładności. Patrząc na średnią wydaje się nic nie zyskamy stosując specjalny algorytm do maksymalizacji AUC: algorytm klasyfikujący, który minimalizuje współczynnik błędu optymalizuje również AUC. Jednak jest to prawda jedynie dla wartości średniej AUC. Pokażemy teraz, że wariancja AUC nie n zeruje się dla żadnej wartości n + m gdy k 0
Wariancja AUC Niech D = mn + (k 2x)2 + k, a = 2 x x α i, a = α j oraz α = a + a, wtedy z równości 5 otrzymujemy równość mnauc = D α. Wariancja AUC dana jest wzorem: i=1 j=1 (mn) 2 σ 2 (AUC) = E((D α) 2 (E(D) E(α)) 2 ) = E(D 2 ) E(D) 2 + E(α 2 ) E(α) 2 2(E(αD) E(α)E(D)). (9)
Tak jak poprzednio, aby obliczyć wartości średnie wyrażeń X dla wszystkich klasyfikacji, możemy obliczyć w pierwszej kolejności średnie E x (X ) dla ustalonego x a następnie użyć funkcji F zdefiniowanej następująco: k ( )( ) N N x x Y x=0 F (Y ) = k ( )( ). (10) N N x E(X ) = F (E x (X )) x=0 x
Wzór na wariancję AUC daje się sprowadzić do następującej postaci: σ 2 (AUC) = F ( 1 x n + k x m 2 2 ) F ( 1 x n + k x m ) 2 2 +F ( mx 2 + n(k x) 2 + (m(m + 1)x + n(n + 1)(k x)) 12m 2 n 2 2x(k x)(m + n + 1) 12m 2 n 2 ) (11) Choć nie łatwo to zauważyć to im bardziej rozkład pomiędzy klasy jest nierówny tym wariancja jest większa, rośnie ona wraz z liczbą błędów. Obserwacje te są sprzeczne z tezą, że wariancja wynosi zero dla każdego współczynnika błędu o ile rozkład na klasy jest równy (m = n)
1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Częściowy obszar pod wykresem Metoda pauc została zaproponowana jako alternatywna miara dla AUC. Używając pauc bierzemy pod uwagę tylko te obszary przestrzeni ROC gdzie występują dane lub takie, które są ważne ze względu na analizę którą przeprowadzamy. Aczkolwiek pauc może się wydawać lepszym kryterium w niektórych przypadkach (w celu uwydatnienia pewnych własności) to preferuje się używanie pełnego AUC.
Pakiet ROCR Dostępne metryki 1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
prediction Pakiet ROCR Dostępne metryki Aby rozpocząć prace z pakietem ROCR musimy w pierwszej kolejności utworzyć obiekt prediction. Konstruktor przyjmuje jako parametry wektor ocen wygenerowanych przez klasyfikator (ewentualnie macierz dla walidacji krzyżowej lub bootstraping u) oraz wektor przynależności do grup. Opcjonalnym parametrem jest wektor szeregujący etykiety grup - (pozytywna, negatywna). > pred <- prediction(przykład$oceny, przykład$etykiety, c(pozytywna, negatywna))
performance Pakiet ROCR Dostępne metryki Następnie możemy utworzyć obiekt performance, który posłuży do wizualizacji jakości klasyfikatora. Konstruktor wymaga podania dwóch argumentów: obiektu typu prediction oraz metryki jakości (np. wrażliwość - sens, specyficzność - spec,...). Następnie po przekazaniu obiektu klasy performance do funkcji plot zobaczymy wykres miary względem odcięć. > pref <- performance(pred, "sens") > plot (pref)
performance Pakiet ROCR Dostępne metryki Trzeci parametr konstruktora performance pozwala na porównanie jednej metryki jako funkcji drugie - dzięki temu możemy otrzymać krzywą ROC (wrażliwość jako funkcja parametru 1 specyficzność). > pref <- performance(pred, "sens", "fpr") > plot (pref)
Pakiet ROCR Dostępne metryki 1 2 Przykład krzywej ROC 3 4 Pakiet ROCR Dostępne metryki
Metryki Pakiet ROCR Dostępne metryki Dla funkcji performance dostępne są następujące metryki: ( ) TP + TN acc - dokładność, czyli P(Ŷ = Y ), estymowana jako P + N err (- współczynnik ) błędu, czyli P(Ŷ Y ), estymowany jako FP + FN P + N sens - wrażliwość (to samo ( co ) tpr ), czyli P(Ŷ = + Y = +), TP estymowana jako P
Metryki Pakiet ROCR Dostępne metryki fpr - współczynnik błędów I rodzaju (to samo ( co ) fall ), czyli FP P(Ŷ = + Y = ), estymowany jako N fnr - współczynnik błędów II rodzaju (to ( samo ) co miss ), czyli FN P(Ŷ = Y = +), estymowany jako P spec - specyficzność (to( samo) co tnr ), czyli P(Ŷ = Y = ), TN estymowana jako N i wiele innych...
Pakiet ROCR Dostępne metryki Tom Fawcett, ROC Graphs: Notes and Practical Considerations for Researchers (2004). Corinna Cortes i Mehryar Mohri AUC Optimization vs. Error Rate Minimization. S. D. Walter, The partial area under the summary ROC curve, Statistics in Medicine vol.24 (2004). Tobias Sing i Oliver Sander, ROCR Talk - Tobias Sing. J. A. Hanley i B. J. McNeil, The meaning and use of the area under a receiver operating characteristic (ROC) curve, Radiology, (1982). L. Breiman, J. H. Friedman, R. A. Olshen i C. J. Stone, Classification and Regression Trees, Wadsworth International, Belmont, CA, (1984). D. J. Hand i R. J. Till, A simple generalization of the area under the ROC curve to multiple class classification problems, Machine Learning 45(2), 171-186, (2001).