´Cwiczenie 6. Hurtownie danych
Transkrypt
´Cwiczenie 6. Hurtownie danych
Ćwiczenie 6. Hurtownie danych Drzewa decyzyjne 1. Reprezentacja drzewa decyzyjnego Metody uczenia sie֒ drzew decyzyjnych to najcześciej stosowane algorytmy ֒ indukcji symbolicznej reprezentacji wiedzy z przykladów. Poniżej zostana֒ przedstawione najpopularniejsze algorytmy indukcji drzew, takie jak ID3 oraz C4.5. Drzewo decyzyjne sklada sie֒ z korzenia, z którego co najmniej dwie galezie (krawedzie) odchodza֒ do wez lów leżacych na niższym poziomie. ֒ ֒ ֒ ֒ Z każdym wez lem jest zwi azany test, który sprawdza wartości atrybutu ֒ ֒ opisujacego przyklady. Dla każdego z możliwych wyników testu odpowia֒ dajaca mu ga laź prowadzi do wez la leżacego na niższym poziomie drzewa. ֒ ֒ ֒ ֒ Wez ly, z których nie wychodza֒ żadne galezie, to liście. Przypisuje sie֒ klasy ֒ ֒ decyzyjne. Tworzenie drzew decyzyjnych ilustruje nastepuj acy przyklad. Niech bedzie ֒ ֒ ֒ dana pewna grupa klientów sklepu elektronicznego, z których cześć decyduje ֒ sie֒ na zakup komputera typu notebook, podczas gdy pozostali nie sa֒ gotowi do takiego zakupu. Sa֒ oni scharakteryzowani przez 3 atrybuty wyrażajace ֒ ocene֒ poziomu ich dochodów, stwierdzenie faktu, czy sa֒ studentami, oraz ich pleć. Na podstawie wartości tych atrybutów należy przewidzieć wartość atrybutu decyzyjnego kupuje komputer. Tabela 1. Zbór przykladów uczacych opisujacy grupe֒ osób, którzy sa֒ ֒ ֒ klientami sklepu elektronicznego Lp. 1 2 3 4 5 6 7 8 Dochody Student średnie tak średnie nie wysokie tak niskie tak niskie tak średnie tak niskie nie średnie nie Pleć meżczyzna ֒ kobieta kobieta meżczyzna ֒ kobieta kobieta kobieta meżczyzna ֒ kupuje komputer tak nie tak nie nie tak nie nie Za pomoca֒ algorytmu ID3 ze zbioru przykladów uczacych reprezentowa֒ nych w tabeli powyżej uzyskano drzewo decyzyjne, które przedstawiono na rysunku poniżej. Dochody niskie HH średnie HH wysokie HH ? j Nie Tak Student tak Tak @ nie @ @ R @ Nie Dzieki utworzonemu drzewu decyzyjnemu można klasyfikować klientów ֒ kupujacych komputery (np. typu notebook) w zależności od ich poziomu ֒ dochodów i statusu studenckiego. Na przyklad osoba bed aca kobieta֒ o do֒ ֒ chodach średnich i nie studiujaca nie kupuje komputera. Można dojść do ֒ tego analizujac ga l ezie drzewa do liścia (kupuje komputer = nie). Można za֒ ֒ uważyć, że pleć osoby nie odgrywa tu żadnej roli. Można zauważyć, że ścieżki prowadzace od korzenia do liścia drzewa repre֒ zentuja֒ koniunkcje pewnych wyrażeń (testów) zdefiniowanych na wartościach atrybutów opisujacych przyklady. Jeśli do tej samej klasy prowadzi kilka ֒ ścieżek, to tworza֒ one skladniki pewnej alternatywy. Stad też mówi sie, że ֒ ֒ drzewa decyzyjne pozwalaja֒ na nauczenie sie֒ pojeć, które można zdefiniować ֒ w postaci dysjunkcji takich koniunkcji. Na przyklad z powyżej przedstawionego drzewa można zdefiniować pojecie klienta pragnacego kupić komputer ֒ ֒ za pomoca֒ nastepuj acego wyrażenia dysjunkcyjnego: ֒ ֒ (dochody = srednie) ∧ (student = tak) ∨ (dochody = wysokie) Drzewo decyzyjne można też przedstawić jako zbiór regul określajacego ֒ przydzial obiektów do klas. Każda ścieżka drzewa od korzenia do liścia odpowiada regule. Dla drzewa przedstawionego na powyższym rysunku uzyskuje sie֒ 4 reguly: 1) if (dochody = niskie) then (kupuje komputer = nie) 2) if (dochody = średnie) ∧ (student = nie) then (kupuje komputer = nie) 3) if (dochody = wysokie) then (kupuje komputer = tak) 4) if (dochody = średnie) ∧ (student = tak) then (kupuje komputer = tak) Powinno sie֒ sprawdzić, czy wszystkie reguly posiadaja֒ nienadmiarowe koniunkcje warunków elementarnych. Można to wykonać za pomoca֒ operacji chwilowego pominiecia warunku w koniunkcji danej reguly (ang. dropping ֒ conditions) i porównania tak zmodyfikowanej reguly ze zbiorem przykladów uczacych. Jeśli regula nadal jednoznacznie klasyfikuje przyklady do wlaściwej ֒ klasy, to warunek może być zredukowany. W przeciwnym przypadku należy go odtworzyć w koniunkcji reguly. W powyższym zbiorze regul można zredukować regule֒ 2 do poniższej postaci, gdyż w tabeli podanej powyżej wszystkie osoby nie bed ace studentami równocześnie nie kupily komputerów: ֒ ֒ if (student = nie) then (kupuje komputer = nie) 2. Algorytm ID3 indukcji drzewa decyzyjnego Wiekszość algorytmów uczenia sie֒ drzew decyzyjnych jest oparta na podob֒ nym heurystycznym schemacie zstepuj acego konstruowania drzewa (nazwa ֒ ֒ angielska TDIDT - Top Down Induction of Decision Trees). Jest to rozwia֒ zanie użyte już w pierwszych algorytmach, takich jak ID3, CART, a nastepnie ֒ C4.5. Różnice miedzy konkretnymi algorytmami dotycza֒ przede wszystkim ֒ sposobu wyboru testu dla wez la zwiazanego z ocena֒ jakości podzialu zbio֒ ֒ ru przykladów w weźle, zasad podejmowania decyzji o utworzeniu liścia lub ֒ wez la oraz technik uwzgl edniania różnego rodzaju zaburzeń w opisie przy֒ ֒ kladów uczacych. ֒ Algorytm schematu zstepuj acego konstruowania drzewa odpowiadajacy ֒ ֒ ֒ wersji ID3 podano poniżej. Zaklada sie, że jest dostepny zbiór przykladów ֒ ֒ uczacych S. Jeżeli wszystkie przyklady należa֒ do tej samej klasy, to utwor֒ zony jest liść i przydzielana mu jest etykieta tej klasy. W przeciwnym razie jest tworzony weze l (w pierwszej iteracji jest to korzeń drzewa) i konieczne ֒ jest sformulowanie zwiazanego z nim testu. Rozważa sie֒ wszystkie możliwe ֒ atrybuty i ocenia ich przydatność do zbudowania testu prowadzacego do ֒ podzialu zbioru przykladów S na podzbiory jak najbardziej jednorodne w sensie przydzialu do klas (w oryginalnej postaci algorytmu ID3 test jest pytaniem o wartość danego atrybutu). Dokonuje sie֒ wyboru najlepszego z tych podzialów zgodnie z przyjet a miara֒ oceny jakości podzialu. Rozbudowuje ֒ ֒ sie֒ drzewo poprzez dodanie do wez la galezi odpowiadajacych poszczególnym ֒ ֒ ֒ wynikom testu. W przypadku algorytmu ID3 galezie odpowiadaj a֒ poszcze֒ gólnym wartościom v1 , v2 , . . . , vp atrybutu a. Podzbiór S jest podzielony na podzbiory zgodnie z wybranym testem. Nastepnie używa sie֒ rekurencyjnie ֒ napisanej procedury dla każdego z tych podzbiorów, budujac poddrzewo albo ֒ liść, jeśli zajdzie warunek zatrzymania. function buduj drzewo; input: S - zbiór przykladów wejściowych, A - zbiór atrybutów opisujacych ֒ przyklady (w przypadku ID3 atrybuty sa֒ jakościowe lub zdyskretyzowane); output: drzewo decyzyjne; begin Utwórz weze l t; {przy pierwszym wywolaniu korzeń drzewa} ֒ if wszystkie przyklady w S należa֒ do tej samej klasy K then return t jako liść z etykieta֒ klasy K; if zbiór A jest pusty then return t jako liść z etykieta֒ klasy do której należy wiekszość przykladów w S ֒ else begin wybierz atrybut a ∈ A, który najlepiej klasyfikuje przyklady z S zgodnie z przyjet a ֒ ֒ miara֒ oceny {dla ID3 jest information gain}; Przypisz wez lowi t test zbudowany na podstawie wybranego atrybutu a; ֒ for ∀vi wartośći atrybutu a do begin dodaj do wez la t galaź odpowiadajac a warunkowi (a = vi ); ֒ ֒ ֒ ֒ Niech Si bedzie podzbiorem przykladów z S, które posiadaja֒ wartość vi dla ֒ atrybutu a; if Si jest pusty then dodaj do galezi liść z etykieta֒ klasy, do której należy wiekszość przykladów w S ֒ ֒ else indukuj poddrzewo buduj drzewo(Ai , A - {a}) end; end; return drzewo o korzeniu w t end. Podstawowym problemem jschematu zstepuj acego konstruowania drzewa ֒ ֒ jest wybór atrybutu do zbudowania testu, na którego podstawie nastapi w ֒ weźle podzial zbioru przykladów. ”Dobrym” testem jest ten, który powoduje ֒ skrócenie ścieżki prowadzacej przez ten weze l do liści wskazujacych klase֒ de֒ ֒ ֒ cyzyjna.֒ Tak bedzie, gdy w każdym podzbiorze zwiazanym z galeziami wy֒ ֒ ֒ chodzacymi z wez la wszystkie przyklady lub ich wiekszość bedzie reprezento֒ ֒ ֒ ֒ wala jedna֒ klase. Wybór powinien być przeprowadzany na podstawie miary ֒ oceniajacej, na ile wartości danego atrybutu podziela֒ zbiór przykladów na ֒ podzbiory, które charakteryzuja֒ sie֒ maksymalna֒ jednorodnościa֒ w zakresie przydzialu do klas decyzyjnych. W algorytmie ID3 w tym celu wykorzystuje sie֒ miare֒ przyrostu informacji (ang. information gain). Aby ja֒ zdefiniować, należy wyjaśnić najpierw miare֒ entropii. Niech S bedzie zbiorem uczacym zawierajacym przyklady do jednej z k ֒ ֒ ֒ klas decyzyjnych, oznaczonych przez K1 , k2 , . . . , Kk . Niech n bedzie liczba֒ ֒ przykladów z S oraz ni niech oznacza liczebność klasy Ki . Entropia zwiazana ֒ z klasyfikacja֒ zbioru S jest zdefiniowana jako: Ent(S) = − k X pi log2 pi i=1 gdzie pi jest prawdopodobieństwem, że losowo wybrany przyklad z S należy do klasy Ki , estymowanym jako nni . Podstawa logarytmu jesdt równa 2, ponieważ entropia mierzy oczekiwana֒ liczbe֒ bitów do zakodowania informacji o klasyfikacji losowo wybranego przykladu ze zbioru S. Można zauważyć, że gdy którekolwiek pi = 0, to otrzymuje sie֒ 0 · log2 0 = 0. W przypadku rozważania klasyfikacji binarnej (k = 2) entropia przyjmuje wartości z przedzia?u [0, 1], przy czym maksymalna wartość, równa 1, osiagana jest ֒ dla p1 = p2 = 0.5, czyli dla przykladów o równomiernym rozkladzie klas. Najmniejsza֒ wartość, równa֒ 0, przyjmuje entropia, gdy wszystkie przyklady należa֒ do tej samej klasy. Interpretacja wartości entropii jest nastepuj aca: ֒ ֒ im mniejsza wartość entropii, tym w zbiorze S wystepuje wi eksza przewaga ֒ ֒ przydzialu przykladów do jednej z klas nad pozostalymi klasami. W przypadku użycia atrybutu a do zbudowania testu oblicza sie֒ entropie֒ warunkowa.֒ Niech atrybut a przyjmuje p różnych wartości {v1 , v2 , . . . , vp }. W algorytmie ID3 test w weźle jest konstruowany jako pytanie ”jaka jest ֒ wartość atrybutu a?”, czyli dokonuje sie֒ podzialu S na podzbiory {S1 , S2 , . . . , Sr }, gdzie Sj zawiera przyklady posiadajace dla atrybutu a wartość vj (j = ֒ 1, . . . , p). Liczebność zbioru Sj jest oznaczana jako nSj . Entropia podzialu zbioru przykladów S ze wzgledu na atrybut a jest zdefiniowana jako: ֒ Ent(S | a) = p X nSj · Ent(Sj ) j=1 n Można powiedzieć, że entropia Ent(S | a) jest średnia֒ ważona֒ dla entropii poszczególnych podzbiorów Sj . Im mniejsza wartość Ent(S | a), tym wieksza jednorodność klasyfikacji dla przykladów podzielonych na podzbiory. ֒ Przyrost informacji (ang. gain) wynika z zastosowania atrybutu a do zbudowania testu dzielacego zbiór przykladów uczacych S jest zdefiniowany ֒ ֒ jako różnica: Gain(S, a) = Ent(S) − Ent(S | a) Dzialanie algorytmu ID3 polega na przeszukiwaniu przestrzeni hipotez, tj. drzew decyzyjnych reprezentujacych funkcje klasyfikujace zdefiniowane ֒ ֒ na opisach przykladów. Przeszukiwanie jest wykonywane od poczatkowo ֒ pustego drzewa do drzew coraz bardziej skomplikowanych za pomoca֒ strategii heurystycznej sterowanej odpowiednia֒ funkcja֒ oceny, np. przyrostu informacji. W algorytmie ID3 dla danego wez la poszukuje sie֒ lokalnie najlepszego ֒ kandydata na stworzenie testu, przy czym wybór ten nie musi prowadzić do globalnie najlepszego drzewa. W typowych alg. indukcji drzew nie stosuje sie֒ operacji nawrotu, tzn. po wyborze atrybutu do testu dla danego wez la ֒ nie rozważa sie֒ ponownie zmiany tego atrybutu. 3. Algorytm C4.5, czyli dlaczego ID3 nie wystarcza? Algorytm ID3 ma nastepuj ace ograniczenia: ֒ ֒ 1) algorytm ID3 nie radzi sobie z ciag lymi dziedzinami atrybutów (zaklada, ֒ że wartości atrybutów sa֒ dyskretne) 2) zaklada sztywno, że wszystkie rekordy w zbiorze uczacym sa֒ wypelnione, ֒ tzn. nie dziala, jeśli choć jeden rekord zawiera niepelne dane, 3) duży rozmiar drzewa, 4) brak odporności na zjawisko ovefitting. Polega ono na tym, że algorytm nie radzi sobie z danymi zaburzajacymi ogólna֒ informacja.֒ Może to ֒ prowadzić do wysokiego wspólczynnika bledów na danych testowych ֒ Aby przeciwdzialać zjawisku ovefittingu stosuje sie֒ tzw. przycinanie (ang. em prunning). Dziala ono w sposób nastepuj acy: ֒ ֒ 1) zaczyna sie֒ od liści i dziala na zasadzie bottom-up, 2) majac dany weze l nie bed acy liściem i jego poddrzewo oblicza sie֒ w ֒ ֒ ֒ ֒ heurystyczny sposób wartość przewidywanego bledu dla aktualnego ֒ poddrzewa, 3) oblicza sie֒ wartość przewidywanego bledu dla sytuacji, gdyby rozpatry֒ wane poddrzewo zastapić liściem z kategoria֒ najpopularniejsza֒ wśród ֒ liści, 4) porównuje te dwie wartości i ewentualnie dokonuje zamiany poddrzewa na pojedynczy liść propagujac te֒ informacje֒ do swoich przodków. ֒ Dzieki temu dokonuje sie֒ wieksz a֒ generalizacje֒ oceny nowych przypadków. ֒ ֒ 4. Przebieg ćwiczenia Zadanie 1. Jednym z klasycznych zbiorów ilustrujacych dzialanie algorytmów uczacych ֒ ֒ jest przyklad do gry w golfa. Wplyw warunków pogodowych wplywajacych ֒ na podjecie decyzji o grze w gre֒ golfa przedstawiono w tabeli poniżej. ֒ Stan nieba slońce slońce pochmurno deszcz deszcz deszcz pochmurno slońce slońce deszcz slońce pochmurno pochmurno deszcz Temperatura 29 27 28 21 20 18 18 22 21 24 24 22 27 22 Wilgotność 85 90 78 96 80 70 65 95 70 80 70 90 75 80 Wiatr Grać nie nie tak nie nie tak nie tak nie tak tak nie tak tak nie nie nie tak nie tak tak tak tak tak nie tak tak nie Dla tabeli podanej na pierwszej stronie przeprowadź: 1) Dokonaj najpierw analizy zbioru przykladów ze wzgledu na to, że ֒ wszystkie atrybuty sa֒ tam przedstawione na skalach jakościowych (nominalnych lub porzadkowych), ֒ 2) Zbadaj, jakie sa֒ liczebności przykladów należacych do każdej klasy de֒ cyzyjnej, 3) Określ miary entropii informacji dla klasyfikacji wszystkich przykladów, 4) Odpowiedz na pytanie, który z atrybutów zostanie wybrany jako najkorzystniejszy do zbudowania testu w weźle drzewa. Odpowiedź uzasadnij ֒ odpowiednimi obliczeniami wg algorytmu ID3 5) Przeprowadź proces budowy calego drzewa. Zadanie 2 Przy użyciu programu C4.5 z systemu Weka dokonaj analizy zbioru przykladów uczacych opisujacych wplyw warunków pogodowych na podjecie de֒ ֒ ֒ cyzji do gry w golfa. Program C4.5 jest w nim dostepny jako J48 (wersja ֒ 8 programu C4.5, ostatnia przed komercjalizacja). Wybierz Explorer → ֒ Open File → data. W katalogu data otwórz ”notatnik Windows” lub inny edytor. Wyedytuj plik golf.arff, który jest w formacie arff. Jego postać jest nastepuj aca: ֒ ֒ @relation golf @attribute @attribute @attribute @attribute @attribute outlook {sunny, overcast, rain} temperature numeric humidity numeric windy {true, false} play {yes, no} @data sunny, 85, 85, false, no sunny, 80, 90, true, no overcast, 83, 78, false, yes rain, 70, 96, false, yes rain, 68, 80, false, yes rain, 65, 70, true, no overcast, 64, 65, true, yes sunny, 72, 95, false, no Należy wybrać opcje֒ Classify, a nastepnie Choose. Wówczas wejść do ֒ trees i wybrać J48. Uruchomienie analizy nastepuje dzieki naciśnieciu Start. ֒ ֒ ֒ Powtórz podobna֒ analize֒ dla zbioru przykladów uczacych w przypadku podjecia ֒ ֒ decyzji o grze w golfa. Zadanie 3 Przy użyciu programu C4.5 z systemu Weka dokonaj analizy zbioru przykladów uczacych opisujacych wplyw warunków pogodowych na podjecie de֒ ֒ ֒ cyzji dotyczacych zakupu komputera. ֒ @relation komputer @attribute @attribute @attribute @attribute @attribute komputer {dobry, sredni, marny} dochody numeric cena numeric student {true, false} kupic {yes, no} @data dobry, 500, 850, false, no sredni, 800, 900, true, no marny, 490, 1000, false, yes dobry, 700, 9006, false, yes sredni, 8968, 8000, false, yes marny, 657, 700, true, no dobry, 640, 650, true, yes sredni, 720, 950, false, no Należy wybrać opcje֒ Classify, a nastepnie Choose. Wówczas wejść do ֒ trees i wybrać J48. Uruchomienie analizy nastepuje dzieki naciśnieciu Start. ֒ ֒ ֒ Zadanie 4 Zbuduj drzewo decyzyjne dotyczace zakupu samochodu. Przy użyciu pro֒ gramu C4.5 z pakietu Weka dokonaj analizy przykladów uczacych opisujacych ֒ ֒ zakup samochodu. @relation somochod @attribute @attribute @attribute @attribute @attribute samochod {dobry, uzywany, nowy} dochody numeric cena numeric klient {true, false} kupic {yes, no} @data dobry, 5000, 20050, false, no uzywany, 1800, 2000, true, no nowy, 4900, 3000, true, yes dobry, 7000, 3000, false, yes uzywany, 7968, 3500, false, yes nowy, 6570, 17000, true, no nowy, 6400, 10500, true, yes dobry, 7200, 950, false, no Należy wybrać opcje֒ Classify, a nastepnie Choose. Wówczas wejść do ֒ trees i wybrać J48. Uruchomienie analizy nastepuje dzieki naciśnieciu Start. ֒ ֒ ֒