ROC suplement
Transkrypt
ROC suplement
ROC www.michalbereta.pl ROC Rozważmy automatyczny system kontrolujący osoby wchodzące do budynku na podstawie zdjęcia ich twarzy. Tylko osoby uprawnione (znajdujące się w bazie) mogą wejść, po zadeklarowaniu swojej tożsamości. Oznacza to, że osoba, która jest bazie, ale fałszywie deklaruje swoją tożsamość, również powinna spowodować alarm. ROC Osoby w bazie (potencjalnie kilka zdjęć na osobę) Pan X Pani Y Pan Z ROC Zdjęcia z bazy Nowe zdjęcie Uczciwy (przypadek negatywy) "Jestem Pan X" ROC Zdjęcia z bazy Nowe zdjęcie "Jestem Pan X" Oszust (przypadek pozytywny) Osoba z bazy ROC Zdjęcia z bazy Nowe zdjęcie "Jestem Pan X" Oszust (przypadek pozytywny) Osoba spoza bazy ROC Zdjęcia z bazy X1=[x11,x12,...x1p] X2=[x21,x22,...x2p] X3=[x31,x32,...x3p] Nowe zdjęcie "Jestem Pan X" X4=[x41,x42,...x4p] Wektory atrybutów opisujących zdjęcia ROC Liczone są odległości Euklidesa (lub inne miary podobieństwa/odległości). d(X1, X4) d(x2, X4) d(X3, X4) Wybierana jest najmniejsza z nich d. Jest to stopień podobieństwa pomiędzy nowym zdjęciem a najbardziej podobnym zdjęciem z bazy (spośród zdjęć osoby, za którą nowa postać się podaje). ROC Jeśli d jest “wystarczająco” małe (odległość między wektorami atrybutów jest mała), wtedy uznawane jest , że zdjęcia pasują do siebie. System uznaje, że osoba jest tą, za którą się podaje. Czy poprawnie? ROC W takich problemach, klasa pozytywna to ta, którą chcemy wykrywać, zatem w tym przypadku oszuści. Uczciwi to klasa przykładów negatywnych (trochę dziwne ale tak jest, podobnie jak w testach medycznych - wynik testu pozytywny oznacza wykrycie przez test choroby - pytanie tylko czy poprawnie) ROC Zatem: • rzeczywisty oszust wskazany przez system jako oszust przypadek pozytywny poprawnie wykryty, zatem TP - true positive • rzeczywisty oszust wskazany przez system jako uczciwy przypadek pozytywny wskazany niepoprawnie jako negatywny, zatem FN - false negative • uczciwy uznany przez system jako uczciwy - przypadek nagatywny, uznany poprawnie za negatywny, zatem TN true negative • uczciwy uznany przez system jako oszust - negatywny przypadek uznany niepoprawnie przez system za pozytywny, zatem FP - false positive ROC Nas interesuje wykres TPR vs FPR, tzn, jak rośnie wykrywalność oszustów (TPR - true positive rate) w zależności od coraz większego poziomu FPR (false positive rate) czyli fałszywych alarmów, na jaki się godzimy, by podwyższyć TPR. Mając taki wykres, ustalamy, że godzimy się maksymalnie na np. 5% fałszywych alarmów (które uprzykrzają życie uczciwym) i patrzymy czy system zapewnia nam wtedy satysfakcjonujący poziom wykryć, czyli TPR, czyli poprawnych zatrzymanych oszustów, np. 99% (co by było dobrym wynikiem). Ale może tylko 95%? Wtedy patrzymy na wykres i sprawdzamy na jaki poziom fałszywych alarmów musilibyśmy się zgodzić, by osiągnąć np. 98%. Można w ten sposob porównać dwa systemy i sprawdzić, który z nich zapewni większe TPR przy założanym FPR, np. 5%, a który przy FPR=2%. ROC P to liczba pozytywnych przypadków więc w naszym przypadku oszustów, TP to liczba oszustów wykrytych przez system, FN to liczba niewykrytych oszustów ROC N to liczba przykładów negatywnych więc tych uczciwie podających swoją tożsamość, FP to liczba uczciwych uznanych przez system za oszustów (nieprawidłowo), TN to liczba uczciwych uznanych przez system za rzeczywiście uczciwych. ROC Wykres ROC tworzy się nie przy ustalonym progu odległosci Euklidesa, ale poprzez jego zmianę, tak by po każdej zmianie progu system zmieniał zdanie o jednym przykładzie. Dobrze jest więc posortować minimalne odleglości dla kolejnych przykładów testowych i za kolejne progi przyjmować średnią z kolejnych dwóch odległości. Dla każdego progu liczymy TPR oraz FPR i z tych punktów tworzymy wykres ROC. ROC Przykładowo, jeśli mamy przypadki testowe (oszust - O, uczciwy - U): [U, O, U, U, O] i dla nich minimalne odległości dla każdego szukane osobno to, już po sortowaniu: [1.1, 1.2, 3.3, 3.5, 4.1] ROC Sprawdzamy najpierw próg np. 1, wtedy wszystkie odległości są ponad i wszyscy są uznani za niepodobnych do zadeklarownaych tożsamości, wszyscy są zgłoszeni jako oszuści i mamy 100% wykrywalności oszustów (TPR = 2/2 = 1 == 100%). Jednocześnie mamy maks fałszywych alarmów, FPR = 3/3 = 1 == 100%). TPR = 1 jest porządane, ale nie przy FPR=1, bo to oznacza, że wszystkich wrzucamy do jednego worka jako oszustów. ROC Podwyższamy więc próg do (1.1+1.2)/2 Teraz łatwiej będzie kogość zaakceptować jako uczciwego (wystarczy, że wykaże się mniejszym podobieństwem). Teraz przykład 1.1 jest uznany za uczciwego i jako że jest to rzeczywiście uczciwy, to FPR=1/2 spada (więc dobrze) a wykrywalność TPR dalej jest na 100%. ROC Jeśli kolejny próg to (1.2+3.3)/2 wtedy przykład 1.2 (oszust) zostanie uznany za uczciwego (nieszłusznie) zatem mamy spadek TPR przy takim samym FPR. ROC W ten sposob ROC jest tworzony od górnego prawego rogu do lewego dolnego. Jeśli dla kogoś bardziej naturalne wydaje się konstruować go od punktu (0,0) to wystarczy posortować wartości malejąco. Końcowy wykres bedzie taki sam. ROC Co jeśli wśród danych odpowiedzi testowych są te same wartości, ale dla przykładów z różnych klas? Odp. Wykorzystać można jedno z możliwych podejść: optymistyczne, pesymistyczne lub mieszane. ROC Można narysować wykres ROC na podstawie odpowiedzi klasyfikatora dla zbioru testowego bez sterowania jego parametrami (typu próg decyzyjny), nawet dla odpowiedzi 0 (pierwsza klasa) 1 (druga klasa). ROC Prediction Class 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.3 0.1 0.1 0.8 0.8 0.4 0.4 0.4 0.2 0.1 0.1 0.1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 Odpowiedzi przykładowego klasyfikatora. Można na ich podstawie analizować jakość klasyfikatora na wykresie ROC ROC Prediction Class 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.3 0.1 0.1 0.8 0.8 0.4 0.4 0.4 0.2 0.1 0.1 0.1 Prediction 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 Class 0.8 0.8 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.3 0.2 0.1 0.1 0.1 0.1 0.1 Sortowanie Prediction 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 0 0 0 Class 0.8 0.8 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.3 0.2 0.1 0.1 0.1 0.1 0.1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 Różne ROC dla różnych rodzajów sortowania. Który wybrać? ROC Sortowanie •Optymistyczne –Spośród przykładów o tych samych wartościach predykcji, najpierw brane są przykłady z poprawną predykcją •Pesymistyczne – (…) najpierw brane są przykłady z błędna predykcją •Mieszane –(…) przykłady brane są na przemian, z poprawną i niepoprawną predykcją ROC Optymistyczne AUC = 0.7272 Prediction Class 0.8 0.8 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.3 0.2 0.1 0.1 0.1 0.1 0.1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 0 0 0 ROC ROC Pesymistyczne AUC = 0.4545 Prediction Class 0.8 0.8 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.3 0.2 0.1 0.1 0.1 0.1 0.1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 ROC ROC Mieszane AUC = 0.5959 ROC ROC ROC Podobną analizę można wykonać dostając jedynie 0 lub 1 jako predykcję klasyfikatora. Prediction Class 0.8 0.8 0.8 0.8 0.8 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.3 0.2 0.1 0.1 0.1 0.1 0.1 Prediction 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 0 0 0 Class 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 0 0 0 Np. ostra decyzja przy progu 0.5 ROC Podczas tworzenia wykresu ROC przemieszczamy się co jeden przykład, i mimo że wartość progu decyzyjnego się nie zmienia, przeliczamy TPR oraz FPR otrzymując nowy punkt na wykresie. Prediction Class 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 Prediction 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 Class 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 Optymistycznie Prediction Class 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Pesymistycznie