Drzewa Decyzji

advertisement
Inteligencja Obliczeniowa
Drzewa Decyzji.
Wykład 23
Włodzisław Duch
Uniwersytet Mikołaja Kopernika
Co było
•
•
•
Odkrywanie wiedzy metodami neuronowymi
Stosowanie reguł
Budowa systemu ekspertowego z odkrytych reguł
Co będzie
•
•
•
•
•
Drzewa decyzji
Testy i konstrukcje drzew
Przycinanie drzew.
CART, C 4.5, SSV
Inne drzewa
DT - przykład
Klasy:
{rakowe,
zdrowe}
Cechy:
ciało komórki: {cienie, paski}
jądra: {1, 2}; ogonki: {1, 2}
ra
k
zdrowy
zdrowy ra
k
Trudniejszy przykład
Ogólne własności
Drzewo decyzji: Ogólne => Szczegółowe
węzeł - test atrybutu
rozgałęzienie - wartość atrybutu lub podzbiór
liście - przypisane do klas
Testy: podział pojedynczej cechy, lub kombinacji
Attrybut={wartośći} lub Attrybut < wartośći
Kryteria: maksymalizacja ilości informacji, maksymalizacja liczby
poprawnie podzielonych obiektów, „czystość” węzła
Przycinanie: usuń gałęzie, które zawierają zbyt mało przypadków
prostsze drzewo może lepiej generalizować
oceń optymalną złożoność na zbiorze walidacyjnym.
Kryterium stopu: osiągnięta dokładność podziałów, zbyt wiele gałęzi.
Generyczny algorytm TDIDT
TDIDT - Top Down Iterative Decision Tree
function DT(E: zbiór przykładów) returns drzewo;
T' := buduj_drzewo(E);
T := obetnij_drzewo(T');
return T;
function buduj_drzewo(E: zbiór przyk.) returns drzewo;
T := generuj_tests(E);
t := najlepszy_test(T, E);
P := podział E indukowany przez t;
if kryterium_stopu(E, P)
then return liść(info(E))
else
for all Ej in P: tj := buduj_drzewo(Ej);
return węzeł(t, {(j,tj)};
Wybór atrybutu
Który atrybut powinien być najpierw?
p+ i p- - proporcje w lewej i
prawej gałęzi.
Zbiór wektorów S
Ile informacji zawiera dany podział ?
Średnia l. bitów do zakodowania dowolnego wektora z S wynosi:
I (S )  - p lg2 p - p- lg2 pG ( S , A)  I ( S ) -
S
S
I (S ) -
SS
I (S- )
Informacja dla czystych węzłów = 0;
jest max dla najbardziej pomieszanych.
Przykład
Obliczenia ilości
informacji E:
E  p1 , p2 ,... pn   - pi lg 2 pi
i
 q
r 
E  p, q, r   E  p, q  r    q  r  E 
,

q

r
q

r


Tworzenie drzewa
Tworzenie drzewa: szukanie w
przestrzeni hipotez.
ID3 - podział w oparciu o zysk
informacyjny.
Lepsze mniejsze drzewo.
Dość odporne na szum.
Lokalne minima.
Granice decyzji
Podział hierarchiczny na hiperprostokąty.
Drzewa proste i skośne
Granice skośne
Niestabilność DT
Brzytwa Ockhama
Czemu preferować prostsze drzewa?
1.
2.
3.
Mało prostych hipotez, więc mała szansa, że przypadkiem pasują do
danych.
Proste drzewa nie powinny zbytnio dopasować się do danych.
Przetrenowanie modelu dla zbyt złożonych drzew, zła generalizacja.
Ale:
1.
Dla małych zbiorów o wielu atrybutach można tworzyć wiele
prostych opisów danych.
Przetrenowanie
Model H jest zbytnio dopasowany do danych (overfits) gdy:
Istnieje model H’ taki, że:
Błąd-treningowy(H) < Błąd-treningowy(H’)
Błąd-testowy(H)
> Błąd-testowy(H’)
Zbyt szczegółowe wnioski przy dla danej populacji przypadków treningowych.
Dokładność jako funkcja
liczby węzłów drzewa.
Wyniki mogą być gorsze niż
dla klasyfikatora
większościowego!
Przykład
Przypadkowo dobrane 2 klasy.
Niech klasa większościowa C1 ma p > 0.5
Klasyfikator większościowy robi (1-p) błędów.
Przetrenowane drzewo ma:
Np węzłów z klasy C1
N-Np z klasy C2.
Drzewo przypisuje wektor X do klasy C1 z p i C2 z 1-p.
Macierz rozrzutu:
Prawd. błędu:
 p2

 (1 - p) p
p(1 - p) 
2 
(1 - p) 
2 p(1 - p)  p dla p  0.5
Np. dla p=0.75 będzie 37.5% błędów dla przetrenowanego drzewa
zamiast 25% dla większościowego.
Unikanie przetrenowanie
Jak uniknąć przetrenowania i radzić sobie z szumem?
1.
2.
3.
1.
2.
3.
Zakończ rozwijanie węzła jeśli jest zbyt mało danych by wiarygodnie
dokonać podziału.
Zakończ jeśli czystość węzłów (dominacja jednej klasy) jest większa
od zadanego progu - forward pruning
DT => drzewo prawd. klas.
Utwórz drzewo a potem je przytnij (backward pruning)
Przycinaj korzystając z wyników dla kroswalidacji lub dla zbioru
walidacyjnego.
Korzystaj z MDL (Minimum Description Length):
Min Rozmiar(Drzewa) + Rozmiar(Drzewa(Błędów))
Oceniaj podziały zaglądając poziom (lub więcej) w głąb.
DT dla raka piersi
DT => reguły
Zamień DT na reguły i uprość: łatwo ocenić, które reguły można usunąć i
optymalizować pozostałe.
1R
1R: najprostsze drzewo (Holte 1993), niezłe rezultaty.
Jeden poziom, atrybuty nominalne.
Algorytm:
Dla każdego atrybutu A
dla każdej wartości atrybutu Ai:
policz częstości występowania klas
znajdź klasę C występującą najczęściej
utwórz regułę: IF Ai THEN C
Oblicz dokładność tej reguły.
Wybierz reguły o największej dokładności.
Wartość brakująca ? traktowana jest jak każda inna.
Przykład - grać czy nie grać?
1R cd
Jak traktować ciągłe wartości numeryczne?
Podziel obszary na interwały i traktuje je jak nominalne.
Dla każdego atrybutu A
porządkuj przypadki zgodnie z wartościami tego atrybutu
ustal granice przedziałów dla wartości, przy których zmienia się klasa
mająca większość.
Minimalizuje to liczbę błędów w algorytmie 1R.
Przykład: temperatura i jej korelacja z decyzją gracza:
By uniknąć szumu można wprowadzić minimalną liczbę danych/interwał:
Uproszczone
reguły
ID 3
ID3: Interactive dichotomizer version 3, pierwotnie CLS (Concept Learning
System), R. Quinlan (1986)
Tylko do atrybutów nominalnych (nieuporządkowanych).
Dla atrybutów rzeczywistych: konieczna dyskretyzacja.
Ocena podziałów - za pomocą zysku informacji, Gain(D,A)
Podział węzła na kilka podgałęzi, dla różnych wartości A
Preferencje: wszystkie hipotezy możliwe, ale te dla drzew o dużym
zysku informacyjnym w pobliżu korzenia preferowane - lokalne
minima.
Brakowało przycinania i dyskretyzacji.
Rozwinięcie ID3 => drzewo C4.5 i C5
C 4.5
R. Quinlan (1993), jedno z najbardziej popularnych DT
Typowy algorytm TDIDT
Testy: A=? dla nominalnych,
A<t, dla t=(Ai+ Ai+1)/2 (wystarczy sprawdzić tylko te wartości,
dla których zmienia się klasa)
Ocena podziałów - za pomocą zysku informacji, Gain(D,A)
Dla testu atrybutu A o k wynikach:
k
Di
i 1
D
G ( D, A)  I ( D) - 
k
Split ( D, A)  -
i 1
I  Di 
Największy zysk dla największego k
 Di 
 lg 2 
 Informacja zawarta w podziałach.
D
D


Di
GR ( D, A)  G( D, A) / Split (D, A)
Końcowe kryterium C4.5.
NewID
Algorytm: dane przykłady E, atrybuty A i klasy c=1..C
Lista bieżących przykładów D = E w korzeniu drzewa
Jeśli D ma czyste liście (przykłady z pojedynczej klasy) to zatrzymaj.
Dla każdego węzła i jeszcze nie użytych atrybutów powtarzaj:
jeśli dostępne atrybuty nie mają określonych wartości
utwórz węzeł typu Konflikt
else: oblicz maxj Gain(Aj,c);
utwórz węzły potomne dzieląc Dk na podzbiory
Końcowe drzewo jest zbytnio dopasowane.
Drzewo do regresji:
wybierz podział tak, by wariancja wewnątrz
klas po podziale była jak najmniejsza:
min
v
 Var C( X ) 
X Dv
NewID cd.
Brakujące wartości ? i wartości obojętne *
Jeśli niektóre A=? dla atrybutu binarnego w danych treningowych to
węzłom potomnym przypisujemy wektory z A=T i A=N zgodnie z
rozkładem a priori lub oceną Laplace’a:
N(T) = (N(c,A=T)+1)/(N(c)+N(A)); N(A)=2, l. wartości A
Dla testu ocena l. wszystkich wektorów, a nie tylko w klasie c
Wartości * są powielane.
Przycinanie:
Ocena na zbiorze walidacyjnym, próg R (zwykle R=10):
Jeśli poddrzewo TW poprawia o R% dokładność klasyfikacji węzła
W to schodź niżej;
Var  C ( X ) 

else zamień W na liść.
min
v
X Dv
NewID używa podzbiorów, atrybutów porządkowych, w. ciągłych.
NewID regresja.
Drzewo do regresji: klasy ciągłe C(X)
Wybierz podział tak, by wariancja wewnątrz klas po
podziale była jak najmniejsza:
min
v
 Var C( X ) 
X Dv
Kryterium stopu:
nie rozwijaj węzła jeśli s(Dk) < ks(E).
CHAID
CHi-squared Automatic Interaction Detection, jest w SPSS.
Kryterium podziału atrybutu A jest test c2
Hipoteza: jeśli test A<A0 (lub A=A0) jest skorelowany z podziałem
na klasę C i pozostałe to test c2 da małą wartość.
Przykład: podział gatunków. Atrybut = dł. ogona. Tabela
kontyngencji:
Oczekiwane:
Gatunek
Długi
Krótki
Brak
Suma
eij= Nio x Ngj / N
N. ptaki
n11
n21
n31
Ng1
Rozkład c2 dla:
N. gady
n12
n22
n32
Ng2
n
ij
N. ssaki
n13
n23
n33
Ng3
N. ryby
n14
n24
n34
Ng4
Suma
N1o
N2o
N2o
N
- eij  / eij
2
ij
p  c 2 | k   erf  k , c 
k=(Nio-1) x (Ngj -1)
stopni swobody.
CART
Classification and Regression Trees (Breiman 1984).
Kryterium podziału: indeks Gini; w danym węźle pc określa procent
wektorów z klasy c; czystość węzła można zmierzyć za pomocą:
C
C
cd
c 1
Gini   pc pd  1 -  pc2
Mi  1 - max pc
c
Kryterium stopu: MDL, złożoność drzewa + informacja w
liściach
 Size(Tree) 
 I (l )
lleaf
SSV
Kryterium separowalności par danych z różnych klas.
Oddziel maksymalnie dużo par z różnych klas.
Jeśli różne podziały dają to samo minimalizuj l. podziałów wewnątrz
klasy
 x  D : f ( x)  s , f ciągłe
LS  s, f , D   
 x  D : f ( x)  s , f dyskretne
RS  s, f , D   D - LS  s, f , D 
Kryterium:
SSV ( s )  2 LS  s, f , D  Dc  RS  s, f , D 

cC
- min LS  s, f , D  Dc , RS  s, f , D  Dc
cC
 D - Dc 

Proste kryterium, różne metody obcinania drzewa, dobre wyniki.
SSV - przykład
Drzewo dla chorób tarczycy.
Atrybut TT4: czerwone - l. błędów;
zielone - l. par prawidłowo podzielonych;
niebieskie - l. podzielonych par tej samej klasy (druga cześć
kryterium).
Ocena i wyniki
DT: szybkie i proste.
Zalety:
Zwykle bardzo dobre wyniki w porównaniu z innymi klasyfikatorami.
Łatwe w użyciu, prawie nie mają parametrów do ustawiania.
Dane nominalne lub numeryczne.
Zastosowania: klasyfikacja i regresja.
Prawie wszystkie pakiety Data Mining mają drzewa decyzji.
Problemy z DT:
mało danych, duża liczba ciągłych cech;
niższe partie drzewa mają b. mało danych, przypadkowe podziały;
nie wszystkie koncepcje dają się dobrze ująć za pomocą DT, np.
„większość jest za”.
Idee
Wiele usprawnień.
Drzewa wieloczynnikowe:
skośne granice decyzji;
drzewa sieci neuronowych;
rekursywny podział za pomocą LDA lub FDA
Kryteria podziału:
informacja w pobliżu korzenia, dokładność w pobliżu liści.
przycinanie na podstawie reguł - działa również przy korzeniu;
Komitety drzew:
wielokrotne uczenie na randomizowanych danych (boosting)
uczenie z różnymi parametrami obcinania
Drzewa rozmyte
Koniec wykładu 23
Dobranoc !
Download