Krzywe operacyjne odbiornika ROC
Konspekt do zaj¦¢: Statystyczne metody analizy danych
Agnieszka Nowak-Brzezi«ska 8 stycznia 2010
1 Wprowadzenie
Klasykacja niezale»nie od tego jak¡ metod¡ jest przeprowadzana wymaga oceny.
Jedn¡ z metod pozwalaj¡cych na werykacj¦ jako±ci klasykacji jest metoda krzywych ROC. Krzywe ROC wraz ze wspóªczynnikami, które te krzywe wy- znaczaj¡ (chodzi tu o wspóªczynniki takiej jak czuªo±¢ i specyczno±¢) pozwa- laj¡ werykowa¢ nie tylko fakty popeªnienia bª¦dów podczas klasykacji, ale tak»e rozró»nia¢ rodzaje tych bª¦dów (bª¡d I czy II rodzaju). Przykªad analizy b¦dzie dotyczyª znanego zbioru klasykacji chorych na cukrzyc¦ zaczerpni¦ty z repozytorium UCI Repository pod adresem http://archive.ics.uci.edu/
ml/datasets/Pima+Indians+Diabetes. W ±rodowisku R zbiór ten jest równie»
podst¦pny pod nazw¡ PimaIndiansDiabetes2. Jest to do±¢ charakterystyczny dla klasykacji zbiór dlatego, »e skªada si¦ z 768 obserwacji (pacjentów) opisa- nych 8 atrybutami warunkowymi i jednym atrybutem decyzyjnym class, który rozdziela te obserwacje do jednej z dwóch klas: chorych na cukrzyc¦ (wów- czas warto±¢ atrybutu class wynosi 1) lub zdrowych (wówczas warto±¢ atry- butu decyzyjnego wynosi 0). Oczywi±cie klasykacja nowych obserwacji mo»e odbywa¢ si¦ na podstawie wyuczonego modelu klasykacji, którym mo»e by¢
klasykator Bayesowski, drzewo decyzyjne albo analiza regresji czy analiza dys- kryminacyjna, b¦d¡ca tematem ostatnich zaj¦¢. Do±¢ cz¦sto klasykacja danych medycznych wspomagana jest analiz¡ krzywych ROC. Metoda ta cho¢ wywo- dzi si¦ z teorii detekcji sygnaªu zostaªa zaadoptowana w dziedzinie medycyny, gdzie do±¢ cz¦sto mamy do czynienia z sytuacj¡, w której prowadzona analiza przynosi pewn¡ liczb¦ przypadków poprawnych decyzji, potwierdzaj¡cych rze- czywist¡ obecno±¢ patologii (prawdziwe pozytywne) oraz jej brak (prawdziwe negatywne), zdarzaj¡ si¦ jednak równie» tzw. wskazania bª¦dne (faªszywe nega- tywne i faªszywe pozytywne), tym liczniejsze im wi¦kszy wpªyw ¹le dobranych parametrów czy np bª¦dne dane, sªabe warunki pomiarowe, brak do±wiadczenia.
W rozpoznaniu tych parametrów pomaga wªa±nie metoda krzywych ROC.
2 Krzywe ROC (ang. Receiver Operating Cha- racteristic)
Eksperci prowadz¡cy badania dokonuj¡ oceny poszczególnych obiektów, wykry- waj¡ patologie, a wyniki ich binarnych decyzji (patologia jest b¡d¹ nie wyst¦- puje), nanoszone s¡ w postaci punktów na ukªad wspóªrz¦dnych ROC, przy
czym ka»dy punkt reprezentuje estymacj¦ prawdopodobie«stwa prawdziwej i faªszywej decyzji kolejnego specjalisty, czyli skuteczno±¢ jego pracy. W bada- niach dopasowania zmiennej binarnej korzysta si¦ z tablicy trae« i miar takich jak czuªo±¢ czasami nazywana tak»e wra»liwo±ci¡ i specyczno±¢. Nazwy odpo- wiadaj¡ sytuacjom, które nale»y rozwa»y¢ w klasykacji danych medycznych.
Zaªó»my, »e przeprowadzamy test na obecno±¢ jakiego± wirusa. Zazwyczaj wy- nik testu "pozytywnyóznacza obecno±¢ wirusa, podczas gdy «egatywnyóznacza brak wirusa w organi¹mie. Niestety nasz test nie musi by¢ doskonaªy. Mo»emy popeªnia¢ ró»ne bª¦dy, np powiedzie¢ osobie naprawd¦ zara»onej, »e jest zdrowa (false negative F N), lub zdrowej powiedzie¢, »e jest chora (false positive F P ).
Je±li dla klasykowanych obiektów przyjmiemy zaªo»enie tak jak to prezen- tuje tabela 1, gdzie:
Tablica 1: Rozkªad klasykowanych obiektów obiekty klasykowane nieklasykowane (np. pacjenci) jako chore jako chore
chore T P F N
zdrowe F P T N
prawidªowa jej interpretacja b¦dzie nast¦puj¡ca:
T P (ang. true positive)- liczba poprawnie sklasykowanych obiektów z pierwszej klasy (liczba pacjentów chorych poprawnie sklasykowanych przez system),
F N (ang. false negative)- liczba bª¦dnie sklasykowanych obiektów z pierwszej klasy (liczba pacjentów chorych, których system bª¦dnie skla- sykowaª jako zdrowych),
T N (ang. true negative)- liczba poprawnie sklasykowanych obiektów z drugiej klasy (tych spo±ród pacjentów zdrowych, których system sklasy- kowaª jako zdrowych),
F P (ang. false positive)- liczba bª¦dnie sklasykowanych obiektów z dru- giej klasy (liczba tych pacjentów zdrowych, których system bª¦dnie zakla- sykowaª jako chorych).
2.1 Czuªo±¢ a specyczno±¢
Czuªo±¢ (wra»liwo±¢, ang. sensitivity) okre±limy jako prawdopodo- bie«stwo, »e chor¡ osob¦ nasz test zakwalikuje do grupy chorych.
Innymi sªowy miara ta b¦dzie mówi¢ jaki jest udziaª osób, które s¡
chore i u których test wyszedª poprawnie, w stosunku do wszystkich chorych (true positives).
Czuªo±¢ odpowiada mierze:
sensitivity = T P (T P + F N ).
Specyczno±ci¡ (ang. specicity) b¦dziemy natomiast okre±la¢ praw- dopodobie«stwo, »e osob¦ zdrow¡ nasz test zakwalikuje jako osob¦
zdrow¡ (true negatives).
Specyczno±¢ deniowana jest jako:
specif icity = T N
(F P + T N )= 1 − F P (T N + F P ).
Podczas, gdy specyczno±¢ mierzy si¦ jako (T N +F P )T N , dokªadno±¢ (ang. preci- sion) b¦dzie mierzona jako(T P +F P )T P . Wówczas w krzywej ROC na jednej osi od- kªadamy warto±¢ czuªo±ci, a na drugiej warto±¢ 1 - specyczno±¢. Krzywa ROC (patrz Rysunek 1) bada zatem stosunek wielko±ci T P do F P w podanej tabeli.
Wysoka wra»liwo±¢ (bliska warto±ci "1") oznacza, »e system prawidªowo klasy-
kuje obiekty relewantne (prawidªowo rozpoznanie pacjentów chorych). Maªa warto±¢ parametru 1 - specyczno±¢ mówi nam, »e system niewiele obiektów nie- relewantnych klasykuje jako relewantne (niewielu pacjentów zdrowych uznaje za chorych). A wi¦c po»¡dane s¡: wysoka warto±¢ wra»liwo±ci i niska warto±¢
parametru 1 - specyczno±¢. Innymi sªowy, test b¦dzie wtedy najlepszy, gdy osoby faktycznie zdrowe okre±li jako zdrowe, a te faktycznie chore jako chore.
Wysoka wra»liwo±¢ (bliska 1) oznacza, »e wi¦kszo±¢ osób chorych faktycznie kla- sykuje jako chore - czyli mówimy wówczas, »e test jest wra»liwy na chorob¦
(czuªy).
Rysunek 1: Krzywe ROC
Ka»dy punkt na tej krzywej ma wspóªrz¦dne (1 - specyczno±¢, czuªo±¢).
Pole pod krzyw¡ ROC (AUC) jest miar¡ jako±ci danej metody w taki sposób,
»e pole 0.5 oznacza najgorszy ukªad, za± pole 1.0 idealny.
3 Przykªad analizy klasykacji metod¡ krzywych ROC
Do analizy we¹my zbiór Indian Pima dotycz¡cy chorych na cukrzyc¦. Dost¦pny jest on w pakiecie R poprzez komend¦ PimaIndiansDiabetes2(mlbench). Wy- bierzemy spro±ród wszystkich zmiennych opisuj¡cych obiekty w tym zbiorze, zmienne opisuj¡ce poziom glukozy i insuliny i na ich bazie b¦dziemy bada¢ sku- teczno±¢ oceny, czy dana osoba jest cukrzykiem.
# wczytujemy zbiór danych z pakietu mlbench, usuwamy brakuj¡ce dane i logarytmujemy poziom insuliny
> data(PimaIndiansDiabetes2)
> dane=na.omit(PimaIndiansDiabetes2)[,c(2,5,9)]
> dane[,2]=log(dane[,2])
# zbiór danych chcemy podzieli¢ na dwie cz¦±ci, ucz¡c¡ i testow¡, funkcj¡ sample wylosujemy indeksy obiektów, które trafia do zbioru ucz¡cego
> zbior.uczacy=sample(1:nrow(dane),nrow(dane)/2,F)
Wywoªujemy funkcj¦ do analizy dyskryminacyjnej lda() za pomoc¡ komendy:
> klasyfikatorLDA=lda(dane[,1:2],grouping=dane[,3],subset=zbior.uczacy) Prezentacja wyników klasykacji mo»liwa jest po wywoªaniu komendy:
> str(klasyfikatorLDA) czego efekt jest nast¦puj¡cy:
List of 8
$ prior : Named num [1:2] 0.679 0.321 ..- attr(*, "names")= chr [1:2] "neg" "pos"
$ counts : Named int [1:2] 133 63
..- attr(*, "names")= chr [1:2] "neg" "pos"
$ means : num [1:2, 1:2] 114.65 145.37 4.73 5.19 ..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:2] "neg" "pos"
.. ..$ : chr [1:2] "glucose" "insulin"
$ scaling: num [1:2, 1] 0.0355 0.0499 ..- attr(*, "dimnames")=List of 2 .. ..$ : chr [1:2] "glucose" "insulin"
.. ..$ : chr "LD1"
$ lev : chr [1:2] "neg" "pos"
$ svd : num 7.29
$ N : int 196
$ call : language lda(x = dane[, 1:2], grouping = dane[, 3], subset = zbior.uczacy) - attr(*, "class")= chr "lda"
Chc¡c dokona¢ predykcji metod¡ predict() dla zbioru testowego, musimy wy- woªa¢ nast¦puj¡ce komendy w ±rodowisku R:
> dane[,2]=log(dane[,2])
> oceny=predict(klasyfikatorLDA,newdata=dane[-zbior.uczacy,1:2]).
Wywoªuj¡c nast¦pnie komend¦ > str(oceny) poznamy wyniki takiej pre- dykcji.
List of 3
$ class : Factor w/ 2 levels "neg","pos": 1 2 1 1 1 2 1 2 2 1 ...
$ posterior: num [1:196, 1:2] 0.916 0.156 0.706 0.723 0.542 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:196] "4" "14" "21" "26" ...
.. ..$ : chr [1:2] "neg" "pos"
$ x : num [1:196, 1] -1.2793 2.3847 0.0816 0.0103 0.719 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:196] "4" "14" "21" "26" ...
.. ..$ : chr "LD1"
Pole $class wskazuje na przewidzian¡ klas¦ za± pole $posterior okre±la wyzna- czone prawdopodobie«stwo przynale»no±ci do ka»dej z klas. Na podstawie tej warto±ci obiekt byª przypisywany do bardziej prawdopodobnej dla niego klasy.
Je±li teraz chcemy porówna¢ macierz kontyngencji oceny i rzeczywiste ety- kietki dla kolejnych obiektów mo»emy wywoªa¢ komend¦:
table(predykcja=oceny$class,prawdziwe=dane[-zbior.uczacy,3]) której efekt b¦dzie nast¦puj¡cy:
prawdziwe predykcja neg pos
neg 121 35 pos 8 32
>
Otrzymana tablica kontyngencji mo»e by¢ przydatna przy wyznaczeniu bª¦dów predykcji. Mo»emy do tego wykorzysta¢ znane wspóªczynniki T F , T N, T P oraz F P . Bogata lista takich wspóªczynników wymieniona jest w opisie funk- cji performance(ROCR) (deniuj¡c bª¡d klasykacji u»ywa si¦ oznacze« T P , T N, F P , F N okre±laj¡cych kolejno liczb¦ poprawnie wykrytych sygnaªów po- zytywnych, poprawnie wykrytych braków sygnaªu, faªszywie wykrytych sygna- ªów pozytywnych oraz faªszywie wykrytych braków sygnaªów. W powy»szym przypadku czuªo±¢ wyniosªa (31+29)31 ≈ 0.517 a specyczno±¢ (115+21)115 ≈ 0.846. Wyznaczenie samych krzywych ROC nie jest trudne. Funkcja predict() poza ocenionymi klasami jako wynik przekazuje równie» prawdopodobie«stwo przy- nale»no±ci do jednej z klas (pole posterior wyniku funkcji predict()). Krzywa ROC to zbiór punktów wyznaczonych dla ró»nych poziomów odci¦cia (ang. thre- shold) dla wspomnianego prawdopodobie«stwa przynale»no±ci do jednej z klas.
Wspóªrz¦dne ka»dego punktu to czuªo±¢ i i specyczno±¢ (dokªadniej rzecz bio- r¡c 1−specyczno±¢) otrzymana dla zadanego punktu odci¦cia. Poni»ej przykªad u»ycia funkcji z pakietu ROCR, sªu»¡cej do rysowania krzywych ROC i innych o podobnych wªa±ciwo±ciach.
3.1 Pakiet ROCR
Dokumentacja pakietu ROCR dost¦pna jest pod adresem http://rocr.bioinf.
mpi-sb.mpg.de/ROCR.pdf. Pakiet a wªa±ciwie zawarta w nim funkcja performance() pozwalaj¡ na obliczanie warto±ci nast¦puj¡cych wspóªczynników:
acc - (accuracy, czyli dokªadno±¢),
err - (error rate),
fpr - (false positive rate),
tpr, sens oraz rec - (true positive rate),
fnr - (false negative rate),
tnr czy spec - (true negative rate),
ppv czy prec - (positive predictive value) oraz inne.
Wynik graczny przedstawiony jest na rysunkach 2 i 3. Na osiach tego wykresu mog¡ by¢ przedstawiane ró»ne miary dokªadno±ci klasykacji, w zale»- no±ci od argumentów funkcji performance(). Je±li chcemy wyznaczy¢ obiekt klasy prediction, zawieraj¡cy informacje o prawdziwych klasach, i prawdopo- dobie«stwie przynale»no±ci do wybranej klasy mo»emy wywoªa¢ nast¦puj¡c¡
komend¦:
> pred<-prediction(oceny$posterior[,2],dane[-zbior.uczacy,3])
> perf<-performance(pred,"sens","spec")
> plot(perf)
czego efektem b¦dzie wykres 2. Za± gdy chcemy zbada¢ zale»no±¢ dokªadno±ci
Specificity
Sensitivity
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
Rysunek 2: Krzywe ROC
(ang. precision) i kompletno±ci (ang.recall) dla tego samego zbioru danych wywoªamy komendy:
> perf<-performance(pred,"prec","rec")
> plot(perf)
. Tutaj nale»y przypomnie¢ co rozumiemy przez poj¦cia kompletno±ci i dokªad- no±ci. Kompletno±¢ b¦dziemy wyra»a¢ wzorem:
Recall = T P T P + F N
i interpretowa¢ jako zdolno±¢ systemu to znajdowania chorych pacjentów. In- nymi sªowy system b¦dzie klasykowaª z peªn¡ kompletno±ci¡ wtedy, gdy nie b¦dzie pomijaª chorych pacjentów (znajdzie wszystkich faktycznie chorych na- wet tych, którzy tak naprawd¦ s¡ zdrowi, ale przez system zostali okre±leni jako chorzy). Za± dokªadno±¢ wyra»ana wzorem:
P recision = T P T P + F P
b¦dzie okre±la¢ zdolno±¢ systemu do nie klasykowania - jako chorych - pacjen- tów, którzy s¡ w rzeczywisto±ci zdrowi. Dla miar kompletno±ci i dokªadno±ci mo»emy wyrysowa¢ wykres, taki jak to przedstawia rysunek 3.
Recall
Precision
0.0 0.2 0.4 0.6 0.8 1.0
0.40.50.60.70.80.91.0
Rysunek 3: Dokªadno±¢ i kompletno±¢
Oczywi±cie caªo±¢ zbioru obserwacji mo»na wyrysowa¢ stosuj¡c pakiet klaR i funkcje partimat oraz drawparti. Dokumentacja dla pakietu klaR znajduje si¦
pod adresem http://cran.r-project.org/web/packages/klaR/klaR.pdf. Efek- tem nast¦puj¡cej komendy R:
> partimat(dane[,1:2],grouping=dane[,3],subset=zbior.uczacy)
> partimat(dane, grouping=dane[,3], method = "lda", prec = 100,main="Partition Plot") b¦dzie rysunek 4.
3 4 5 6
80100120140160180
insulin
glucose
n n
n
p
n p
p
n n
n n
n
n
p
n
n n
n n
n
n p
n
p
n
p
pn
n
p
p
p
n n
n n
n n
n n
n p
p
n
p p
n n
n n
p
p
n
n p n n
n
n n
pn p
p n
p
p
n n
p
n
n p
p p
n
n
n
n n
n n
p n
n p
n
n n p
nn
n
n p n
n
n
p
n
n n
p
n
p
n n
n
n
n
n n
n n
n
n
p
n
n
n n
n
p n
n
n
n
p
n
n p p
p n
p n
p
n
n
n
n
p
p
n
p p
p
n p p
n
p
n
n
p p
n
n n
n
p
n
n p n
p
n
p
n p
n n
n
p
n n n
n n
n
n n
n p
p n
n n
p p
n p
n n n
n
app. error rate: 0.255
Partition Plot
Rysunek 4: Wykres klasykacji obiektów ze zbioru P ima
4 Bibliograa
Opracowanie przygotowano w oparciu o prace:
1. J. Koronacki, J. wik: Statystyczne systemy ucz¡ce si¦, wydanie drugie, Exit, Warsaw, 2008. (rozdziaª 3)
2. J. wik, J. Mielniczuk: Statystyczne systemy ucz¡ce si¦ - ¢wiczenia w oparciu o pakiet R, Ocyna Wydawnicza PW, Warszawa, 2009.(rozdziaª 4)
3. Biecek P.: Na przeªaj przez Data Mining, http://www.biecek.pl/R/
naPrzelajPrzezDM.pdf oraz pakiety:
http://cran.r-project.org/web/packages/klaR/klaR.pdf,
http://rocr.bioinf.mpi-sb.mpg.de/ROCR.pdf.