Analiza dyskryminacyjna 1 Wprowadzenie 2 Analiza dyskryminacyjna
Transkrypt
Analiza dyskryminacyjna 1 Wprowadzenie 2 Analiza dyskryminacyjna
Analiza dyskryminacyjna Konspekt do zaj¦¢: Statystyczne metody analizy danych Agnieszka Nowak-Brzezi«ska 8 stycznia 2010 1 Wprowadzenie Celem zaj¦¢ ma by¢ omówienie podstawowych zagadnie« zwi¡zanych z analiz¡ dyskryminacyjn¡. Liniowa Analiza Dyskryminacyjna i zwi¡zana z ni¡ Fisherowska liniowa analiza dyskryminacyjna s¡ u»ywane w uczeniu maszynowym do znalezienia liniowej kombinacji cech, które najlepiej rozró»niaj¡ dwie lub wi¦cej klas obiektów lub zdarze«. Wynikowe kombinacje s¡ u»ywane jako klasykator liniowy lub, cz¦±ciej, sªu»¡ redukcji wymiarów do pó¹niejszej klasykacji statystycznej. LDA jest u»ywana do wielu zastosowa« zwi¡zanych z klasykacj¡. Jednym z nich jest rozpoznawanie twarzy. Obraz twarzy skªadaj¡cy si¦ z bardzo du»ej ilo±ci pikseli jest redukowany do mniejszego zbioru linowych kombinacji, które mog¡ nast¦pnie by¢ wykorzystane do klasykacji. Tradycyjnie ju», podstawowym ¹ródªem informacji w tym zakresie powinien by¢ podr¦cznik: [ J. Koronacki, J. wik: Statystyczne systemy ucz¡ce si¦, wydanie drugie, Exit, Warsaw, 2008. (rozdziaª 1)]. 2 Analiza dyskryminacyjna Gdyby±my zerkn¦li do dost¦pnych ¹ródeª po denicj¦ poj¦cia dyskryminacji otrzymamy nast¦puj¡c¡ odpowied¹: Dyskryminacja (ªac. discriminatio - 'rozró»nianie' ; czyt.: diskriminacjo) - cz¦sto wyst¦puj¡ca forma wykluczenia spoªecznego, objawiaj¡ca si¦ poprzez traktowanie danej osoby mniej przychylnie, ni» innej w porównywalnej sytuacji ze wzgl¦du na jak¡± cech¦ (np. pªe¢, to»samo±¢ seksualna, wiek, niepeªnosprawno±¢, religia lub przekonania czy pochodzenie etniczne lub rasowe). Odnosz¡c t¦ denicj¦ do obszaru metod statystycznych, znajdziemy metod¦ nazywan¡ analiz¡ dyskryminacyjn¡. Metod¡ u»ywan¡ do znalezienia liniowej kombinacji cech, które najlepiej rozró»niaj¡ dwie lub wi¦cej klas obiektów lub zdarze« jest liniowa analiza dyskryminacyjna (ang. Linear discriminant analysis, LDA). Okre±la si¦ j¡ mianem metody klasykacji pod nadzorem. Analiza dyskryminacyjna d¡»y do tego, aby ka»dej obserwacji x ∈ X przypisa¢ klas¦, do której ta obserwacja nale»y. Reguªa dyskryminacyjna (klasykacyjna) dzieli wi¦c zbiór X na g rozª¡cznych podzbiorów (klas) i daje si¦ zapisa¢ jako odwzorowanie: d(x) : X → G, gdzie G jest sko«czonym g -elelemntowym zbiorem etykiet klas, do których nale»¡ obserwacje, przy czym g ≥ 2. 1 2.1 Nierozª¡czno±¢ klas Pami¦tajmy, »e typowe procesy klasykacyjne obarczone s¡ zwykle niepewno±ci¡. Zawsze mo»emy w próbie ucz¡cej znale¹¢ obserwacje nietypowe, które wprowadz¡ szum informacyjny i zaburz¡ nasz¡ klasykacj¦. Nie wolno nam zakªada¢ rozdzielno±ci klas cho¢ oczywi±cie tego by±my sobie najch¦tniej »yczyli buduj¡c reguªy klasykacyjne. Fakt konieczno±ci wpuszczenia niepewno±ci do takich modeli mo»e by¢ wspomagany probabilistyk¡, i wymaga traktowania obserwacji w próbie ucz¡cej jako wektorów losowych. 3 Fisherowska analiza dyskryminacyjna Analiza dyskryminacyjna w uj¦ciu Fishera, jest okre±lana jako historycznie pierwsze podej±cie do klasykacji pod nadzorem. Zakªada, »e wektory obserwacji s¡ wektorami w przestrzeni p - wymiarowej X ⊂ Rp i prowadzi do otrzymania reguªy dyskryminacyjnej opartej na funkcji liniowej. Reguªa ta dla g = 2 stara si¦ znale¹¢ kierunek a w X , który najlepiej rozdziela obydwie podpróby ucz¡ce, przy tym konstrukuj¡c miar¦ odlegªo±ci mi¦dzy klasami, uwzgl¦dni¢ zmienno±¢ wewn¡trzgrupow¡. Jasne jest, »e rozproszenie wewn¡trzgrupowe powinno by¢ scharakteryzowane odpowiednimi - opartymi na stosownych podpróbach - próbkowymi macierzami kowariancji. Konstrukcja metody LDA wg Fishera wymaga zagregowania informacji o klasach, do których mamy klasykowa¢ nowe obserwacje, za pomoc¡ wska¹ników poªo»enia i rozproszenia g podprób próby ucz¡cej. Je±li mamy tylko dwie klasy, to prób¦ (x1 , y1 ), (x2 , y2 ), . . . , (xn , yn ) mo»emy podzieli¢ na podprób¦ obserwacji z klasy pierwszej i podprób¦ obserwacji z klasy drugiej: x11 , x12 , . . . , x1n1 z klasy 1, x21 , x22 , . . . , x2n2 z klasy 2, gdzie n = n1 + n2 . Wtedy ±rednie klas mo»emy zapisa¢ jako: xk = nk 1 X xki dla k = 1, 2. nk i=1 Je±li jako xk okre±limy ±redni¡ grupow¡ i zaªo»ymy, »e wariancja wektora X b¦dzie taka sama we wszystkich populacjach (tutaj w dwóch, bo k = 1, 2), to wspólna macierz kowariancji zostanie wyznaczona poprzez obliczenie macierzy kowariancji wewn¡trzgrupowej W : 2 W = 2 n k 0 1 X 1 XX (nk − 1)Sk = (xkl − xk )(xkl − xk ) n−2 n−2 k=1 k=1 l=1 0 gdzie Sk oznacza macierz kowariancji próby w k -tej populacji, x -transpozycj¦ wektora x, i powiemy tak»e, »e n = n1 + n2 . Fisher zadanie analizy dyskryminacyjnej zdeniowaª nast¦puj¡co: znale¹¢ taki kierunek a, który maksymalizuje odlegªo±¢ mi¦dzy zrzutowanymi ±rednimi obu prób przy uwzgl¦dnieniu wariancji rzutu 2 (czyli standaryzowanej odlegªo±ci zrzutu ±rednich) 0 0 0 0 a x2 − a x1 (a x2 − a x1 )2 argmaxa ( q )2 = argmaxa a0 W a a0 W a( n11 + n12 ) Rozwi¡zaniem jest: a = W −1 (x2 − x1 ) ale samo wyznaczenie a nie tworzy jeszcze reguªy dyskryminacyjnej. By j¡ zbudowa¢: rzutujemy obserwacje x na kierunek a, i nast¦pnie klasykujemy je do pierwszej lub drugiej klasy, w zale»no±ci od tego czy rzut ten byª bli»szy rzutowi ±rodka próby pierwszej czy drugiej: 0 d = 2 ⇔ a (x − (x1 + x2 )/2) > 0. Idea analizy dyskryminacyjnej zostaªa bardzo dobrze oddana na ilustracji w podr¦czniku Prof. Koronackiego pt. Statystyczne systemy ucz¡ce si¦ w rozdziale 1 na stronie 30. Zrzut tej ilustracji przedstawia rysunek 1. Rysunek 1: Wykres obserwacji dla klas 1 (trójk¡tów) i 2 (kóªek) Widzimy tutaj, »e obserwacje z dwóch klas (kóªek i trójk¡tów) s¡ prezentowane w przestrzeni dwuwymiarowej jako punkty. Punkt x1 reprezentuje ±redni¡ grupy 1, za± x2 odpowiednio ±redni¡ grupy drugiej. Na rysunku przedstawiono rzuty obserwacji i ±rednich z prób dla kazdej klasy na prost¡ opisan¡ jako e a. Do tej prostej poprowadzono prost¡ - nazwan¡ na wykresie prost¡ dyskryminacyjn¡. 3 3.1 Reguªa dyskryminacyjna Reguªa dyskryminacyjna wyznacza w zbiorze X hiperpowierzchni¦ dyskryminacyjn¡ dziel¡c¡ ten zbiór na dwa podzbiory: tych punktów x, które nale»¡ do klasy 1 i tych, które nale»¡ do klasy 2. Co wa»ne: reguªa taka wyznacza hiperpowierzchni¦, która jest prostopadªa do kierunku e a i przechodzi przez ±rodek odcinka ª¡0 0 cz¡cego punkty ea x1 oraz ea x2 . Je±li spojrzymy na wszystkie punkty le»¡ce po tej samej stronie co x1 to oka»e si¦, »e przecie» i ich rzuty ortogonalne na kierunek e a musz¡ le»e¢ po tej 0 0 0 0 samej stronie, a wi¦c speªniaj¡ warunek: |e ax−e a x1 | < |e ax−e a x2 | i b¦d¡ klasykowane do klasy 1. Reguªa dyskryminacyjna Fishera Reguªa ta mówi¢ b¦dzie, »e 0 przypiszemy obiekt x ∈ X do klasy 2 je±li (x2 − x1 ) W −1 [x − 21 (x1 + x2 )] > 0 oraz do klasy 1 w przypadku, gdy prawdziwa jest nierówno±¢ odwrotna. Kontrowersyjny przypadek, gdy punktu x le»y dokªadnie na hiperpªaszczy¹nie dyskryminacyjnej rozwi¡zuje si¦ poprzez zrzucenie decyzji na eksperta. 4 Problem wielu klas Koncepcj¦ Fishera z liczb¡ klas g równ¡ 2 mo»a uogólni¢ na przypadek wi¦kszej liczby klas (czyli gdy g > 2). Takie uogólnienie jako pierwsi zaproponowali C.R.Rao i J.G.Bryan. Wtedy równie» b¦dziemy szuka¢ takiego kierunku a, który pozwoli maksy0 Ba malizowa¢ wyra»enie aa0 W , gdzie: a g B= 0 1 X nk (xk − x)(xk − x) g−1 k=1 jest macierz¡ kowariancji mi¦dzygrupowej za± W = g 1 X (nk − 1)Sk n−g k=1 jest macierz¡ kowariancji wewn¡trzgrupowej. 4.1 Reguªa dyskryminacyjna dla wielu klas 0 Maj¡c szukany wektor e a obserwacj¦ x przypiszemy dla j -tej klasy, gdy |e ax− 0 0 0 ax−e a xk | dla wszystkich j 6= k . Najcz¦±ciej nie jest mo»liwe okree a xj | < |e ±lenie jednego kierunku rozdzielaj¡cego klasy obserwacji. Wtedy szuka si¦ np. g dwóch kierunków kanonicznych. Z tego wzgl¦du - lepiej rozwi¡za¢ ( ) zada« 2 dyskryminacyjnych mi¦dzy dwiema klasami, co po prostu oznacza rozwi¡zanie 4 zadania dyskryminacji dla wszystkich mo»liwych zestawów par klas spo±ród g klas. Uogólnienie reguªy Fishera dla dwóch klas na reguª¦: 0 0 0 0 zaklasykuj wektor x do populacji j , je±li |a x − a xj | ≤ |a x − a xk | dla k 6= j , gdzie a jest pierwszym wektorem kanonicznym nie zawsze sprawdza si¦ dla wi¦cej ni» dwóch populacji. Dla wszystkich zestawów par klas budujemy wspóln¡ macierz kowariancji wewn¡trzgrupowej. Podziaªu przestrzeni Rp dokonuj¡ hiperpªaszczyzny dyskryminacyjne otrzymane z reguªy klasykacyjnej dij skonstruowanej dla dowolnej pary i, j populacji. Co wa»ne, te hiperpªaszczyzny nie musz¡ si¦ przecina¢ w jednym punkcie. Je±li rozwi¡zujemy zadanie dyskryminacji dla wszystkich mo»liwych zestawów par klas spo±ród g klas, wówczas dla tych wszystkich klas przyjmujemy wspóln¡ macierz kowariancji wewn¡trzgrupowej. Gdyby±my macierze obliczali oddzielnie dla pary klas 1 i 2, pary klas 1 i 3 oraz pary klas 2 i 3, otrzymane na tej podstawie proste dyskryminacyjne mogªyby si¦ nie przeci¡¢ w jednym punkcie - ale tworzyªyby trójk¡t, w którym nie byªoby jednoznacznego rozwi¡zania zadania dyskryminacji. 4.2 Okre±lenia stosowane w analizie dyskryminacyjnej 0 Zmienn¡ e a x nazywa¢ b¦dziemy pierwsz¡ zmienn¡ kanoniczn¡ odpowiadaj¡c¡ wektorowi x, a wektor e a pierwszym wektorem kanonicznym. e a jest kierunkiem 0 a Ba kanonicznym uzyskanym przez maksymalizacj¦ ilorazu a0 W a i jest to takie kierunek, który najlepiej rozdziela klasy. 4.2.1 Wektory kanoniczne i zmienne kanoniczne Maj¡c dan¡ macierz W −1 B , gdzie W jest macierz¡ kowariancji wewn¡trzgrupowej, za± B kowariancji mi¦dzygrupowej, powiemy, »e kolejne wektory wªasne odpowiadaj¡ce uporz¡dkowanym od najwi¦kszej do najmniejszej warto±ciom wªasnym tej macierzy nosz¡ nazw¦ wektorów kanonicznych. Wektor a zdeniowany w metodzie Fishera jest pierwszym wektorem kanonicznym dla g = 2. Wektorów kanonicznych jest maksymalnie g − 1. Je±li ai jest i-tym wektorem 0 kanonicznym, to ai x nazywana jest i-t¡ zmienn¡ kanoniczn¡. W problemach wielowymiarowych u»ywa si¦ cz¦sto dwoch lub trzech pierwszych zmiennych kanonicznych do wizualizacji wektora cech. Zmienne kanoniczne daj¡ce wyra¹n¡ separacj¦ grup na wykresie s¡ z reguªy istotne w klasykacji. 4.2.2 Liczba kierunków kanonicznych Przy wi¦cej ni» dwóch klasach, gdzie celem jest znalezienie nie jednego ale wielu kierunków kanonicznych powstaje problem optymalnego oszacowaniach ich liczby. Wa»nym jest tak»e rozwi¡zanie zadania wielokrotnej maksymalizacji 0 a Ba , które nierzadko przynosi bardzo ciekawe uproszczenie oryginalnego proa0 W a blemu przez redukcj¦ jego wymiaru i rozwi¡zanie zadania dyskryminacji (klasykacji) w otrzymanej przestrzeni o zmniejszonym wymiarze, a mianowicie w t-wymiarowej przestrzeni euklidesowej t zmiennych kanonicznych. Zwykle wymiar p przestrzeni obserwacji jest wi¦kszy, lub znacznie wi¦kszy, od liczby klas 5 pomniejszonej o 1, czyli g − 1. Je±li zast¡pimy oryginalny problem wielowymiarowy problemem o znacznie mniejszym wymiarze równym g − 1 lub nawet mniejszym, za to w przestrzeni generowanej przez kierunki najlepiej rozdzielaj¡ce klasy, uzyskamy w prosty sposób zadowalaj¡ce wyniki klasykacji. Wtedy bowiem zadanie klasykacji mo»emy wykona¢ stosuj¡c dowoln¡ z metod powszechnie znanych i stosowanych w problemach klasykacji. 5 Analiza dyskryminacyjna za pomoc¡ R Do wykonania ¢wicze« wykorzystamy przykªadowe dane udost¦pnione przez autorów podr¦cznika: J. wik, J. Mielniczuk: Statystyczne systemy ucz¡ce si¦ - ¢wiczenia w oparciu o pakiet R, Ocyna Wydawnicza PW, Warszawa, 2009. Zródªo pobrania danych to: http://www.ipipan.waw.pl/staff/j.mielniczuk/SSUS-Programy-Dane.zip 5.1 Dwie klasy i dwie zmienne Jako pierwszy do analizy we¹miemy prosty zbiór earthquake dotycz¡cy klasykacji wybuchów nuklearnych i trz¦sie« ziemi. Zmienn¡ klasykuj¡c¡ jest tutaj zmienna popn, która mo»e przyjmowa¢ jedn¡ z dwóch mo»liwych warto±ci: equake lub explosn. Do pierwszej klasy odpowiednio zaliczymy 20 obserwacji, do drugiej - 9. Wczytanie zbioru danych mo»liwe jest dzi¦ki komendzie: > earthquake<-read.table("C:\\earthquake.txt",header=TRUE) Je±li chcemy by obserwacje z ró»nych klas byªy oznaczone innymi kolorami, umo»liwi to komenda: > kolor <-c(rep("black",20),rep("red",9)) Teraz je±li chcemy tak»e by byªy takie obserwacje z ró»nych klas etykietowane innymi symbolami, wystarczy u»y¢ komendy: > symbole <-c(rep("Q",20),rep("X",9)) Teraz stosuj¡c instrukcj¦ > plot(earthquake$body, earthquake$surface, type="n",xlab="body",ylab="surface") > text(earthquake$body,earthquake$surface,symbole,col=kolor) w efekcie uzyskamy wykres rozproszenia obiektów zbioru earthquake dla zmiennych body oraz surface (rysunek 2). 5.2 Wyznaczenie równania prostej rozdzielaj¡cej dwie klasy z denicji Kolejno musimy wykona¢ kroki: okre±li¢ liczno±ci próby i klas: 6 Q QQ 5.0 Q Q Q 4.5 surface 5.5 6.0 Q Q Q Q Q Q Q Q Q 4.0 Q Q QQ X X X XX X X X X Q 4.5 5.0 5.5 6.0 6.5 body Rysunek 2: Wykres rozproszenia obiektów zbioru earthquake > n<-29 > n1<-20 > n2<-9 wyznaczy¢ macierze kowariankcji - które zakªadamy, »e s¡ równe: > kowar1 <- cov(earthquake[1:20,2:3]) > kowar2 <- cov(earthquake[21:29,2:3]) wyznaczy¢ macierz kowariancji wewn¡trzgrupowej: > kowar <- ((n1-1)*kowar1+ (n2-1)*kowar2)/(n-2) potrzebujemy te» macierzy odwrotnej do macierzy kowar. U»yjemy do tego funkcji ginv z pakietu MASS: > library(MASS) > invkowar<-ginv(kowar) musimy jeszcze okre±li¢ wektory ±rednich grupowych osobno dla obserwacji z ró»nych grup (wiadomo, »e obserwacje o indeksach 1..20 nale»¡ do jednej klasy, a te o indeksach 21..29 do drugiej klasy): > sr1<-mean(earthquake[1:20,2:3]) > sr2<-mean(earthquake[21:29,2:3]) na koniec nale»y okre±li¢ wspóªczynniki a1 i a2 oraz wyraz wolny prostej x2 = −(a1/a2) ∗ x1 − stala/a2 rozdzielaj¡cej klasy: > wspa <-invkowar %*% (sr2-sr1) > stala<-0.5&(t(sr1+sr2) %*% wspa) wyrysowanie takiej prostej wykonamy komend¡: > abline(-stala/wspa[2],-wspa[1]/wspa[2]) 7 5.3 Analiza dyskryminacyjna z u»yciem funkcji lda W pakiecie R do analizy dyskryminacyjnej mo»na wykorzysta¢ pakiet lda {MASS}. Jej u»ycie dla zbioru earthquake wygl¡da¢ b¦dzie nast¦puj¡co: > equake.lda <-lda(popn~.,data=earthquake) > print(equake.lda) Call: lda(popn ~ ., data = earthquake) Prior probabilities of groups: equake explosn 0.6896552 0.3103448 Group means: body surface equake 5.249000 4.740000 explosn 5.978889 4.244444 Coefficients of linear discriminants: LD1 body 3.918916 surface -1.865219 Je±li wi¦c estymatory prawdopodobie«stw przynale»no±ci klasowej wynosz¡ odpowiednio: equake explosn 0.6896552 0.3103448 to równanie prostej b¦dzie miaªo posta¢ komendy: > abline((-stala +log(0.3103448/0.6896552))/wspa[2],-wspa[1]/wspa[2],lty=2) 5.4 Reklasykacja Tabela reklasykacji przy u»yciu LDA 29 obiektów o znanej przynale»no±ci do klasy przedstawia si¦ nast¦puj¡co: > equake.pred<-predict(equake.lda,newdata=earthquake) > print(table(earthquake$popn,equake.pred$class)) equake explosn equake explosn 19 1 0 9 Widzimy tu, »e jeden z obiektów, który nale»aª do klasy equake zostaª bª¦dnie wrzucony do klasy explosn. Natomiast w przypadku drugiej klasy bª¦dów klasykacji nie zauwa»ono. Zªa klasykacja jest zobrazowana jako takie punkty na wykresie, które s¡ np. blisko linii przerywanej. Mo»emy wyznaczy¢, które punkty b¦d¡ ¹le sklasykowane poprzez obliczenie prawdopodobie«stw aposteriori zaklasykowania do ka»dej z klas. Wywoªanie komend: > print(equake.pred$post) equake explosn 1 3.307965e-01 6.692035e-01 2 9.632382e-01 3.676183e-02 8 3 9.621776e-01 4 9.895360e-01 5 9.998841e-01 .... 27 4.775093e-02 28 5.307004e-04 29 6.599999e-04 3.782240e-02 1.046398e-02 1.158851e-04 9.522491e-01 9.994693e-01 9.993400e-01 Widzimy tutaj, »e dla obserwacji pierwszej prawdopodobie«stwo zaklasykowania do klasy 1 wynosi 3.307 za± do klasy 2: 6.692 co oznacza, »e po prostu prawdopodobienstwo zaklasykowania tego obiektu do klasy 2 jest wi¦ksze ni» do klasy 1 - st¡d bª¡d klasykacji. 5.5 Klasykacja z u»yciem zmiennych kanonicznych Dla dwóch klas (g = 2) otrzymamy jeden wektor kanoniczny a1 i jedn¡ zmienn¡ 0 kanoniczn¡ a1 x. Wyznaczenie warto±ci wektora kanonicznego umo»liwia komenda R: > print(equake.lda$scaling) czego efektem b¦d¡ warto±ci: LD1 body 3.918916 surface -1.865219 0 Z kolei wyznaczenie warto±ci pierwszej zmiennej kanonicznej a1 x dla elementów próby b¦dzie mo»liwe dzi¦ki komendzie: > kanon<-t(equake.lda$scaling)%*%t(as.matrix(earthquake[,2:3])) > print(kanon) której efektem b¦d¡ dane: [,1] LD1 14.01875 [,9] LD1 10.72615 [,17] LD1 11.19206 [,25] LD1 15.72968 [,2] 12.96967 [,10] 11.27759 [,18] 10.26016 [,26] 17.13731 [,3] 12.97748 [,11] 12.42707 [,19] 10.38040 [,27] 14.62335 [,4] 12.63056 [,12] 11.90481 [,20] 11.05831 [,28] 15.82502 [,5] [,6] [,7] [,8] 11.43799 12.36923 10.74818 10.40789 [,13] [,14] [,15] [,16] 12.6895 13.01452 11.28701 10.80771 [,21] [,22] [,23] [,24] 15.59385 15.20762 14.77277 14.96852 [,29] 15.76738 0 Progiem rozdzielaj¡cym klasy w podejsciu Fishera jest warto±¢: a (x1 + x2 )/2. Je±li ±rednie grupowe wyznaczymy komend¡ > print(equake.lda\$means)i b¦d¡ one nast¦puj¡ce: body surface equake 5.249000 4.740000 explosn 5.978889 4.244444 to próg rozdzielaj¡cy klasy popn i equake ma warto±¢ wyznaczan¡ jako: > print(3.918916*(0.5*(5.249000 + 5.978889))-1.865219*(0.5*(4.74+4.244444))) 9 która wynosi: [1] 13.6216. Jak wida¢ byªa ona wyznaczona z równiania: LD1body ∗((equakebody +explosnbody )/2)+LD1surf ace ∗((equakesurf ace +explosnsurf ace )/2) Wtedy reguªa klasykacyjna ma posta¢ nast¦puj¡c¡: je±li warto±¢ zmiennej kanonicznej dla jakiej± obserwacji jest mniejsza od warto±ci 13.6216 to t¦ obserwacj¦ zaliczymy do klasy pierwszej (equake), w przeciwnym przypadku - do klasy drugiej (explosn). Patrz¡c teraz na warto±ci zmiennej kanonicznej kanon mo»emy sprawdzi¢, czy s¡ takie obserwacje, które powinny na podstawie warto±ci funkcji kanonicznej nale»e¢ do klasy pierwszej a zostaªy niepoprawnie przydzielone do klasy drugiej. Tak jest w przypadku obserwacji pierwszej. Pami¦tamy bowiem, »e pierwsze 20 obserwacji to klasa equake. Je±li jednak b¦dziemy klasykowa¢ obserwacje wg warto±ci kanonicznych, to warto±¢ tej obserwacji równa 14.01875 sugeruje, »e obserwacja ta nale»y do klasy explosn skoro ma warto±¢ wi¦ksz¡ ni» progowa warto±¢ 13.6216. Wykres warto±ci pierwszej zmiennej kanonicznej dla elementów próby przedstawia rysunek 3. Do jego wygenerowania niezb¦dne jest wygenerowanie nast¦puj¡cego kodu: > > > > > equake.pred<-predict(equake.lda,newdata=earthquake) plot(equake.pred$x,type="n",xlab="index",ylab="pierwsza zmienna kanoniczna") symbole <-c(rep("Q",20),rep("X",9)) text(equake.pred$x,symbole,cex=0.8) abline(0,0) X X X X 2 X X X X 1 Q Q 0 QQ Q Q Q Q −1 pierwsza zmienna kanoniczna 3 4 X Q −2 Q Q Q Q Q Q 0 5 Q Q Q QQ 10 15 20 25 30 index Rysunek 3: Wykres warto±ci pierwszej zmiennej kanonicznej Wida¢ na tym wykresie, »e faktycznie je±li prosta rozdzialaj¡ca obie klasy b¦dzie w tym miejscu w którym jest teraz, wówczas obserwacja numer 1 zostanie ¹le zaklasykowana. 10 6 3 klasy, 2 zmienne obja±niaj¡ce Dobrze znanym i cz¦sto analizowanym zbiorem danych jest zbiór irysów, dziel¡cy 150 obserwacji do 3 klas: setosa, virginica i versicolor. > > > > irysy<-read.table("d:\\iris1.txt",header=TRUE) irysy.lda=lda(Species~Petal.Length+Petal.Width,data=iris) irysy.pred=predict(irysy.lda) print(tabl<-table(irysy$Species,irysy.pred$class)) Efektem jest wy±wietlenie poprawnie sklasykowanych elementów próby: setosa versicolor virginica setosa versicolor virginica 50 0 0 0 48 2 0 4 46 Je±li chcemy pozna¢ procent poprawnej klasykacji dla próby treningowej musimy jedynie u»y¢ komend: > procent<-(100*sum(diag(tabl))/sum(tabl)) > print(procent) W efekcie otrzymamy warto±¢: [1] "Procent poprawnej klasyfikacji dla proby treningowej" [1] 96 Wykres rozproszenia z zaznaczeniem numerów klas wyznaczymy za pomoc¡ komendy: > plot(irysy[,c(2,5)],type="n",xlab="Petal.Length",ylab="Petal.Width") > text(irysy$Petal.Length,irysy$Petal.Width,as.character(irysy$Species),cex=0.8) 6.1 Dyskryminacja metod¡ QDA Chc¡c u»y¢ kwadratowej funkcji dyskryminacyjnej dla tego samego zbioru obserwacji z trzema klasami musimy po prostu wywoªa¢ zamiast funkcji lda funkcj¦ qda: > irysy.qda=qda(Species~Petal.Length+Petal.Width,data=iris) > irysy.predQ = predict(irysy.qda) > print(tabl<-table(irysy$Species,irysy.predQ$class)) W efekcie tabela reklasykacji przedstawia si¦ nast¦puj¡co: setosa versicolor virginica setosa versicolor virginica 50 0 0 0 49 1 0 2 48 Analoglicznie jak dla lda procent poprawnej klasykacji wyznaczymy poprzez wywoªanie komend: > procent<-100*(sum(diag(tabl))/sum(tabl)) > print(procent) Dla tego zbioru wynosi on [1] 98. 11 6.2 LDA dla zbioru iris dla wszystkich 4 zmiennych obja- ±niaj¡cych Wczytanie caªego zbioru do analizy oraz wywoªanie funkcji lda wygl¡da nast¦puj¡co: > irysy<-read.table("d:\\iris1.txt",header=TRUE) > irysy.lda <-lda(Species~.,data=iris) > print(irysy.lda) W efekcie otrzymyjemy raport: Call: lda(Species ~ ., data = iris) Prior probabilities of groups: setosa versicolor virginica 0.3333333 0.3333333 0.3333333 Group means: Sepal.Length Sepal.Width Petal.Length Petal.Width setosa 5.006 3.428 1.462 0.246 versicolor 5.936 2.770 4.260 1.326 virginica 6.588 2.974 5.552 2.026 Coefficients of linear discriminants: LD1 LD2 Sepal.Length 0.8293776 0.02410215 Sepal.Width 1.5344731 2.16452123 Petal.Length -2.2012117 -0.93192121 Petal.Width -2.8104603 2.83918785 Proportion of trace: LD1 LD2 0.9912 0.0088 > Je±li chcemy wyrysowa¢ po prostu obserwacje z trzech ró»nych klas innymi kolorem i symbolem na wykresie to mo»liwe to b¦dzie przez wykonanie nast¦puj¡cych instrukcji: > > > > kolor <-c(rep("black",50),rep("red",50),rep("blue",50)) symbole <-c(rep("Q",50),rep("X",50),rep("Y",50)) plot(irysy$Sepal.Width, irysy$Sepal.Length, type="n",xlab="",ylab="") text(irysy$Sepal.Width,irysy$Sepal.Length,symbole,col=kolor) Efektem b¦dzie wykres 4. 6.3 Inne fragmenty analizy z u»yciem R dla zbioru iris Kod programu w ±rodowisku R, który zliczy liczebno±¢ klas ze zbioru iris, gdzie obserwacje z ró»nych klas maj¡ inne symbole (s, c lub v), i tylko dla losowych 75 obserwacji, wygl¡da nast¦puj¡co: 12 8.0 7.5 7.0 Y 6.5 6.0 5.5 5.0 4.5 X Y Y Y X X Y X Y X X Y X X X X X X X X X X Y X Q 2.0 Y Y Y Y Y X Y X Y Y Y Y Y Y X X X X X Y Y Y X Y X Y Y Y Y Y X Y Y X X X X Y X Y X Y X X Q Y Q X X X Y X X Q Q Q Q Q X Q QQ Q QQQ QQ Q QQQQQ QQ Q QQ Q Q QQ Q Q QQ Q Q X Y X Y X Y Y Y Y Y Y 2.5 3.0 3.5 Q 4.0 Rysunek 4: Wykres rozrzutu obserwacji ze zbioru Iris > data(iris3) > Iris <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]), Sp = rep(c("s","c","v"), rep(50,3))) > train <- sample(1:150, 75) > table(Iris$Sp[train]) Efektem b¦dzie c s v 28 20 27 co oznacza jak ªatwo si¦ domy±le¢, »e w zbiorze ucz¡cym wyst¡piªo 28 obserwacje z klasy oznaczonej c, 20 obserwacji z klasy s oraz 27 z klasy v. Je±li rozszerzymy t¦ analiz¦ na caªy zbiór obserwacji, który jak wiadomo w oryginale liczy 150 obserwacji efekt b¦dzie nast¦puj¡cy: > train <- sample(1:150, 150) > table(Iris$Sp[train]) c s v 50 50 50 Je±li teraz chcemy znale¹¢ dla takiego zbioru reguª¦ klasykacyjn¡, u»yjemy funkcji lda nast¦puj¡co: > train <- sample(1:150, 75) > table(Iris$Sp[train]) c s v 29 22 24 > z <- lda(Sp ~ ., Iris, prior = c(1,1,1)/3, subset = train) > predict(z, Iris[-train, ])$class 13 [1] s s s s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c v c c c c [39] c c c c c c c c c c c v v v v v v v v v v v v v v v v v v v v v v v v v v Levels: c s v Zastosowali±my tu tak»e równocze±nie funkcj¦ sªu»¡c¡ predykcji, która dla ka»dej z 75 obserwacji podaªa przewidywan¡ klas¦ przynale»no±ci. Je±li np nie chcemy u»ywa¢ pewnej zmiennej w predykcji np. zmiennej Petal.W mo»emy to zrobi¢ nast¦puj¡co: > (z1 <- update(z, . ~ . - Petal.W.)) Wówczas na ekranie zobaczymy raport: Call: lda(Sp ~ Sepal.L. + Sepal.W. + Petal.L., data = Iris, prior = c(1, 1, 1)/3, subset = train) Prior probabilities of groups: c s v 0.3333333 0.3333333 0.3333333 Group means: Sepal.L. Sepal.W. c 5.872414 2.713793 s 5.009091 3.450000 v 6.616667 2.983333 Petal.L. 4.231034 1.477273 5.579167 Coefficients of linear discriminants: LD1 LD2 Sepal.L. 1.293012 -0.4744279 Sepal.W. 1.342522 2.9403952 Petal.L. -3.250248 0.6057279 Proportion of trace: LD1 LD2 0.9891 0.0109 > W raporcie tym, widzimy prawdopodobie«stwa przynale»no±ci do poszczególnych klas, ±rednie grupowe dla ka»dej klasy, przy uwzgl¦dnieniu oczywi±cie tylko tych trzech zmiennych obja±niaj¡cych: Sepal.L., Sepal.W. oraz Petal.L.. komenda do wyrysowania takiego modelu analizy dyskryminacyjnej przechowanej w z wygl¡da nast¦puj¡co: > plot(z, dimen=1) a jej efektem b¦dzie rysunek 5. Efektem wywoªania nast¦puj¡cego fragmentu programu w R: 14 0.4 0.2 0.0 −10 −5 0 5 0.0 0.2 0.4 group c −10 −5 0 5 0.0 0.2 0.4 group s −10 −5 0 5 group v Rysunek 5: Analiza dyskryminacyjna dla zbioru Iris > iris$klasa<-factor(rep(c("s","c","v"),rep(50,3))) > attach(iris) > lda.iris<-lda(klasa~Petal.Width+Petal.Length,data=iris) oraz komendy > print(lda.iris) b¦dzie wy±wietlenie nast¦puj¡cych wyników: Call: lda(klasa ~ Petal.Width + Petal.Length, data = iris) Prior probabilities of groups: c s v 0.3333333 0.3333333 0.3333333 Group means: Petal.Width Petal.Length c 1.326 4.260 s 0.246 1.462 v 2.026 5.552 Coefficients of linear discriminants: LD1 LD2 Petal.Width -2.402394 5.042599 Petal.Length -1.544371 -2.161222 Proportion of trace: LD1 LD2 0.9947 0.0053 Taki raport najpierw przedstawia nam prawdopodobie«stwa dla klas obliczone na podstawie zbioru ucz¡cego. Poniewa» wiadomo, »e w zbiorze iris 150 obserwacji jest równo podzielone na 3 klasy, w ka»dej po 50 obiektów, tak 15 te» równo rozkªadaj¡ si¦ tu prawdopodobie«stwa. Cz¦±¢ raportu mówi¡ca o wspóªrz¦dnych ±rodków ci¦»ko±ci to blok okre±lony jako: Group means: Petal.Width Petal.Length c 1.326 4.260 s 0.246 1.462 v 2.026 5.552 Liniowe funkcje dyskryminacyjne odczytamy z kolejnego fragmentu raportu: Coefficients of linear discriminants: LD1 LD2 Petal.Width -2.402394 5.042599 Petal.Length -1.544371 -2.161222 Ostatni fragment raportu: Proportion of trace: LD1 LD2 0.9947 0.0053 pozwala porównywa¢ jako±ci obu funkcji dyskryminacyjnych dzi¦ki tzw. ±ladowi macierzy wariancji i kowariancji (Proportion of trace). Jak wida¢ pierwsza funkcja (LD1) wyja±nia 99.47% wariancji, za± druga jedynie 0.53%. Je±li analizowalismy liniowe funkcje dyskryminacyjne dla dwóch zmiennych obja±niaj¡cych: Petal.Width oraz Petal.Length to pierwsza funkcja dyskryminacyjna b¦dzie miaªa równanie postaci: LD1 = -2.402394 * Petal.Width - -1.544371 * Petal.Length a druga: LD2 =5.042599 * Petal.Width - -2.161222 * Petal.Length Z kolei wywoªanie komendy > plot(lda.iris,cex=1.0) sprawi, »e uzyskamy wykres obserwacji z próby ucz¡cej (z podziaªem na klasy) w przestrzeni obu zmiennych kanonicznych (rysunek 6). 7 Zadania do wykonania 1. Prosz¦ utworzy¢ funkcj¦ dyskryminacyjn¡ dla zbioru wine licz¡cego w oryginale 178 obserwacji opisanych 13 atrybutami. Do tworzenia funkcji prosz¦ u»y¢ tylko dwóch zmiennych: V 2 oraz V 8. 2. Równie» dla zbioru wine prosz¦ dokona¢ predykcji przynale»no±ci obserwacji do klas oraz sporz¡dzi¢ tabele klasykacji. 16 6 4 2 0 LD2 s s s s s s ss ss ss s s ss s ss ss s −6 −4 −2 v vv v vv v vv c v v vv vv v vc v c c v v v v vv c c v v c v c c cc c cc c c c c c c c c cc ccc c c c vv v v vv c c c v v v vv cc c v v v v v vv −6 −4 −2 0 2 4 6 LD1 Rysunek 6: Analiza dyskryminacyjna przy dwóch zmiennych kanonicznych 8 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. 3. http://www.ipipan.waw.pl/staff/j.mielniczuk/SSUS-Programy-Dane. zip 4. http://cran.r-project.org/web/packages/lda/lda.pdf 17