GLM (Generalized Linear Models) Data Mining Wykład 6 Naiwny klasyfikator Bayes a Maszyna wektorów nośnych (SVM) Naiwny klasyfikator Bayesa Naiwny klasyfikator Bayesa jest klasyfikatorem statystycznym - oparty na twierdzeniu Bayesa Niech X oznacza przykład, którego klasa nie jest znana. Każdy przykład jest reprezentowany w postaci n-wymiarowego wektora, X=(x1, x2,..., xn) P(C X) prawdopodobieństwo a-posteriori (prawdopodobieństwo obliczane na podstawie wyników doświadczenia, czyli częstości), że przykład X należy do klasy C Reguła Bayesa Przykład X klasyfikujemy jako pochodzący z tej klasy C i, dla której wartość P(C i X), i = 1, 2,..., m, jest największa 1
Naiwny klasyfikator Bayesa - Przykład Przykład: Dany zbiór przykładów opisujących wnioski kredytowe klientów banku: P(Ryzyko=niskie Wiek=38, Status=rozwodnik, Dochód=niski, Dzieci=2) oznacza prawdopodobieństwo a-posteriori, że klient, X=(38, rozwodnik, niski, 2), składający wniosek kredytowy jest klientem o niskim ryzyku kredytowym (klient wiarygodny) Twierdzenie Bayesa W jaki sposób oszacować prawdopodobieństwo a- posteriori P(C X)? P(C X) = (P(X C) * P(C))/P(X), P(C) oznacza prawdopodobieństwo a-priori wystąpienia klasy C (tj. prawdopodobieństwo, że dowolny przykład należy do klasy C), P(X C) oznacza prawdopodobieństwo a-posteriori, że X należy do klasy C, P(X) oznacza prawdopodobieństwo a-priori wystąpienia przykładu X Naiwny klasyfikator Bayesa (1) Dany jest zbiór treningowy D składający się z n przykładów Załóżmy, że atrybut decyzyjny przyjmuje m różnych wartości definiując m różnych klas C i, i = 1,..., m Niech si oznacza liczbę przykładów z D należących do klasy C i Klasyfikator Bayesa przypisuje nieznany przykład X do tej klasy C i, dla której wartość P(C i X) jest największa 2
Naiwny klasyfikator Bayesa (2) Prawdopodobieństwo P(X) jest stałe dla wszystkich klas - klasa C i, dla której wartość P(C i X) jest największa, to klasa C i, dla której wartość P(X C i ) * P(C i ) jest największa Wartości P(C i ) zastępujemy estymatorami s i /n (względną częstością klasy C i ), lub zakładamy, że wszystkie klasy mają to samo prawdopodobieństwo P(C 1 ) = P(C 2 ) =... = P(C m ) Naiwny klasyfikator Bayesa (3) W jaki sposób obliczyć P(X C i )? Dla dużych zbiorów danych, o dużej liczbie deskryptorów, obliczenie P(X C i ) będzie bardzo kosztowne Wymaga ono oszacowania ogromnej liczby prawdopodobieństw i jest rzędu k p, gdzie p oznacza zmienne, natomiast k oznacza liczbę wartości tych zmiennych np. dla p=30 -> 2 30 czyli około 10 9 Przyjmując założenie o niezależności atrybutów, możemy przyjąć, że wszystkie zmienne są warunkowo niezależne przy danych klasach. Wówczas możemy zastąpić prawdopodobieństwo warunkowe P(X Ci) iloczynem prawdopodobieństw P(X C i ) = j=1n P(x j C i ) Naiwny klasyfikator Bayesa (4) Prawdopodobieństwa P(x 1 C i ), P(x 2 C i ),..., P(x n C i ) można estymować w oparciu o zbiór treningowy następująco: jeżeli j-ty atrybut jest atrybutem kategorycznym, to P(x j C i ) estymujemy względną częstością występowania przykładów z klasy C i posiadających wartość x j dla j-tego atrybutu, (s ij /s i ) jeżeli j-ty atrybut jest atrybutem ciągłym, to P(x j C i ) estymujemy funkcją gęstości Gaussa (zakładając rozkład normalny wartości atrybutów) 3
Przykład (1) Rozważmy Przykład: Chcemy dokonać predykcji klasy, do której należy nowy przypadek C1 (kupi_ komputer = tak ) C2 (kupi _ komputer = nie ) Nowy przypadek: X = (wiek= <=30, dochód= średni, student = tak, status= kawaler ) Maksymalizujemy wartość P(X/C i )*P(C i ), dla i=1,2 Przykład (2) Przykład (3) P(kupi_komputer = tak ) = P(C1) = 9/14 = 0.643 P(kupi_ komputer = nie ) = P(C2) = 5/14= 0.357 P(wiek <= 30 kupi_ komputer = tak ) = 2/9 = 0.222 P(wiek <= 30 kupi_ komputer = nie ) = 3/5 = 0.6 P(dochód = średni kupi_ komputer = tak ) = 4/9 = 0.444 P(dochód = średni kupi_ komputer = nie ) = 2/5 = 0.4 P(student = tak kupi_ komputer = tak ) = 6/9 = 0.667 P(student = tak kupi_ komputer = nie ) = 1/5 = 0.2 P(status = kawaler kupi_ komputer = tak ) = 6/9 = 0.667 P(status = kawaler kupi_ komputer = nie ) = 2/9 = 0.4 4
Przykład (4) Korzystając z obliczonych prawdopodobieństw, otrzymujemy: P(X kupi_komputer= tak ) = 0.222 * 0.444 * 0.667 * 0.667 = 0.044 P(X kupi_komputer= nie ) = 0.600 * 0.400 * 0.200 * 0.400 = 0.019 Stąd: P(X kupi_ komputer= tak ) * P(kupi_ komputer= tak ) = 0.044 * 0.643 = 0.028 P(X kupi_ komputer= nie ) * P(kupi_ komputer= nie ) = 0.019 * 0.357 = 0.007 Naiwny klasyfikator Bayesa zaklasyfikuje nowy przypadek X do klasy: kupi_komputer = tak Problem częstości zero A co jeżeli dana wartość atrybutu nie występuje dla wszystkich klas? Przykładowo: wiek= 31..40 dla klasy nie Prawdopodobieństwo wynosi 0, tj. P(wiek= 31..40 kupi_komputer= nie ) = 0 A-posteriori prawdopodobieństwo również wynosi 0 Rozwiązanie: dodać 1 do licznika wystąpień każdej pary <wartość atrybutu klasa> (estymator Laplace a) Podsumowanie - Naiwny klasyfikator Bayesa Założenie o niezależności atrybutów znacznie redukuje koszt obliczeń Jeżeli założenie jest spełnione, naiwny klasyfikator Bayes a jest optymalny, tzn. zapewnia najlepszą dokładność klasyfikacji w porównaniu z innymi klasyfikatorami Założenie rzadko spełnione w praktyce jednakże naiwny klasyfikator Bayes a jest zadziwiająco dokładny 5
Maszyna wektorów nośnych W przestrzeni danych (ang. measurement space) Ω znajduj ą si ę wektory danych x stanowiące próbkę uczącą D, należące do dwóch klas: Szukamy klasyfikatora pozwalającego na podział całej przestrzeni Ω na dwa rozłączne obszary odpowiadającej klasom {1,-1} oraz pozwalającego jak najlepiej klasyfikować nowe obiekty x do klas Podejście opiera się na znalezieniu tzw. granicy decyzyjnej między klasami g( x ) Separowalność liniowa Dwie klasy są liniowo separowalne, jeśli istnieje hiperpłaszczyzna H postaci g(x) przyjmująca wartości Jak poszukiwać takiej hiperpłaszczyzny granicznej? Liniowa funkcja separująca Funkcja liniowa separująca Wyznacza podział przestrzeni na obszary odpowiadające dwóm klasom decyzyjnym. Oryginalna propozycja Fisher, ale tak że inne metody (perceptron, itp..) Uogólnienia dla wielu klas. 6
Support Vector Machine (SVM) Znajdź liniową hiperpłaszczyzn ę (decision boundary) oddzielające obszary przykładów z dwóch różnych klas Support Vector Machine (SVM) Jedno z możliwych rozwiązań Support Vector Machine (SVM) Inne możliwe rozwiązanie 7
Support Vector Machine (SVM) Zbiór wielu możliwych rozwiązań Support Vector Machine (SVM) Którą z hiperpłaszczyzn należy wybrać? B1 czy B2? Czy można to formalnie zdefiniować? Margines Hiperpłaszczyzny b i1 i b i2 są otrzymane przez równoległe przesuwanie hiperpłaszczyzny granicznej aż do pierwszych punktów z obu klas. Odległość między nimi margines klasyfikatora liniowego Jaki margines wybierać? 8
Węższe czy szersze marginesy? Szerszy margines - lepsze własności generalizacji, mniejsza podatność na ew. przeuczenie (overfitting) Wąski margines mała zmiana granicy, radykalne zmiany klasyfikacji Liniowe SVM hiperpłaszczyzna graniczna Vapnik poszukuj maximal margin classifier gdzie w i b s ą parametrami modelu Parametry granicy wyznaczaj tak, aby maksymalne marginesy b i1 i b i2 były miejscem geometrycznym punktów x spełniających warunki Margines odległość między płaszczyznami b i1 i b i2 Poszukiwanie parametrów hiperpłaszczyzny 9
Linear Support Vector Machines Sformułowanie problemu: Przy warunkach ograniczających Jest to problem optymalizacji kwadratowej z liniowymi ogr. uogólnione zadanie optymalizacji rozwiązywany metodą mnożników Lagrange a (tak aby np. nie dojść do w 0) Niepełna liniowa separowalność Co robić z LSVM gdy dane nie s ą w pełni liniowo separowalne? Zmienne dopełniające Drzewo decyzyjne po wprowadzeniu wierzchołka ma postać: 10
Zmienne osłabiające - interpretacja Zmienne ξ i 0 (ang. Soft Margin) dobiera się dla każdego przykładu uczącego. Jej wartość zmniejsza margines separacji. (rodzaj zwisu punktu poza hiperpłaszczyzną nośną) Jeżeli 0 ξ i 1, to punkt danych (x i,d i ) leży wewnątrz strefy separacji, ale po właściwej stronie Jeżeli ξ i >1, punkt po niewłaściwej stronie hiperpłaszczyzny i wystąpi błąd klasyfikacji Modyfikacja wymagań dla wektorów nośnych Nonlinear Support Vector Machines Co zrobić gdy próby uczące powinny być nieliniowo separowalne? Kernel Trick Transformacja do wysoce wielowymiarowej przestrzeni - tzw. Kernel Trick Kernel Trick - metoda mapowania obserwacji z pewnego zbioru S na przestrzeń unitarną V bez konieczności tworzenia explicite samego mapowania w nadziei, ze nabiorą one tam sensownej struktury liniowej. 11
Kernel Trick - Przykład Kernelem nazywamy funkcję K(x, y), która dla x, y S jest iloczynem skalarnym w pewnej przestrzeni V. Przykładowo mając mapowanie: Kernelem jest po prostu: Dlaczego Kernel Trick Dlaczego po prostu nie skonstruować mapowania i pracować na przestrzeni V zamiast S? 1. Złożoność obliczeniowa 2. O wiele trudniej znaleźć dobre mapowanie niż dobry kernel 3. Możliwość pracy na nieskończenie wymiarowych przestrzeniach. Najczęściej używane Kernele Kernel wielomianowy: Kernel Gaussowski: Kernel sigmoidalny: Kernel minimum (przecięcia histogramów): Kernel logarytmiczny: Budowanie kerneli: suma, iloczyn, iloczyn przez stałą dodatnią 12