Paweł Cichosz
Date: 2001/2002
Wykład jest poświęcony prezentacji jednego z najbardziej popularnych podejść do uczenia się klasyfikacji, opartego na drzewach decyzyjnych. Podany będzie podstawowy algorytm budowania drzewa na podstawie przykładów i najważniejsze praktyczne aspekty jego stosowania.
Przez drzewo decyzyjne rozumiemy strukturę, która ma zwykłe właściwości drzewa w znaczeniu, jaki temu słowu nadaje się w informatyce, jest więc strukturą złożoną z węzłów, z których wychodzą gałęzie prowadzące do innych węzłów lub liści, oraz z liści, z których nie wychodzą żadne gałęzie. Węzły odpowiadają testom przeprowadzanym na wartościach atrybutów przykładów, gałęzie odpowiadają możliwym wynikom tych testów, liście zaś etykietom kategorii.
Test jest w ogólnym przypadku dowolną funkcją określoną na dziedzinie
, przy czym w praktyce rozważamy testy, które są
funkcyjnie zależne od atrybutów. Najczęściej przyjmuje się
ograniczenie, że wynik testu może zależeć od wartości dokładnie
jednego atrybutu i tylko taki przypadek będzie tu rozważany.
Zależnie od typów atrybutów mogą być używane różne rodzaje testów, z
których najważniejsze omówione są poniżej (podane nazewnictwo nie jest
powszechnie przyjęte) dla atrybutu
.
![]() |
(1) |
![]() |
(2) |
![]() |
(3) |
![]() |
(4) |
Dla testu
i zbioru przykładów
będziemy stosować oznaczenia:
Klasyfikacja przykładu za pomocą drzewa decyzyjnego polega na przejściu ścieżki od korzenia do liścia drzewa wzdłuż gałęzi wyznaczanych przez wyniki stosowania do tego przykładu testów związanych z odwiedzanymi kolejno węzłami. Osiągnięcie liścia wyznacza kategorię. W ten sposób drzewo decyzyjne umożliwia zaklasyfikowanie dowolnego przykładu, a więc reprezentuje hipotezę.
Podstawowy algorytm budowania drzewa w sposób zstępujący (od korzenia powstają kolejne ,,piętra'' węzłów) można sformułować w postaci następującej procedury rekurencyjnej.
Kryterium stopu określa, kiedy ma być zatrzymany proces rozrostu drzewa, czyli kiedy dla pewnego zbioru przykładów nie powstanie kolejny węzeł wewnętrzny, lecz liść. Oczywiste sytuacje, kiedy powinno się tak stać, są następujące:
Najpóźniej po spełnieniu któregoś z tych warunków dalszy rozrost drzewa musi zostać zatrzymany. Powstałe wówczas drzewo będzie spójne z danymi trenującymi, o ile nie są one sprzeczne i zbiór testów jest wystarczający. W praktyce rozrost drzewa może być zatrzymywany wcześniej i będą wówczas otrzymane drzewa niespójne z danymi trenującymi, które jednak mogą być preferowane ze względu na większą prostotę i możliwość uniknięcia nadmiernego dopasowania.
Przy wyborze testu należy się kierować rozsądnym postulatem, aby zbudować możliwie jak najprostsze drzewo. Zwiększa to jego czytelność dla człowieka i zmniejsza ryzyko nadmiernego dopasowania. Dążenie do prostoty sprowadza się do dążenia do tego, aby kolejno wybierane testy jak najbardziej przybliżały moment, kiedy będzie można utworzyć liść, czyli aby w węzłach potomnych coraz dokładniej można było określić kategorię. W związku z tym do wyboru spośród możliwych do użycia testów stosuje się liczbowe funkcje oceny jednego z następujących rodzajów:
Najbardziej popularne jest wykorzystanie entropii do pomiaru niejednorodności rozkładu kategorii. Oparta na niej funkcja oceny testu, nazywana przyrostem informacji, jest obliczana następująco:
| (5) |
, |
||
, |
||
. |
Przy dokładniejszej analizie okazuje się, że przyrost informacji ma tendencję do preferowania w nieuzasadniony sposób testów o dużej liczbie wyników. Jeśli przy budowie drzewa wykorzystywane są testy znacznie różniące się liczbą możliwych wyników, w celu uniknięcia takich preferencji sugeruje się wykorzystywanie do oceny jakości testów ilorazu:
, |
(6) |
. |
(7) |
Z kolei niezależność między rozkładem kategorii a wyznaczanym przez
wyniki testu podziałem
na podzbiory można mierzyć za pomocą
statystyki
:
, |
. |
Zbiór kandydujących do wyboru testów zazwyczaj zawiera wszystkie możliwe do określenia testy dla wykorzystywanych do opisu przykładów atrybutów pewnych z góry przyjętych rodzajów. Często są to np. testy tożsamościowe dla atrybutów nominalnych i nierównościowe dla porządkowych i ciągłych, albo testy przynależnościowe lub podziałowe dla wszystkich typów atrybutów. W przypadku atrybutów ciągłych liczba testów, jakie należy rozważyć, jest duża i może decydować o koszcie obliczeniowym algorytmu. Konieczne są wówczas pewne heurystyki eliminujące najmniej obiecujące testy oraz odpowiednio staranna implementacja. Niektóre przypadki są przedyskutowane niżej.
Zauważmy, że dla testów nierównościowych jako progi nierówności
wystarczy brać pod uwagę tylko po jednej wartości (np. środkowej)
pomiędzy każdymi dwoma sąsiednimi wartościami atrybutu występującymi w
aktualnym zbiorze przykładów. W związku z tym dla wygody dokonuje się
sortowania wartości atrybutu. Możliwość dalszego usprawnienia oceny
testów nierównościowych kryje się w następującej właściwości. Można
wykazać, że jeśli dla dwóch kolejnych (po posortowaniu) wartości
i
atrybutu ciągłego lub porządkowego
wszystkie przykłady w
zbiorze
mają tę samą kategorię, to na pewno optymalna wartość
progowa
nie znajduje się między
i
i w związku z
tym obliczanie jakości testów dla takich wartości
można
bezpiecznie pominąć. Intuicyjne uzasadnienie tego faktu jest prostsze
od ścisłego dowodu i zadowolimy się nim. Otóż jeśli dla każdego
przykładu
, dla którego
, mamy
,
to w przypadku wyboru wartości progowej
uzyskamy
podział zbioru
na dwa podzbiory, w których te przykłady o
kategorii
będą rozdzielone (część z nich znajdzie się w jednym, a
część w drugim podzbiorze). Oznacza to, że w podzbiorach tych będzie
bardziej równomierny rozkład kategorii, niż gdyby wszystkie przykłady,
o których mowa, znalazły się w tym samym podzbiorze, a tym samym nasz
wybór wartości progowej
nie jest najlepszy z możliwych.
Ze względu na wykładniczo rosnącą liczbę możliwych podzbiorów przeciwdziedziny atrybutu również najlepszego testu przynależnościowego jest złożony obliczeniowo. Prosta heurystyka może polegać na tym, aby na początek rozważać wyłącznie podzbiory jednoelementowe i poddać ocenie oparte na nich testy przynależnościowe, następnie do najlepszego (lub kilku najlepszych) podzbioru dodać każdy możliwy drugi element i znów wybrać najlepszy podzbiór dwuelementowy, itd., tak długo jak długo ocena najlepszego uzyskanego dotąd testu będzie się poprawiać.
Problem wyboru najlepszego testu podziałowego dla atrybutów o
skończonej liczbie wartości jest problemem optymalnego podziału zbioru
na podzbiory. Prosta heurystyka może polegać na rozpoczęciu od
podzbiorów jednoelementowych i następnie w każdym kroku wyborze do
połączenia dwóch takich podzbiorów, w których rozkład kategorii jest
najbardziej zbliżony. Do mierzenia różnicy między rozkładami można
np. wykorzystać statystykę
. W tym celu rozważamy faktyczny
rozkład kategorii w obu podzbiorach oraz rozkład oczekiwany określony
na podstawie podzbioru będącego ich połączeniem.
W niektórych praktycznych zastosowaniach indukcji drzew decyzyjnych istotnym kryterium wyboru testów podczas konstrukcji drzewa, oprócz ich jakości, może być koszt. W pewnych dziedzinach rozsądnie jest przyjąć, że zastosowanie do dowolnego przykładu różnych testów wiąże się z różnymi kosztami. Jest tak na ogół wtedy, kiedy dla wszystkich lub niektórych określonych na dziedzinie atrybutów wartości nie są znane z góry, lecz mogą być wyznaczone w razie potrzeby ,,na żądanie''.
Jeśli przyjmiemy za podstawę oceny jakości testów przyrost informacji,
a przez
oznaczymy koszt testu
, to kryteria prostą
funkcję oceny uwzględniającą jednocześnie jakość i koszt testu można
zapisać następująco:
, |
(8) |
, |
(9) |
Wybór kategorii dla tworzonego liścia jest oczywisty: powinna to być
kategoria większości przykładów w aktualnym zbiorze
, a gdyby ten
zbiór był pusty, kategoria domyślna. Na pierwszym poziomie drzewa jest
ona określana przez argument procedury budującej drzewo, a na niższych
poziomach -- jako większościowa kategoria w zbiorze przykładów
związanym z węzłem macierzystym.
Ze względu na dążenie do prostoty i uniknięcia nadmiernego dopasowania w praktyce najczęściej konieczne jest przycinanie drzew. Polega ono w podstawowej wersji na zastępowaniu wybranych węzłów (a tym samym całych poddrzew) liścmi, którym przypisuje się kategorię większości przykładów trenujących, które w trakcie budowy drzewa były związane z eliminowanym węzłem. Podstawowe znaczenie ma kryterium przycinania, które decyduje, czy węzeł będzie zastąpiony liściem. Najczęściej stosowane metody są krótko scharakteryzowane poniżej.
, |
(10) |
, |
(11) |
| (12) |
| (13) |
| (14) |
Przejrzymy tu krótko możliwe modyfikacje podstawowego algorytmu budowania drzewa decyzyjnego, które mogą być konieczne w pewnych zastosowaniach do odkrywania wiedzy.
Tradycyjnie w metodach uczenia się maszyn dużą wagę przykłada się do błędu hipotez i hipotezy niedokładne uznaje się za nieprzydatne. Przy odkrywaniu wiedzy jednak nie zawsze celem, dla którego buduje się drzewo, jest klasyfikowanie nowych danych -- często może chodzić wyłącznie o znalezienie i przekazanie analitykom do interpretacji i wykorzystania zależności między atrybutami a kategorią, nawet jeśli nie prowadzi ona do bardzo dokładnej klasyfikacji. Dla wielu rzeczywistych zbiorów danych zbudowanie drzewa nadającego się do klasyfikowania nowych przykładów z zadowalającą dokładnością w praktyce okazuje się niemożliwe. W tych sytuacjach od drzew, których liście zawierają kategorie przykładów, bardziej przydatne są drzewa, których liście zawierają oszacowania rozkładów prawdopodobieństw kategorii. Takie drzewa ukazują występowanie zależności nawet jeśli nie jest ona na tyle ,,silna'', aby można było dla niej zbudować drzewo ,,deterministyczne''
Modyfikacja algorytmu jest w tym przypadku bardzo prosta. Sprowadza
się do innego kryterium stopu (nie dąży się do uzyskania liścia z
przykładami wyłącznie jednej kategorii, zwłaszcza że może to nigdy nie
być osiągalne), a po jego spełnieniu do umieszczaniu w liściu zamiast
większościowej kategorii liczników częstości występowania kategorii w
aktualnym zbiorze przykładów
, będących podstawą do szacowania
prawdopodobieństw.
W pewnych zastosowaniach zachodzi konieczność aktualizowania hipotezy indukcyjnej przez uwzględnienie napływających okresowo nowych danych. Nawet jeśli wszystkie ,,stare'' dane są ciągle dostępne, budowanie za każdym razem drzewa od początku byłoby nieekonomiczne. W takich sytuacjach należy sięgnąć po algorytmy inkrementacyjnej aktualizacji drzewa. Naszkicujemy koncepcję, na jakiej tego typu algorytmy mogą być oparte.
Jest jasne, że podstawowy schemat inkrementacyjnego konstruowania
drzewa decyzyjnego można sformułować jako procedurę składającą się z
operacji wykonywanych w celu modyfikacji dotychczasowego drzewa przez
uwzględnienie kolejnego przykładu trenującego. Aby zrekompensować brak
dostępności wszystkich przykładów trenujących, przyjmiemy, że w
węzłach i liściach drzewa przechowywane będą informacje niezbędne do
podejmowania decyzji o wybieraniu testów i ustalaniu kategorii.
Chodzi tu konkretnie o liczby
,
,
i
dla wszystkich kategorii
oraz możliwych testów
i ich
wyników
, gdzie
oznacza zbiór wszystkich dotychczasowych
przykładów odpowiadających danemu węzłowi lub liściowi. Do ich
wyznaczenia zbiór ten nie jest wymagany, więc nie ma potrzeby
zapamiętywania tych przykładów. Wystarczy uwzględniając w węźle lub
liściu nowy przykład dokonać aktualizacji przechowywanych w nim
informacji, polegającej na zwiększeniu odpowiednich liczników.
Uwzględnienie pierwszego przykładu powoduje utworzenie liścia. Każdy przykład uwzględniany w liściu lub węźle powoduje zwiększenie związanych z nim liczników. W przypadku, gdy jest to liść, uwzględnianie przykładu może zostać zakończone lub liść może zostać przekształcony w węzeł. Decyzja ta ma znaczenie analogiczne do decyzji o zatrzymaniu rekurencyjnych wywołań przy zstępującej konstrukcji drzewa, a kryterium jej podejmowania, które nazwiemy w związku z tym kryterium stopu, może być również bardzo podobne. Zgodnie z nim liść należy przekształcić w węzeł, jeśli nie wszystkie dotychczas uwzględnione w nim przykłady reprezentują tę samą kategorię. Możliwa jest także złagodzona wersja tego kryterium, wymagająca dominującej kategorii większościowej. Jeśli kryterium stopu dla liścia nie jest spełnione, zostaje on zastąpiony węzłem, dla którego oczywiście wybierany jest najlepszy według przyjętej funkcji oceny test. Następnie przykład musi zostać uwzględniony w tym poddrzewie tego węzła, któremu udpowiada uzyskiwany dla niego wynik wybranego testu. To samo zresztą musi się stać, jeśli uwzględniamy przykład w węźle, który nie został właśnie utworzony w celu zastąpienia liścia, lecz był już nim przedtem.
Jeśli poprzestaniemy na zastępowaniu w razie potrzeby liści węzłami i aktualizacji liczników, uzyskiwane drzewa będą silnie uzależnione od kolejności dostarczania przykładów i z pewnością w większości przypadków dalekie od optymalności ze względu na rozmiar. Rozmiar drzew decyzyjnych zależy od testów wybieranych dla poszczególnych węzłów, zaś w naszkicowanym schemacie inkrementacyjnej konstrukcji drzewa wybór testów następuje tylko przy przekształcaniu liści w węzły. Kiedy w przyszłości do utworzonego węzła trafią kolejne przykłady, pierwotny wybór testu może okazać się niezadowalający. Dla utrzymania odpowiednio wysokiej jakości drzewa niezbędna jest możliwość weryfikacji testów umieszczonych w poszczególnych węzłach i w razie potrzeby ich zmiana, prowadząca do rekonstrukcji drzewa. Dla każdego węzła należy zatem sprawdzić, czy aktualnie umieszczony w nim test jest najlepszy według przyjętej funkcji oceny, której wartość można obliczyć korzystając w przechowywanych w tym węźle liczników. Jeśli okaże się, że test ten powinien zostać wymieniony na inny, powstaje konieczność rekonstrukcji, która w ogólnym przypadku może być operacją dość skomplikowaną i być może także kosztowną, zdecydowanie jednak mniej, niż kosztowałoby zbudowanie nowego poddrzewa od podstaw. Nie wnikając w zbyt skomplikowane szczegóły tej operacji zauważmy co następuje:
Nie zawsze nawet najbardziej skuteczne funkcje oceny testów i kryteria stopu prowadzą do drzewa spełniającego oczekiwania analityka prowadzącego proces odkrywania wiedzy. Czasem jego intuicja i doświadczenie mówi, jakich atrybutów na danym poziomie drzewa nie należy testować (nawet jeśli są najlepsze według funkcji oceny), które testować przed testowaniem innych, albo kiedy utworzyć liść (nawet jeśli automatyczne kryterium stopu nie jest spełnione), co może prowadzić niekoniecznie do drzewa dokładniejszego, ale lepiej nadającego się do interpretacji. To wszystko każde z pewnym dystansem patrzeć na prowadzone w ramach uczenia się maszyn badania nad ,,najlepszymi'' kryteriami oceny testów, stopu, przycinania itd. Są sytuacje praktyczne, w których i tak zamiast tych kryteriów decydować będzie doświadczenie analityka i jego rozumienie dziedziny, nie dające się przełożyć na liczbowe funkcje oceny.
Przedstawiony rekurencyjny algorytm budowania drzewa decyzyjnego dokonuje jego rozbudowy zgodnie ze strategią w głąb. Oznacza ona, że jeśli dla nowo utworzonego węzła drzewa istnieje pewna liczba gałęzi, to kolejno dla każdej z nich jest konstruowane pełne poddrzewo aż do osiągnięcia liści, zanim zostanie wzięta pod uwagę następna gałąź. Przy alternatywnym podejściu wszerz dla każdej gałęzi najpierw jest tworzony tylko jeden poziom węzłów lub liści potomnych, a następnie w ten sam sposób przetwarza się gałęzie wychodzące z tych węzłów itd. W jeszcze bardziej skrajnym podejściu można każdorazowo brać pod uwagę tylko jedną nierozwiniętą gałąź w całym drzewie, znajdującą się na jego dowolnym poziomie i wybieraną ze względu na funkcję jakości najlepszego testu, jaki może być użyty w celu utworzenia dla niej węzła. O takim schemacie konstrukcji drzewa decyzyjnego powiemy, że wykorzystuje strategię najpierw najlepszy. Oczywiście każda z tych strategii da identyczny efekt przy kryterium stopu zależnym tylko od rozkładu kategorii w aktualnym zbiorze przykładów, ale w niektórych sytuacjach praktycznych mogą być stosowane kryteria stopu zależne np. od długości aktualnej ścieżki w drzewie lub liczby wszystkich dotychczas utworzonych dotąd węzłów, i wtedy oczywiście różne kryteria wyboru kolejnego węzła do rozwinięcia dadzą różne efekty.
Zagadnienie brakujących wartości atrybutów podczas uczenia się oraz stosowania hipotezy będzie przedmiotem innego wykładu, na którym zostaną przedstawione odpowiednie techniki, odpowiednie dla różnych algorytmów uczenia się i różnych reprezentacji hipotez. Tu zajmiemy się tylko jedną specyficzną techniką postępowania przy klasyfikacji przykładów z brakującymi wartościami atrybutów za pomocą drzew decyzyjnych, polegające na uwzględnianiu różnych możliwych wyników testu dla atrybutu o nieznanej wartości i wyznaczaniu prawdopodobieństwa poszczególnych kategorii.
Niech ścieżka od korzenia drzewa decyzyjnego do pewnego liścia
prowadzi kolejno przez
węzłów
,
, z którymi są
związane odpowiednio testy
. Przez
oznaczmy odpowiednie
wyniki tych testów, wyznaczające kolejne gałęzie drzewa składające się
na ścieżkę. Prawdopodobieństwo tego, że podczas klasyfikowania
pewnego ustalonego przykładu
zostanie osiągnięty liść
, można
wówczas zapisać jako następujący iloczyn:
![]() |
(15) |
Gdy wyniki każdego testu dla przykładu
są znane (czyli wartości
wszystkich atrybutów są dla tego przykładu dostępne), każde z
występujących w powyższym wyrażeniu prawdopodobieństw jest równe
dokładnie 0 albo
. Wówczas osiągany podczas klasyfikowania tego
przykładu liść jest wyznaczony jednoznacznie. Jeśli jednak wynik
pewnego testu
przeprowadzanego w węźle
nie może być
ustalony ze względu na brakującą wartość odpowiedniego atrybutu, to
możemy przyjąć, że prawdopodobieństwo
ma wartość równą odpowiedniemu prawdopodobieństwu dla losowo wybranego
przykładu z dziedziny, zgodnie z określonym na niej pewnym rozkładem
prawdopodobieństwa
, czyli
.
Takie prawdopodobieństwo można oszacować na podstawie dowolnego zbioru
przykładów wybranych zgodnie z rozkładem
, w tym także na
podstawie zbioru trenującego (licząc przykłady, które trafiają do
węzła
oraz te spośród nich, dla których test
daje wynik
). Oszacowania takiego można dokonać w trakcie budowy drzewa
i przechowywać jego wynik w każdym węźle, aby nie wykonywać tych
samych obliczeń wielokrotnie.
Dla dowolnego przykładu
, dla którego wynik jednego lub większej
liczby testów nie może być ustalony, możemy więc osiągnąć z niezerowym
prawdopodobieństwem wiele liści. Prawdopodobieństwo tego, że
kategorią tego przykładu jest pewna kategoria
, oszacujemy
wówczas jako
, |
(16) |
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 -no_navigation mow-w4.tex
The translation was initiated by Pawel Cichosz on 2004-02-12