Wykład 3 Liniowe metody klasyfikacji. Wprowadzenie do klasyfikacji pod nadzorem. Fisherowska dyskryminacja liniowa.
Wprowadzenie do klasyfikacji pod nadzorem.
Klasyfikacja pod nadzorem Klasyfikacja jest przykładem funkcjonowania systemów uczących się czyli algorytmicznych metod uczenia się na podstawie danych Uczenie pod nadzorem: Dane: wektor zmiennych objaśniających (wejściowy) i wektor zmiennych objaśnianych (wyjściowy). Zadanie polega na nauczeniu się przez system na podstawie zaobserwowanego zbioru danych, zależności wiążącej wektor wejściowy z wektorem wyjściowym. Zadaniem systemu jest nauczenie się przewidzenia wartości wektora wyjściowego w odpowiedzi na przedstawienie wektora wejściowego. Nauka odbywa się dzięki obserwowaniu zbioru danych, tzw. zbioru uczącego (próby uczącej) Przykład: regresja liniowa algorytm uczy się nieznanych wartości parametrów funkcji regresji.
Klasyfikacja pod nadzorem Rozważana sytuacja g niezależnych prób losowych o licznościach n 1, n 2,..., n g z g różnych populacji (g 2). Obserwacje są wektorami losowymi o tym samym wymiarze p, (p 1). Dane: x 11, x 12,..., x 1n1, z klasy (populacji) 1. x 21, x 22,..., x 2n2, z klasy (populacji) 2... x g1, x g2,..., x gng, z klasy (populacji) g. x ki = (x (1) ki, x (2),..., x (p) ) - i-ta obserwacja z k-tej populacji. ki ki
Klasyfikacja pod nadzorem Krótko można to zapisać jako (x i, y i ) dla i = 1, 2,..., n, gdzie n = n 1 + n 2 + + n g x i oznacza i-tą obserwację y i - etykieta klasy do której należy x i, y i {1, 2,..., g} Mamy więc schemat: (wektor obserwacji; populacja do której wektor należy). Zadanie klasyfikacji pod nadzorem: podać regułę klasyfikacyjną przypisującą danej obserwacji przynależność do klasy ze zbioru {1, 2..., g} Regułę tworzymy w oparciu o próbę uczącą. Klasyfikację pod nadzorem nazywa się też klasyfikacją z nauczycielem.
Klasyfikacja pod nadzorem Utworzona na podstawie próby uczącej reguła pozwala każdemu zaobserwowanemu wektorowi x o którym nie wiemy do jakiej klasy należy, przypisać przynależność do pewnej klasy. Jest to zatem zadanie predykcji - przewidzenia klasy do której należy obserwacja. Reguły decyzyjne nazywamy klasyfikatorami. Tworzą one podział przestrzeni obserwacji na g rozłącznych podzbiorów Każdej nowej obserwacji (z nieznaną przynależnością do populacji) chcemy przydzielić pewną (domniemaną) klasę, popełniając możliwie mały błąd.
Klasyfikacja pod nadzorem Posiadając dostatecznie dużą liczbę danych, w celu oszacowania błędu, próbę uczącą dzieli się na podpróbę uczącą oraz podpróbę testową. Reguła konstruowana jest jedynie na podstawie podpróby uczącej. Obserwacje należące do podpróby testowej umożliwiają oszacowanie jakości predykcji (liczba błędnych klasyfikacji dokonanych na podpóbie testowej, porównanie oryginalnej etykiety z etykietą nadaną przez klasyfikator).
Klasyfikacja pod nadzorem - przykład - dane z dwóch klas Zadaniem klasyfikatora jest wyznaczenie prostej rozdzielającej klasy
Klasyfikacja pod nadzorem Przykłady zastosowania klasyfikacji pod nadzorem: Podleganie ryzyku zachorowania na daną chorobę Zdolność kredytowa klientów banku Maszynowe rozpoznawanie pisma Niechciane wiadomości (SPAM) Każdy z tych problemów można przedstawić jako zadanie klasyfikacji pod nadzorem, jeżeli posiadamy dostateczną ilość danych wraz z precyzyjną definicją grup. W praktyce procesy klasyfikacyjne obarczone są niepewnością wynikającą na ogół z braku rozdzielności klas.
Fisherowska dyskryminacja liniowa - przypadek dwóch klas Ronald Fisher (1936) zaproponował algorytm liniowej analizy dyskryminacyjnej (LDA) Metoda prowadzi do reguły dyskryminacyjnej (klasyfikacyjnej) opartej na funkcji liniowej. Dla przypadku dwóch klas zadanie polega na wyznaczeniu kierunku a, który najlepiej rozdziela dwie podpróby uczące. Reguła dyskryminacyjna jest wyznaczana następująco: Znaleźć kierunek ã najlepiej rozdzielający dwie podpróby uczące, tzn kierunku maksymalizującego wyrażenie (a T x 2 a T x 1) 2, a T W a gdzie x i,i = 1, 2 są średnimi próbkowymi w klasach 1. i 2. odpowiednio oraz W = 1 n 2 2 (n k 1)S k k=1 S k - próbkowe macierze kowariancji w klasach 1. i 2.
Fisherowska dyskryminacja liniowa - przypadek dwóch klas Mając kierunek ã najlepiej rozdzielający klasy oraz nową obserwację x o nieznanej klasie, zaklasyfikuj x do klasy j jeżeli dla k j, j {1, 2}. Definicja ã T x ã T x j < ã T x ã T x k Zmienną ãx nazywamy pierwszą zmienną kanoniczną odpowiadającą wektorowi x, wektor ã - pierwszym wektorem kanonicznym.
Fisherowska dyskryminacja liniowa - przypadek dwóch klas
Fisherowska dyskryminacja liniowa - problem wielu klas Zaproponowane rozwiązanie możemy uogólnić na przypadek większej liczby klas, czyli gdy g > 2. Należy: Znaleźć kierunek ã maksymalizujący wyrażenie a T Ba a T W a, gdzie B = 1 g 1 g k=1 n k(x k x)(x k x) T oraz W = 1 n g g (n k 1)S k k=1 S k - próbkowe macierze kowariancji w klasach k {1, 2,..., g}. Mając kierunek ã najlepiej rozdzielający klasy oraz nową obserwację x o nieznanej klasie, zaklasyfikuj x do klasy j jeżeli dla k j, j {1, 2,..., g}. ã T x ã T x j < ã T x ã T x k
Fisherowska dyskryminacja liniowa Zaproproponowana metoda rozdziela klasy poprzez rzutowanie obserwacji na jeden kierunek kanoniczny ã. Aby takie rozdzielenie było w miarę dobre, obserwacje muszą być dość korzystnie ułożone. Przykład: dwie klasy : (a) niewłaściwy kierunek rzutowania (b) kierunek właściwy dobrze rozdzielający klasy
Fisherowska dyskryminacja liniowa Przykład: trzy klasy
LDA - wiecej kierunków kanonicznych Czasami nie wystarcza wyznaczenie jednej prostej (jednego kierunku kanonicznego)
LDA - wiecej kierunków kanonicznych Mając wyznaczony pierwszy kierunek kanoniczny ã najlepiej rozdzielający klasy poszukujemy kolejnego kierunku najlepiej rozdzielającego klasy ( w pewnym sensie ortogonalnego do kierunku pierwszego). Mając kierunek drugi, możemy wyznaczyć trzeci itd. Kierunki te nazywamy kierunkami kanonicznymi, drugim, trzecim itd.
LDA - wiecej kierunków kanonicznych Formalnie zadanie wyznaczenia kierunków kanonicznych przyjmuje postać Znaleźć kierunki ã r, r = 1, 2,..., t, maksymalizujące wyrażenie przy ograniczeniach s = 1, 2,..., r 1. Tutaj ã 1 = ã. a T Ba a T W a, ã r T W ã s = 0 Definicja ã r T x nazywamy r-tą zmienną kanoniczną odpowiadającą wektorowi x, zaś ã r - r- tym wektorem kanonicznym.
Przypadek gdy nie istnieje prosta dyskryminacyjna Jeżeli punkty (0, 0) oraz (1, 1) pochodzą z jednej klasy, natomiast obserwacje (0, 1) oraz (1, 0) pochodzą z drugiej klasy, to nie istnieje prosta rozdzielająca klasy.
Atrybuty jakościowe Co jeśli obserwacje mają charakter jakościowy? Na przykład Wzrost : niski/ wysoki Płeć : kobieta/ mężczyzna Trzeba zakodować liczbowo. W przypadku dwóch możliwych wartości zmiennej jedną kodujemy jako 0, drugą jako 1 Wzrost : niski (0) / wysoki (1) Płeć : kobieta (1) / mężczyzna (0)
Atrybuty jakościowe Co jeśli mamy więcej niż dwie wartości? Wzrost : niski/ średni / wysoki Jeśli np.: Niski oznacza mniej niż 170 cm Wysoki oznacza więcej niż 180 cm to można zastosować kodowanie Niski : 165 Średni : 175 Wysoki : 185
Atrybuty jakościowe - metody skoringowe Sposobem radzenia sobie z atrybutem jakościowym o m > 2 wartościach jest zastosowanie tzw. metod skoringowych. Metody skoringowe przypisują atrybutom pewne wagi Przypiszemy wagi poziomom atrybutu jakościowego (np: wzrost niski (0.35), średni (0.45), wysoki (0.20)) Wag użyjemy jako poziomów, jako możliwych liczbowych wartości zmiennej.
Atrybuty jakościowe - klasyfikator bayesowski Klasyfikator bayesowski (lub reguła dyskryminacyjna Bayesa) działa następująco: Niech p(k x) oznacza prawdopodobieństwo, że zaobserwowana wartość x pochodzi z klasy k. Zaobserwowany wektor x klasyfikujemy jako pochodzący z tej klasy k dla której wartość p(k x), k = 1, 2,..., g jest największa. Czyli wybieramy najbardziej prawdopodobną klasę.
Klasyfikator bayesowski Załóżmy, że dysponujemy obserwacją x, o której nie wiemy do której klasy należy (np. nie wiemy czy zaklasyfikować osobę jako niską czy jako wysoką). p(1 x) oznacza prawdopodobieństwo, że zaobserwowana wartość x pochodzi z klasy 1 (osoba jest niska) p(2 x) oznacza prawdopodobieństwo, że zaobserwowana wartość x pochodzi z klasy 2 (osoba jest wysoka) Zaklasyfikujemy obserwację x jako pochodzącą z klasy 1 jeżeli p(1 x) > p(2 x) Zaklasyfikujemy obserwację x jako pochodzącą z klasy 2 jeżeli p(2 x) > p(1 x)
Klasyfikator bayesowski Prawdopodobieństwa p(k x) nazywamy p-stwami a posteriori i wyznaczamy ze wzoru: p(k x) = π kp(x k), gdzie p(x) = p(x) g π j p(x j) oraz π j, j {1, 2,..., g} są prawdopodobieństwami pojawienia się obserwacji z klasy j (nazywane prawdopodobieństwami a priori) j=1
Przykład Załóżmy, że dysponujemy danymi na temat osób o których wiemy na pewno, że chorowały na raka płuc. Jest to nasza próba ucząca. Dla nowej grupy osób, o których nie wiemy czy są chore (zbiór testowy) chcemy wyznaczyć ich przynależność do klasy chory lub zdrowy (czyli powiedzieć czy są chore czy nie i z jakim prawdopodobieństwem) W tym celu stosujemy prawdopodobieństwa (a priori) przynależności do klas (chory/zdrowy) z próby uczącej. Uwzględniając ponadto rozkłady cech w poszczególnych klasach (czyli p-stwa p(x k)) wyznaczamy prawdopodobieństwa (a posteriori) przynależności do klas dla osób z nowej grupy i klasyfikujemy je do klasy o większym p-stwie a posteriori.
Przykład - dane iris Dane iris zawierają informacje o długości i szerokości kielicha (sepal length/ width) długości i szerokości płatka (petal length/ width) w centymetrach, dla 50 kwiatów pochodzących z trzech różnych gatunków iris: Iris setosa, Iris versicolor, Iris virginica (Anderson (1935)). Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa... 148 6.5 3.0 5.2 2.0 virginica 149 6.2 3.4 5.4 2.3 virginica 150 5.9 3.0 5.1 1.8 virginica
Przykład - dane iris Za zmienną objaśnianą przyjmujemy gatunek (przynależność do jednej z trzech klas) Które zmienne są istotne? (regresja) Ile kierunków kanonicznych wystarczy? Za zmienne objaśniające przyjmujemy długość i szerokość płatka: 1 data ( iris ) 2 names ( iris ) = c(" sepal. length ", " sepal. width ", " petal. length ", " petal. width ", " iris. type ") 3 library ( MASS ) 4 iris. lda = lda ( iris. type ~ petal. length + petal. width, data=iris ) 5 iris. lda
Interpretacja wyniku Wartości prawdopodobieństw a priori dla trzech rozważanych gatunków: Prior probabilities of groups: setosa versicolor virginica 0.333 0.333 0.333 Średnie wartości zmiennych objaśniających (długość i szerokość płatka) w poszczególnych grupach: Group means: petal.length petal.width setosa 1.46 0.246 versicolor 4.26 1.326 virginica 5.55 2.026
Interpretacja wyniku Współczynniki funkcji dyskryminacyjnych Coefficients of linear discriminants: LD1 LD2 petal.length 1.54-2.16 petal.width 2.40 5.04 Wskazują która zmienna objaśniająca odgrywa istotną rolę. Im większy współczynnik zmiennej objaśniającej w funkcji dyskryminacyjnej, tym istotniejsza jego rola w funkcji dyskryminacyjnej. Współczynniki reprezentują korelacje cząstkowe: wkład zmiennej w wartość funkcji dyskryminacyjnej, gdy pozostałe zmienne znajdują się w modelu. Ograniczenia: w przypadku więcej niż dwóch kierunków kanonicznych, współczynniki są trudne do interpretacji.
Interpretacja wyniku Współczynniki funkcji dyskryminacyjnych Aby ocenić która z funkcji dyskryminacyjnych ma największą moc dyskryminacji oceniamy tzw. wartości singularne: każdej funkcji dyskryminacyjnej odpowiada wartosść singularna odzwierciedlają one część wariancji wyjaśnianej przez zmienne objaśniające w funkcji dyskryminacyjnej ich wzajemny stosunek pozwala ocenić relatywną istotność funkcji dyskryminującej. Uzyskujemy je stosując polecenie: 1 iris. lda $ svd > iris.lda$svd [1] 48.642644 4.579983 Pierwsza wartość odpowiada pierwszej, druga- drugiej funcji dyskryminacyjnej
Interpretacja wyniku Proporcje śladów Proportion of trace: LD1 LD2 0.9947 0.0053 Pierwsza liczba wskazuje procent wariancji międzygrupowej wyjaśnianej przez pierwszą funkcję dyskryminacyjną Wysoka wartość śladu oznacza, że funkcja dyskryminacyjna odgrywa istotną rolę.
Rysunek 1 LD1 <- predict ( iris. lda )$x[,1] 2 LD2 <- predict ( iris. lda )$x[,2] 3 # 1=" setosa " 4 # 2=" versicolor " 5 # 3=" virginica " 6 plot (LD1,LD2, xlab=" Pierwsza zmienna kanoniczna ", ylab=" Druga zmienna kanoniczna ", type="n") 7 text ( cbind (LD1, LD2 ), labels = unclass ( iris$iris. type ))
Rysunek Pozwala ocenić czy funkcje dyskryminacyjne właściwie rozdzielają grupy Rysunek zestawiamy ze średnimi wartościami funkcji dyskryminacyjnych w każdej z grup: 1 sum ( LD1 *( iris$iris. type ==" setosa "))/ sum ( iris$iris. type ==" setosa ") [1] 7.6 1 sum ( LD2 *( iris$iris. type ==" setosa "))/ sum ( iris$iris. type ==" setosa ") [1] 0.215 1 sum ( LD1 *( iris$iris. type ==" versicolor "))/ sum ( iris$iris. type ==" versicolor ") [1] -1.83 1 sum ( LD2 *( iris$iris. type ==" versicolor "))/ sum ( iris$iris. type ==" versicolor ") [1] -0.728
Rysunek 1 sum ( LD1 *( iris$iris. type ==" virginica "))/ sum ( iris$iris. type ==" virginica ") [1] -5.78 1 sum ( LD2 *( iris$iris. type ==" virginica "))/ sum ( iris$iris. type ==" virginica ") [1] 0.513
Predykcja Stosując wyestymowany model dyskryminacyjny, chcemy zaklasyfikować nowe obserwacje do jednej z trzech klas. Stosujemy następującą metodę: Obliczmy prawdopodobieństwa tego, że nowa obserwacja należy do konkretnej klasy, stosując wyestymowany model dyskryminacyjny. Te prawdopodobieństwa wyznaczamy dla wszystkich grup. Obserwacja zostanie zaklasyfikowana jako przynależąca do tej klasy, dla której prawdopodobieństwo przynależności jest największe. Wyznaczenie tych prawdopodobieństw wymaga informacji o wartościach p-stw a priori - zazwyczaj przyjmowane frakcje obserwacji w poszczególnych grupach.
Predykcja Dokonujemy predykcji na zbiorze testowym, aby sprawdzić jak dobrze wyestymowany model przewiduje przynależność do klas. Predykcja na nowym zbiorze danych ma na celu klasyfikację nowych obserwacji do poszczególnych grup. 1 ## Predykcja przynależności do klasy : 2 iris. predict <- predict ( iris.lda, iris [,1:4]) > iris.predict$class [1] setosa setosa setosa setosa setosa [9] setosa setosa setosa setosa setosa... [49] setosa setosa versicolor versicolor [57] versicolor...
Predykcja Prawdopodobieństwa przynależności do klas (a posteriori) > iris.predict$posterior setosa versicolor virginica 1 1.00e+00 3.90e-22 2.61e-42 2 1.00e+00 7.22e-18 5.04e-37 3 1.00e+00 1.46e-19 4.68e-39... Współczynniki funkcji dyskryminacyjnych > iris.predict$x LD1 LD2 1 8.062 0.30042 2 7.129-0.78666 3 7.490-0.26538...
Predykcja 1 ## Klasy do których należą obiekty : 2 iris. classify <- iris. predict $class > iris.classify [1] setosa setosa setosa setosa setosa [9] setosa setosa setosa setosa setosa... 1 ## Procent właściwie zaklasyfikowanych obiektów : 2 iris. classperc <-sum ( iris. classify == iris [,5]) / 150 > iris.classperc [1] 0.98 Poprawna klasyfikacja 98% obserwacji.
Ocena jakości dokonanej predykcji Aby ocenić jakość predykcji konstruuje się tabele predykcji Wiersze zawierają zaobserwowane przynależności do klas zmiennej objaśnianej Kolumny zawierają klasy przewidywane przez model dla zmiennej objaśnianej W sytuacji idealnej elementy poza przekątną tabeli powinny być równe zero.
Ocena jakości dokonanej predykcji 1 table ( Original =iris$iris. type, Predicted = predict ( iris. lda )$class ) Predicted Original setosa versicolor virginica setosa 50 0 0 versicolor 0 48 2 virginica 0 1 49 Oznacza to, że 50 spośród 50 obserwacji z grupy setosa zostało poprawnie zaklasyfikowanych przez model. Dwie obserwacje z grupy versicolor zostały błędnie zaklasyfikowane jako obserwacje z grupy virginica. Jedna obserwacja z grupy virginica została błędnie zaklasyfikowana jako obserwacja z grupy versicolor
Konieczne założenia Niezależność obserwacji. Normalność: macierz kowariancji zmiennych objaśniających taka sama we wszystkich grupach Jeśli nie jest spełnione założenie o normalności należy zastosować metodę kwadratowej analizy dyskryminacyjnej (QDA).
Przykład analizy QDA