Eksploracja danych Eksploracja danych 1 / 61
Lasy losowe (Random Forests) Pojedyncze drzewo decyzyjne daje prosty model, ale często jest zbyt trywialne lub zbyt szczegółowe. Las losowy łączy wiele drzew decyzyjnych w jeden zespół modeli. Możemy porównać to, do sposobu w jaki możemy połączyć panele ekspertów rozważających pewien problem, by potem dojść do wspólnej decyzji. Rządy, przemysł i uniwersytety wszystkie te instytucje zarządzają procesami biznesowymi w ten sposób. Często może to dawać lepsze wyniki w porównaniu do decyzji opartej na doświadczeniu jednego organu na dany temat. Eksploracja danych 2 / 61
Lasy losowe (Random Forests) Idea budowy wielu drzew wywodzi się z algorytmu multiple inductive learning (MIL, Williams, 1987, 1988). Zauważono, że podczas budowy jednego drzewa decyzyjnego, często nie było istotnej różnicy w wyborze między różnymi zmiennymi. Na przykład, dwie lub więcej zmiennych mogą być nierozróżnialne pod względem ich zdolności do podziału danych. Las losowy produkuje bardzo dokładne modele, ponieważ zespół zmniejsza niestabilność, którą możemy obserwować, podczas budowy pojedynczego drzewa. (na przykład: usunięcie małej liczby obserwacji ze szkoleniowego zestawu danych, prowadzi do uzyskania zupełnie innego drzewa decyzyjnego.) Eksploracja danych 3 / 61
Lasy losowe (Random Forests) Algorytm lasu losowego (i inne algorytmy zespołowe) jest bardziej odporny na zmiany danych, niż inne algorytmy. W związku z tym, jest bardzo odporny na szum (tzn. zmienne, które mają niewiele wspólnego ze zmienną docelową). Odporność na szum oznacza, że małe zmiany w szkoleniowym zestawie danych będą mieć niewielki (lub żaden) wpływ na ostateczne decyzje podjęte przez otrzymany model. Losowe lasy są na ogół konkurencyjne dla nieliniowych klasyfikatorów, takich jak sztuczne sieci neuronowe i support vector machines. Eksploracja danych 4 / 61
Lasy losowe (Random Forests) Lasy losowe sprawdzają się w zadaniach klasyfikacji dla niedostatecznie reprezentowanych przypadków. (na przykład: w binarnym zadaniu klasyfikacji, gdzie jedna klasa ma bardzo mało (np. 5 % lub mniej) obserwacji w porównaniu z drugą klasą.) Las losowy jest odporny na szum, punkty oddalone i przeuczenie, w porównaniu do klasyfikatora zbudowanego z jednego drzewa. Idea lasu losowego Algorytm buduje wiele drzew. Każde drzewo decyzyjne budowane jest do jego maksymalnej głębokości (bez przycinania). Każde pojedyncze drzewo jest nadmierne dopasowanie do danych, ale jest to zrekompensowane przez wiele drzew używających różnych zmiennych i różnie dopasowanych do danych. Losowość używana przez algorytm lasów losowych leży w wyborze obserwacji i zmiennych. Eksploracja danych 5 / 61
Lasy losowe (Random Forests) - zalety losowości Losowość daje również znaczne korzyści obliczeniowe. W budowaniu jednego drzewa decyzyjnego, algorytm może wybrać losowo podzbiór dostępnych obserwacji w szkoleniowym zbiorze danych. Ponadto, w każdym węźle podczas procesu budowania drzewa decyzyjnego, przy wyborze sposobu najlepszego podziału zestawu danych, wykorzystana jest tylko niewielka część wszystkich dostępnych zmiennych. To również znacznie zmniejsza złożoność obliczeniową. Eksploracja danych 6 / 61
Lasy losowe (Random Forests) Podsumowując: Małe zmiany w danych wejściowych(np ich normalizacja) nie wpływają na wynik. Lasy losowe są odporne na punkty oddalone. Nie ma potrzeby wyboru zmiennych, ponieważ algorytm robi to efektywnie za nas. Drzewa w lesie budowane są przy użyciu dwóch poziomów losowości (obserwacji i zmiennych). A każde drzewo jest wydajnym niezależnym modelem. Uzyskany wynikowy model na ogół nie jest przeuczony. Eksploracja danych 7 / 61
Reprezentacja wiedzy Algorytm lasu losowego buduje od 100 do 500 drzew. Decyzje podejmowane przez każde z drzew są połączone, traktując wszystkie drzewa jak równe. Ostateczna decyzja zespołu będzie decyzją większości drzew składowych. Jeśli 80 na 100 drzew w lesie, mówi że będzie padać jutro, to wybieramy tę decyzję i podejmujemy odpowiednie działania na wypadek deszczu. Nawet jeśli 51 z 100 drzew mówi, że będzie padać, możemy potraktować to jako decyzję, choć może z mniejszą pewnością. Eksploracja danych 8 / 61
Algorytm Każde drzewo decyzyjne w lesie, budowane jest jak pojedyncze drzewo decyzyjne. Istotą lasów losowych jest wybór zbioru treningowego i to jak zmienne są wybierane, aby dostawać różne drzewa. Algorytm lasu losowego buduje wiele drzew decyzyjnych, z wykorzystaniem koncepcji określanej w uczeniu maszynowym jako bagging lub bootstrap aggregating. Bagging to idea tworzenia losowych próbek obserwacji i zbierania ich w worku (bag). Eksploracja danych 9 / 61
Algorytm Algorytm tworzy wiele takich worków z losowo wybranych obserwacji, ze zbioru treningowego. Wybór obserwacji dopuszcza powtórzenia, co oznacza, że pojedyncza obserwacja może pojawiać się wiele razy w pojedynczym worku. Rozmiar próbki jest często taki sam jak rozmiar zbioru treningowego dla pełnego zestawu danych. W pojedynczym worku wygenerowanym dla jednego drzewa, znajduje się około dwóch trzecich obserwacji, a jedna trzecia zostanie pominięta. Następnie każdy worek obserwacji jest wykorzystywany jako zbiór danych szkoleniowych do budowania drzewa decyzyjnego (a te pominięte można stosować jako niezależne próbki do oceny wyników). Kolejny istotny element przypadkowości odnosi się do wyboru zmiennych dzielących zbiór danych. Na każdym etapie budowy pojedynczego węzła decyzyjnego (tzn. w każdym punkcie podziału drzewa), zazwyczaj wybierane są losowe i małe zestawy zmiennych. Eksploracja danych 10 / 61
Algorytm Jeśli n oznacza liczbę zmiennych wejściowych, to do budowy drzewa wybieranych jest zazwyczaj n zmiennych. Tylko te zmienne są brane pod uwagę przy wyborze punktu podziału. Dla każdego węzła, podczas budowy drzewa decyzyjnego, używany jest inny losowy zestaw zmiennych. Przez losowe pobieranie próbek zarówno danych i zmiennych, tworzymy drzewa decyzyjne, które mają różne wydajności dla różnych podzbiorów danych. Pozwala nam to rozważyć zespół takich drzew jako zespół specjalistów z różną wiedzą współpracujących razem, aby dostarczyć lepszą odpowiedź. Próbkowanie daje również inną istotną przewagę - obliczeniową wydajność. Rozważając tylko niewielki ułamek całkowitej liczby zmiennych podczas rozpatrywania podziałów, ilość obliczeń jest znacznie zmniejszona. Eksploracja danych 11 / 61
Algorytm Podczas budowy każdego drzewa decyzyjnego, algorytm lasu losowego nie wykona żadnego cięcia (pruning) drzewa decyzyjnego. Przy budowie pojedynczego drzewa decyzyjnego zauważyliśmy już wcześniej, że przycięcie jest konieczne, aby uniknąć zjawiska przeuczenia. Przeuczone modele raczej nie pracują dobrze na nowych danych. Jednakże, losowy las przeuczonych drzew może dawać bardzo dobry model, który sprawdza się na zupełnie nowych danych. Wdrażając wiele drzew decyzyjnych jako jeden model, każde drzewo ma równą wagę w końcowym procesie decyzyjnym. Zwykle większość może dyktować wynik. Tak więc, jeśli 300 na 500 drzew decyzyjnych przewiduje, że jutro będzie padać, to możemy spodziewać się jutro deszczu. Jeśli tylko 100 drzew na 500 przewidują deszcz jutro, to raczej nie będzie padać jutro. Eksploracja danych 12 / 61
Przykład budowy lasu w Rattle Naszym zadaniem jest ponownie przewidzieć prawdopodobieństwo deszczu jutro w oparciu o dzisiejsze warunki pogodowe. Będziemy to ilustrować za pomocą Rattlei bezpośrednio w R. W obu przypadkach zostanie użyty pakiet randomforest (Liaw i Wiener 2002). Pakiet ten zapewnia oryginalną implementację algorytmu lasów losowych stworzoną przez pomysłodawców. Zakładka Model w Rattlema polecenie Forest, które buduje las drzew decyzyjnych. Eksploracja danych 13 / 61
Przykład budowy lasu w Rattle Tworzenie lasu losowego w Rattle Eksploracja danych 14 / 61
Przykład budowy lasu w Rattle Pierwsze kilka linijek informuje o liczbie obserwacji użytych do budowy modelu. Następnie wskazane jest, że brakujące wartości w szkoleniowym zestawie danych są automatycznie przypisane. Jeśli imputacja brakujących wartości nie jest włączona, to liczba obserwacji będzie mniejsza niż dostępna, ponieważ domyślnie usuwane są wtedy obserwacje z brakującymi wartościami: Summary of the Random Forest Model ================================== Number of observations used to build the model: 256 Missing value imputation is active. Eksploracja danych 15 / 61
Przykład budowy lasu w Rattle Następne kilka linii to kod R, który wygenerował las: Call: randomforest(formula = RainTomorrow ~., data = crs$dataset[crs$sample, c(crs$input, crs$target)], ntree = 500, mtry = 4, importance = TRUE, replace = FALSE, na.action = na.roughfix) Widzimy, że liczba drzew (ntree) wynosi 500, a tylko 4 zmienne są rozważane jako ewentualne parametry podziału dla każdego węzła (mtry). Używamy też miary wagi zmiennych (importance), a obserwacje z brakującymi wartościami będą miały automatycznie przypisane wartości za pomocą metody na.roughfix. Eksploracja danych 16 / 61
Przykład budowy lasu w Rattle Następne kilka linii podają powyższe informacje w bardziej czytelny sposób. Warto zauważyć, że pewne wyniki mogą się trochę różnić na komputerach 32 bitowych i 64 bitowych. Type of random forest: classification Number of trees: 500 No. of variables tried at each split: 4 Eksploracja danych 17 / 61
Przykład budowy lasu w Rattle Następnie wypisane jest wskazanie wydajności modelu wynikowego. Oszacowanie Out-of-bag (OOB) poziomu błędu jest obliczone przy użyciu obserwacji, które nie są zawarte w worku, worek (bag) jest podzbiorem zbioru danych szkoleniowych stosowanych do budowy drzewa decyzyjnego, stąd pojęcie out-of-bag. To bezstronne oszacowanie błędu sugeruje, że kiedy powstały model będzie stosowany do nowych obserwacji, to odpowiedzi będą błędne w 13.28%. To znaczy, że jest w 86,72% poprawny, więc jest to dostatecznie dobry model. OOB estimate of error rate: 13.28% Eksploracja danych 18 / 61
Przykład budowy lasu w Rattle Po tej ogólnej mierze dokładności następuje macierz błędów, która rejestruje niezgodności między przewidywaniami modelu a rzeczywistymi wynikami z obserwacji szkoleniowych. Rzeczywiste obserwacje tworzą rzędy tabeli, podczas gdy kolumny odpowiadają temu co model przewiduje dla obserwacji. Komórki podają liczbę obserwacji w każdej kategorii. Oznacza to, że model przewiduje No a obserwacje mają Yes dla 26 przypadków. No Yes class.error No 207 8 0.0372093 Yes 26 15 0.6341463 Eksploracja danych 19 / 61
Przykład budowy lasu w Rattle No Yes class.error No 207 8 0.0372093 Yes 26 15 0.6341463 Widzimy, że model i zestaw danych szkoleniowych zgadzają się, że nie będzie deszczu dla 207 obserwacji. Zgadzają się, że będzie padać dla 15 obserwacji. Jednakże, jest 26 dni, w których model przewiduje, że nie pada następnego dnia, a jednak pada deszcz. Podobnie, model przewiduje, że będzie padać następnego dnia dla ośmiu obserwacji, gdy w rzeczywistości nie pada. Eksploracja danych 20 / 61
Przykład budowy lasu w Rattle No Yes class.error No 207 8 0.0372093 Yes 26 15 0.6341463 Ogólne błędy dla klas, również obliczone z danych out-of-bag, są zawarte w tabeli. Model daje błąd w przewidywaniu deszczu (Yes, kiedy w rzeczywistości nie pada) dla 63,41% obserwacji. Kontrastuje to z poziomem błędów 3,72%, gdy przewiduje błędnie, że pada deszcz jutro. Dopuszczalność takich błędów (false positives versus false negatives) zależy od wielu czynników. Przewidywania, że będzie padać jutro z błędem false positives może być pewną niedogodnością - nosimy parasol cały dzień. Jednak przewidując, że nie będzie padać i nie będąc na to przygotowanym false negatives, może to mieć gorsze dla nas konsekwencje. Eksploracja danych 21 / 61
Przykład budowy lasu w Rattle No Yes class.error No 207 8 0.0372093 Yes 26 15 0.6341463 Poziom błędów rzędu 63.41 % w przewidywaniu, że nie będzie deszczu może być problemem. Jedno z podejść losowych lasów do rozwiązania problemu związanego z fałszywą predykcją wartości No (false negatives) może polegać na doprowadzeniu do "równowagi" pomiędzy niedostatecznie reprezentowaną klasą (66 obserwacji RainTomorrow na Yes) i nadreprezentowaną klasą (300 obserwacji ma RainTomorrow o wartości No). Eksploracja danych 22 / 61
Przykład budowy lasu w Rattle W szkoleniowym zestawie danych proporcje tych obserwacji wynoszą 41 i 215, odpowiednio (po usunięciu wszelkich obserwacji z brakującymi wartościami). Możemy użyć opcji Sample Size (wielkość próbki), aby wymusić na algorytmie bardziej agresywne zachowanie w przewidywaniu, że będzie padać jutro. Będziemy pobierać próbki tak, aby taka sama liczba obserwacji z Yes i No była wybierana. Robimy to określając wartość 35,35 dla wielkości próby Macierz pomyłek dla powstałego losowego lasu: OOB estimate of error rate: 30.47% Confusion matrix: No Yes class.error No 145 70 0.3255814 Yes 8 33 0.1951220 Eksploracja danych 23 / 61
Przykład budowy lasu w Rattle OOB estimate of error rate: 30.47% Confusion matrix: No Yes class.error No 145 70 0.3255814 Yes 8 33 0.1951220 Poziom błędu, gdy pada deszcz jutro wynosi teraz 19,51%, a teraz mamy mokre 8 dni z 41, co jest lepsze niż 26 dni z 41 dni, w których możemy zmoknąć. Cena, jaką płacimy za tą zwiększoną dokładność w przewidywaniu, kiedy jest deszcz, jest to, że teraz mamy więcej dni przewidywanych jako deszczowe, gdy w rzeczywistości nie pada. Problem biznesowy dla naszego zadania oznacza, że chodzenie z parasolem jest mniej uciążliwe niż zmoknięcie, gdy pada deszcz, a my nie mamy parasola. Nie chcemy również nosić parasola cały czas. Eksploracja danych 24 / 61
Przykład budowy lasu w Rattle Jednym z problemów związanych z lasami losowymi, w porównaniu z pojedynczym drzewem decyzyjnym, jest to, że staje się trudne zrozumienie odkrytej wiedzy. Jednym ze sposobów, aby dowiedzieć się jaka wiedza jest odkrywana jest wzięcie pod uwagę ważności zmiennych, która wyliczona jest w oparciu o budowanie 500 drzew decyzyjnych. Eksploracja danych 25 / 61
Przykład budowy lasu w Rattle Tabela znaczenia zmiennych jest kolejną informacją, która pojawia się w widoku tekstowym: Tabela ważności zmiennych Eksploracja danych 26 / 61
Przykład budowy lasu w Rattle Tabela zawiera listę wszystkich zmiennych wejściowych, a następnie cztery miary wagi dla każdej zmiennej. Większe wartości wskazują, że zmienna jest stosunkowo ważniejsza. Tabela jest posortowana według miary dokładności (Accuracy). Eksploracja danych 27 / 61
Przykład budowy lasu w Rattle Podejście naiwne do pomiaru znaczenia zmiennej może polegać na zliczeniu ile razy zmienna pojawia się w zespole drzew decyzyjnych. Rzeczywiście jest to podejście naiwne, ponieważ zmienne mogą pojawić się na różnych poziomach w drzewie, a tym samym mają różne poziomy znaczenia. Większość miar bierze pod uwagę stopień poprawy drzewa przy użyciu danej zmiennej. Eksploracja danych 28 / 61
Przykład budowy lasu w Rattle Większy wpływ to ważniejsza zmienna. Rzeczywista wielkość miary nie jest tak istotna jak uszeregowanie zmiennych przez tą miarę. Ostatnią miarą jest całkowite zmniejszenie nieczystości węzła drzewa decyzyjnego (kryterium podziału Gini), gdy podział następuje za pomocą tej zmiennej. Kryterium podziału stosuje wtedy wskaźnik Giniego. Jest ona mierzona dla zmiennej dla wszystkich drzew dając miarę średniego spadku wskaźnika różnorodności Giniego dotyczącego tej zmiennej. Eksploracja danych 29 / 61
Przykład budowy lasu w Rattle Przycisk Importance wyświetla wykres tych miar ważności. Wg miary MeanDecreaseAccuracy Sunshine jest najważniejszą zmienną, a następnie Cloud3pm. Jest to w dużej mierze zgodne z drzewem decyzyjnym, które wcześniej zbudowaliśmy. Wykres wagi zmiennych Eksploracja danych 30 / 61
Przykład budowy lasu w Rattle Możemy również zauważyć, że zmienne kategorialne (np. kierunku wiatru WindGustDir, WindDir9am i WindDir3pm) mają większą wagę według miary Giniego niż średniej dokładności. To zachowanie wobec zmiennych kategorialnych z wieloma kategoriami, widoczne w mierze Giniego omówimy dalej. Warto zauważyć, że to zachowanie będzie wprowadzać nas w błąd w znaczeniu zmiennych kategorialnych. Eksploracja danych 31 / 61
Przykład budowy lasu w Rattle Na końcu widoku tekstowego widzimy jak długo trwało zbudowanie losowego lasu z 500 drzewami. Warto zauważyć, że nawet jeśli budujemy tak wiele drzew decyzyjnych, czas nadal jest poniżej 1 sekundy: Time taken: 0.37 secs Eksploracja danych 32 / 61
Przykład budowy lasu w Rattle Przydatnym narzędziem diagnostycznym jest wykres błędu, uzyskany za pomocą kliknięcia na przycisk Errors. Rysunek poniżej pokazuje wykres błędu dla naszego losowego lasu. Wykres podaje dokładność lasu drzew (jako poziom błędu na osi y) wobec liczby drzew, które zostały zawarte w lesie (oś x). Poziom błędu generalnie maleje dla większej liczby drzew. Eksploracja danych 33 / 61
Przykład budowy lasu w Rattle Kluczowym spostrzeżeniem jest to, że po pewnej liczbie drzew bardzo mało zmienia się przez dodanie kolejnych drzew do lasu. Z rysunku wydaje się, że wykraczając poza około 20 drzew w lesie niewiele dostajemy rozważając poziom błędu out-of-bag (OOB). Pozostałe dwa wykresy przedstawiają zmiany poziomu błędów związane z przewidywaniami modelu (tu mamy dwie klasy Yes i No i tyle dodatkowych wykresów). Również bierzemy je pod uwagę przy podejmowaniu decyzji, jak wiele drzew dodać do lasu. Eksploracja danych 34 / 61
Przykład budowy lasu w Rattle Inną z opcji dostępnych w Lesie jest przycisk Rules (Reguły) generujący dane w polu tekstowym. Kliknięcie tego przycisku spowoduje konwersję wybranego drzewa w zestaw reguł Eksploracja danych 35 / 61
Przykład budowy lasu w Rattle Jeśli wybrane drzewo to 0 (domyślnie 1), to wszystkie drzewa zostaną przekształcone do reguł. Trzeba uważać, ponieważ może to zająć bardzo dużo czasu dla 500 drzew i 20 lub więcej reguł dla drzewa (około 10000 reguł). Eksploracja danych 36 / 61
Boosting - wzmacnianie Meta-algorytm Boosting jest wydajny i umożliwia łatwe podejście do tworzenia modeli ED. Popularna odmiana nazywana jest AdaBoost (skrót od adaptacyjne wzmacnianie - adaptive boosting) został uznany jako najlepszy gotowy klasyfikator. Eksploracja danych 37 / 61
Boosting - wzmacnianie - idea algorytmu Algorytm buduje wiele modeli z zestawu danych przy użyciu innych algorytmów uczenia maszynowego. Po zbudowaniu modelu, algorytm przypisuje wagi do obserwacji w zbiorze danych. Wybiera obserwacje trudne do zamodelowania i zwiększa (boosts) ich wagi. Następnie budowana jest sekwencja takich modeli. Po każdym zbudowanym modelu wagi są modyfikowane, aby dać większą wagę tym obserwacjom, które są trudniejsze do sklasyfikowania. Eksploracja danych 38 / 61
Boosting - wzmacnianie Wagi "trudnych" obserwacji zazwyczaj oscylują w górę i w dół od jednego modelu do następnego. Ostateczny model jest sumą kolejnych modeli. Wynik każdego modelu jest ważony za pomocą oceny. Boosting nie wymaga szczególnego strojenia i niewiele trzeba założyć o algorytmie uczącym, z wyjątkiem tego, że powinien on być raczej słabym uczniem. Warto zwrócić uwagę, że boosting możne nie działać, jeśli nie ma wystarczających danych lub jeśli słabe modele są zbyt skomplikowane. Boosting jest również podatny na szum. Eksploracja danych 39 / 61
Boosting - wzmacnianie Algorytmy tego typu są zatem podobne do lasów losowych. Algorytm buduje zespół modeli, a następnie łączy, tak, aby dostarczyć lepszy model niż każdy ze składowych modeli. Boosting polega na tym, że po zakończeniu budowy jednego modelu, wszystkie obserwacje, które są nieprawidłowo sklasyfikowane przez ten model, są wzmacniane (boosted). Eksploracja danych 40 / 61
Boosting - wzmacnianie Wzmocniona obserwacja ma większą wagę w zbiorze danych, co powoduje jej nadreprezentację. Ma to taki skutek, że następny model z większym prawdopodobieństwem właściwie sklasyfikuje tę obserwację. Jeśli nie, wówczas obserwacja zostanie ponownie wzmocniona. W boostingu może być użyty dowolny model jako algorytm uczący. Najczęściej używany jest algorytm drzewa decyzyjnego. Eksploracja danych 41 / 61
Reprezentacja wiedzy i działanie Kluczowym rozszerzeniem dla reprezentacji wiedzy jest sposób, w który łączymy decyzje, które są podejmowane przez poszczególnych "ekspertów" lub modele. Boosting używa ważonego wyniku, przy czym każdy z modeli w zespole ma wagę odpowiadającą jakości jego ekspertyzy (np. mierzonej jako dokładność indywidualnego drzewa). Boosting często opiera się na wykorzystaniu słabego uczenia. Zespół złożony ze słabych uczniów może prowadzić do silnego i wydajnego modelu. Słaby algorytm uczenia, to taki który jest tylko nieznacznie lepszy niż losowe zgadywanie pod względem błędów (np. model daje złą decyzję mniej niż w 50%). Przykładem może być drzewo decyzyjne o głębokości 1 (tylko jeden punkt podziału, a zatem często nazywane pniem decyzyjnym - decision stump). Eksploracja danych 42 / 61
Przykład boostingu Przypuśćmy, że mamy dziesięć obserwacji. Każda obserwacja będzie miała początkową wagę 0.1. Budujemy drzewo decyzyjne, które błędnie klasyfikuje cztery obserwacje (np. obserwacje 7, 8, 9 i 10). Możemy obliczyć sumę wag tych błędnie zaklasyfikowanych obserwacji, która wynosi 0.4 (ogólnie oznaczamy ją przez ɛ). Jest to miara dokładności (właściwie niedokładności) modelu. Wartości ɛ używamy dalej jako miarę używaną do aktualizacji wag i oznaczenia wagi modelu. Eksploracja danych 43 / 61
Przykład boostingu Oznaczmy tą przekształconą wartość jako α. Ma ona często postać ( ) 1 ɛ 0.5 log. ɛ Nowe wagi dla błędnie zaklasyfikowanych obserwacji mogą być ponownie obliczone jako wartość e α razy stara waga. W naszym przykładzie α = 0.2027 (0.5 log ( ) 1 0.4 0.4.), a więc nowe wagi dla obserwacji 7, 8, 9 i 10 wyliczone jako e α razy 0.1. W naszym przypadku daje to wagi 0.1225. Eksploracja danych 44 / 61
Przykład boostingu "Budowniczy modeli" widzi, że niektóre obserwacje mają wyższą wagę, aby mieć większy wpływ na budowane drzewo. Zatem następne drzewo może być zbudowane tak, że aby poprawnie sklasyfikować obserwacje, które mają wyższe wagi (mają one większą reprezentację w szkoleniowym zestawie danych). Ten nowy model będzie znowu mieć błędy. Załóżmy, że ten model błędnie klasyfikuje obserwacje 1 i 8. Ich obecne wagi to 0.1 i 0.1225, odpowiednio. Tak więc, nowa wartość ɛ wynosi 0.1 + 0.1225, tzn. 0.2225. Następnie nowa α = 0.6256. Jest to waga, którą dostaje ten model po dodaniu do zestawu. Eksploracja danych 45 / 61
Przykład boostingu Używamy tej wartości do zmodyfikowania wag źle sklasyfikowanych obserwacji. Obserwacja 1 dostaje teraz wagę 0.1 e α czyli 0.1869, obserwacja 8 ma teraz wagę 0.1225 e α czyli 0.229. Obserwacja 8 ma teraz najwyższą wagę, ponieważ wydaje się być problematyczną obserwacją. Proces jest kontynuowany. Aby wdrożyć model, używamy wszystkich drzew z zestawu, do sklasyfikowania nowej obserwacji. Każde drzewo zwróci prawdopodobieństwo, że np.będzie padać jutro (liczbę z przedziału [0, 1]). Dla każdego drzewa jest to pomnożone przez wagę (α) skojarzoną z drzewem. Końcowy rezultat, to średnia tych wyników. Eksploracja danych 46 / 61
Przykład użycia modelu w Rattle Opcja Boost na karcie Model buduje grupę drzew decyzyjnych, stosując podejście wzmacniania błędnie zaklasyfikowanych obserwacji. Indywidualne drzewa decyzyjne są budowane przy użyciu pakietu rpart. Wynik budowania modelu jest wyświetlony w obszarze tekstowym. Eksploracja danych 47 / 61
Przykład użycia modelu w Rattle Budowanie modelu za pomocą AdaBoost Eksploracja danych 48 / 61
Przykład użycia modelu w Rattle Widok tekstowy zaczyna się zwykle od podsumowania funkcji wywoływanej do budowy modelu: Summary of the Ada Boost model: Call: ada(raintomorrow ~., data = crs$dataset[crs$train, c(crs$input, crs$target)], control = rpart::rpart.control(maxdepth = 30, cp = 0.01, minsplit = 20, xval = 10), iter = 50) Loss: exponential Method: discrete Iteration: 50 Eksploracja danych 49 / 61
Przykład użycia modelu w Rattle Model przewiduje wartość RainTomorrow na podstawie pozostałych zmiennych. Zbiór danych składa się z zestawu danych załadowanych do Rattle, ale wybrane są tylko obserwacje, których indeks znajduje się w wykazie danych szkoleniowych i wszystkie kolumny za wyjątkiem 1, 2, i 23. Argument control= jest przekazywany bezpośrednio do rpart () i ma takie samo znaczenie jak wcześniej omawialiśmy dla rpart (). Liczba drzew jest określona przez argument iter=. Następna linia informuje o niektórych parametrach wykorzystywanych do budowy modelu. Nie będziemy zagłębiać się w szczegóły jeśli chodzi o Loss (strata) i Method (metodę). W skrócie strata jest wykładnicza, co oznacza, że algorytm minimalizuje tzw. funkcję wykładniczą strat (exponential loss function), a metoda stosowana w algorytmie jest dyskretna (discrete), a nie gentle lub real. Iteration (iteracja): po prostu oznacza liczbę drzew. Eksploracja danych 50 / 61
Przykład użycia modelu w Rattle Macierz pomyłek (confusion matrix) prezentuje wydajność modelu na zbiorze treningowym, a następna linia podaje błąd na zbiorze treningowym: Final Confusion Matrix for Data: Final Prediction True value No Yes No 214 1 Yes 12 29 Train Error: 0.051 Eksploracja danych 51 / 61
Przykład użycia modelu w Rattle Następnie wyświetlony jest błąd out-of-bag(błąd klasyfikatora) i związana z nim iteracja. Następnie mamy sugestię liczby powtórzeń w oparciu o błąd na zbiorze treningowym i miarę błędów opartą na statystyce Kappa. Korzystając z tych szacunkowych błędów, sugerowana jest najlepsza liczba iteracji: Out-Of-Bag Error: 0.066 iteration= 39 Additional Estimates of number of iterations: train.err1 train.kap1 48 48 Eksploracja danych 52 / 61
Przykład użycia modelu w Rattle Następnie pojawia się lista zmiennych używanych do konstrukcji drzew i częstotliwość ich użycia: Variables actually used in tree construction:... Frequency~of~variables~actually~used:... Częstotliwość jest podana malejąco od najczęstszych zmiennych. Eksploracja danych 53 / 61
Przykład użycia modelu w Rattle Funkcja ada() działa dłużej niż randomforest(), ponieważ używa ona do budowy drzew rpart(), a nie specjalnie napisanego kodu w języku Fortran jak w przypadku randomforest() Time taken: 0.70 secs Eksploracja danych 54 / 61
Przykład użycia modelu w Rattle Po zbudowaniu modelu, przycisk Errors (Błędy) wyświetla wykres malejącego błędu w trakcie dodawania drzew do modelu. Na krzywej mamy pięć jedynek służących do identyfikacji tej krzywej. Błąd w zależności od ilości drzew Eksploracja danych 55 / 61
Przykład użycia modelu w Rattle Wykres ten jest typowy dla zestawów obserwacji, gdzie błąd spada dość szybko na początku a później jego spadek jest już raczej mniejszy. Na podstawie wykresu możemy zdecydować o liczbie drzew w modelu (po 20 błąd już tylko nieznacznie maleje). Błąd w zależności od ilości drzew Eksploracja danych 56 / 61
Przykład użycia modelu w Rattle Algorytm ada dostarcza również miarę znaczenia zmiennych. Wykres znaczenia zmiennych dla modelu boosting Eksploracja danych 57 / 61
Przykład użycia modelu w Rattle Wykres znaczenia zmiennych dla modelu boosting Miara jest względna, stąd kolejności i odległości między wynikami są bardziej istotne niż rzeczywiste wyniki. Miara obliczana jest dla każdego drzewa i pokazuje poprawę dokładności jaką daje wybrana zmienna dla podziału zbioru danych. Jest to następnie uśrednione dla wszystkich drzew w zespole. Eksploracja danych 58 / 61
Przykład użycia modelu w Rattle Rattleudostępnia kilka podstawowych możliwości tuningu algorytmu boosting. Pierwszą opcją jest liczba drzew, która jest ustawiona domyślnie na 50. Głębokość (Max Depth), Min Split i złożoność (Complexity) są używane przez algorytm drzew decyzyjnych i zostały już omówione. Przycisk Continue (Kontynuuj) umożliwia dodawanie do modelu dalszych drzew. To pozwala na łatwe testowanie bez uruchamiania ponownie modelowania, czy dodanie kolejnych drzew będzie dawać dużą poprawę w działaniu modelu. Aby dodać kolejne drzewa należy zwiększyć wartość określoną w polu Number of Trees (Liczba Drzew), a następnie kliknąć przycisk Continue. Pozwoli to na rozbudowanie wcześniejszego modelu i dodawanie tak wielu drzew, jak jest potrzebne. Eksploracja danych 59 / 61
Boosting Hung Son Nguyen. Systemy decyzyjne Wykład w formie wideo (MIT 6.034 Artificial Intelligence, Fall 2010): 17. Learning: Boosting. Eksploracja danych 60 / 61
Dziękuję za uwagę!!! Eksploracja danych 61 / 61