• Nie Znaleziono Wyników

Drzewa decyzyjne

N/A
N/A
Protected

Academic year: 2021

Share "Drzewa decyzyjne"

Copied!
6
0
0

Pełen tekst

(1)

Drzewa decyzyjne

Marcin Orchel

1 Wstęp

1.1 Drzewa klasyfikacyjne

W każdym węźle pośrednim drzewa binarnego znajduje się warunek na zmienne, np.

x

1

< 7, z każdego węzła mamy dwie krawędzie lewa kiedy warunek jest spełniony, prawa kiedy nie jest spełniony. W liściach znajduje się informacja o klasie do której należy punkt spełniający wszystkie warunki od korzenia do liścia. Jeśli warunek dotyczy jednej cechy, to podział nazywamy jednowymiarowym, w przeciwnym razie wielowymiarowym.

Jak już mamy zbudowane drzewo to możemy oszacować prawdopodobieństwo każdej klasy dla każdego liścia, wybór klasy dla danego liścia jest następujący:

ind (t) = arg max

i=1,2

p (i|t) ˆ (1)

gdzie t to węzeł. Oszacowanie prawdopodobieństwa jest równe p (i|t) = ˆ n

i

(t)

n (t) (2)

gdzie n (t) to liczba punktów w węźle t, a n

i

(t) to liczba punktów w węźle t z klasą i.

1.1.1 Konstrukcja drzewa za pomocą metody CART

Rozważmy podziały jednowymiarowe. Idea polega na wzięciu pod uwagę wszystkich możliwych podziałów, w punktach będącymi środkami odcinków między kolejnymi po- sortowanymi wartości x

j

i x

j+1

. Optymalny podział będzie polegał na takim wyborze punktu podziału aby podzbiory były możliwie jednorodne. Musimy dla każdego węzła określić miarę niejednorodności elementów w tym węźle, i (t). Zmianę niejednorodności w węźle t przy podziale s określamy jako

∆i (s, t) = i (t) − p

L

i (t

L

) − p

R

i (t

R

) (3) gdzie

p

L

= P (X ∈ t

L

|X ∈ t) (4)

p

R

= P (X ∈ t

R

|X ∈ t) (5)

(2)

Wówczas optymalny podział s

to

∆i (s

, t) = max

s

∆i (s, t) (6)

Zastanówmy się jak może wyglądać ta funkcja niejednorodności, będzie bazowała na prawdopodobieństwie każdej z klas. Jak prawdopodobieństwo jednej z klas jest 1 w węźle t, to oznacza maksymalną jednorodność, czyli funkcja niejednorodności będzie minimalna wtedy, jeśli prawdopodobieństwa są po 0.5 to funkcja niejednorodności będzie maksymalna. Dodatkowo zauważmy, że funkcja niejednorodności powinna mieć tą samą wartość dla zamienionych prawd, a więc będzie symetryczna względem argumentów.

Zdefiniujmy funkcję φ dla wszystkich dwuelementowych ciągów prawd. (p

1

, p

2

), takich, że p

1

+ p

2

= 1, p

i

≥ 0 spełniającą warunki

1. maksimum w punkcie (1/2, 1/2) 2. minimum w punkcie (1, 0) lub (0, 1) 3. funkcja symetryczna swoich argumentów Miara niejednorodności i (t) jest zdefiniowana jako

i (t) = φ (p (1|t) , p (2|t)) (7)

Przykładowe postaci funkcji φ

1. błąd klasyfikacji φ (p

1

, p

2

) = 1−max {p

1

, p

2

} = 1−max {p

1

, 1 − p

1

} = min {p

1

, 1 − p

1

} 2. funkcja entropii φ (p

1

, p

2

) = −p

1

log p

1

− p

2

log p

2

= −p

1

log p

1

− (1 − p) log (1 − p) 3. indeks Giniego φ (p

1

, p

2

) = 1 − p

21

− p

22

= 2p

1

(1 − p

1

)

Przy konstrukcji drzewa wybierany jest optymalny podział po wszystkich aktualnych węzłach. Miara niejednorodności dla drzewa to

I (T ) =

X

t∈Tl

i (t) p (t) , (8)

gdzie T

l

to liście drzewa.

1.1.2 Optymalna wielkość drzewa klasyfikacyjnego

Należy zdefiniować regułę, mówiącą kiedy zaprzestać dalszego podziału drzewa. Przy dodawaniu kolejnych wierzchołków zwiększamy poprawność klasyfikacji danych trenin- gowych. Wyróżniamy kilka możliwych metod

1. nie dzielenie węzła t gdy liczba przyporządkowanych mu obserwacji jest już mała (mały procent liczby elementów próby uczącej)

n (t) < n

min

(9)

(3)

2. węzeł t jest końcowy jeśli uzyskamy dostateczną jednorodność całego drzewa, to znaczy

max

s

∆I (s, t) < β (10)

gdzie β > 0 jest wielkością progową.

3. utworzenie drzewa maksymalnego (w każdym liściu leżą obiekty tylko tej samej klasy), a następnie jego przycinanie

2 Zadania

2.1 Zadania na 3.0

• dla wygenerowanych danych 2 dwuwymiarowych dwóch klas z rozkładów normal- nych wykonaj klasyfikację drzewami decyzyjnymi, narysuj drzewo

• przetestuj różne miary heterogeniczności

• przytnij drzewo do dwóch zmiennych objaśniających,narysuj to drzewo i podział przestrzeni

• oblicz błąd klasyfikacji dla zbioru testowego

• znajdź optymalną wielkość drzewa

• wyświetl wykres zależności błędu klasyfikacji od wielkości drzewa

• zbuduj drzewo regresyjne dla funkcji liniowej z błędem normalnym i wykonaj te same zadania

Wskazówki Wskazówki do R

• metoda tree z pakietu tree https://www.rdocumentation.org/packages/tree/

topics/tree

• metoda rpart z pakietu rpart https://www.rdocumentation.org/packages/rpart/

topics/rpart

• sterowanie budową drzewa https://www.rdocumentation.org/packages/tree/

topics/tree.control, https://www.rdocumentation.org/packages/rpart/topics/

rpart.control

• przycinanie krawędzi drzewa prune.tree https://www.rdocumentation.org/packages/

tree/topics/prune.tree, snip.tree https://www.rdocumentation.org/packages/

tree/topics/snip.tree, prune.rpart https://www.rdocumentation.org/packages/

rpart/topics/prune.rpart

(4)

• klasyfikacja predict.tree https://www.rdocumentation.org/packages/tree/topics/

predict.tree, predict.rpart https://www.rdocumentation.org/packages/rpart/

topics/predict.rpart

• plotcp z rpart https://www.rdocumentation.org/packages/rpart/topics/plotcp

• przykład z generacją punktów require("MASS")

sigma <- matrix(c(10,3,3,2),2,2) sigma2 <- matrix(c(10,1,1,5),2,2)

points1<-mvrnorm(n = 1000, c(-1, -1), sigma) points2<-mvrnorm(n = 1000, c(2, 1), sigma2) points1b<-cbind(points1, rep(1, 1000)) points2b<-cbind(points2, rep(-1, 1000)) rbind(points1b, points2b)

allPoints<-rbind(points1b, points2b) as.data.frame(allPoints)

allPointsDataFrame<-as.data.frame(allPoints) require(tree)

mytree<-tree(allPointsDataFrame[,’V3’]~allPointsDataFrame[,’V1’] + allPointsDataFrame[,’V2’])

plot(mytree) text(mytree)

plot(points1, xlim=c(-5, 5), ylim=c(-5, 5), col="blue") points(points2, col="red")

partition.tree(mytree, add=TRUE)

• przykład

names(iris)<- c("ddk", "sdk", "dp", "sp", "klasa") attach(iris)

tk<- table(klasa) print(tk)

library(tree)

tree.iris<-tree(klasa~., data=iris) sd<-summary(tree.iris)

print(sd)

print(tree.iris) plot(tree.iris) text(tree.iris) detach(iris)

• przykład z przycięciem drzewa

(5)

tree2.iris<-prune.tree(tree.iris, best=4) plot(tree2.iris)

text(tree2.iris)

• przykład z wyświetleniem podziału przestrzeni plot(dp, sp, type="n", xlab="dp", ylab="sp") text(dp, sp, c("s", "c", "v")[klasa])

partition.tree(tree2.iris, add=TRUE, cex=1.5)

• przykład dla modelu regresji library(MASS)

library(tree)

tree.cpus<-tree(log10(perf)~mmax+cach, data=cpus) print(summary(tree.cpus))

print(tree.cpus) plot(tree.cpus) text(tree.cpus)

partition.tree(tree.cpus)

#pokazanie podziału przestrzeni

• interpretacja funkcji regresji attach(cpus)

model<-tree(log10(perf)~cach) w<- seq(min(cach), max(cach), 0.5) y.pred<-predict(model, list(cach=w)) plot(cach, log10(perf))

lines(w, y.pred)

• przykład

library(mlbench) library(rpart) set.seed(1212) data(Vehicle)

l.obs<- nrow(Vehicle)

test <- sample(1:l.obs, round(l.obs/3), replace=FALSE)

#1:l.obs to zakres

veh.ucz<- Vehicle[-test, ] veh.test<- Vehicle[test, ]

tree.veh<-rpart(Class~., data=veh.ucz, control=rpart.control(xval=100, cp=0)) plot(tree.veh)

tab.cp<-tree.veh$cptable

print(tab.cp)

(6)

• poszukiwanie modelu optymalnego model.opt<-which.min(tab.cp[,4]) cp.opt<-tab.cp[model.opt,1]

tree.veh.p<-prune(tree.veh, cp.opt) plot(tree.veh.p)

• rysunek zależność między wielkością drzewa a błędem, błąd zastąpienia i walidacji krzyżowej

plot(tab.cp[,2]+1, tab.cp[,4], ylim=c(min(tab.cp[,3]),1), type="n", xlab="size", ylab="error")

lines(tab.cp[,2]+1, tab.cp[,4], lty=1) lines(tab.cp[,2]+1, tab.cp[,3], lty=2) points(tab.cp[,2]+1, tab.cp[,4], pch=21) points(tab.cp[,2]+1, tab.cp[,3], pch=22)

• oszacowanie błędu dla zbioru testowego

y.pred.veh<-predict(tree.veh.p, newdata=veh.test, type="class") blad<-1-sum(y.pred.veh==veh.test$Class)/nrow(veh.test)

print("classification error:", quote=FALSE) print(blad)

Wskazówki do Pythona

• sklearn.tree http://scikit-learn.org/stable/modules/tree.html Wskazówki do Matlaba

• examples

• classregtree

• test (classregtree)

• ClassificationTree class 2.2 Zadania na 4.0

• powtórzyć zadanie na 3.0 dla danych trójwymiarowych

• przetestować metody random forest 2.3 Zadania na 5.0

• wykonać klasyfikację dla wybranych danych wielowymiarowych ze strony uci za

pomocą metody drzewa klasyfikacyjnego, porównać jakość klasyfikacji na danych

testowych z klasyfikatorem Bayesa (z macierzą kowariancji i wartościami średnimi

obliczonymi z danych)

Cytaty

Powiązane dokumenty

Wenn man allerdings die Situation aus größerem Abstand be­ trachtet, sieht man, dass das (noch immer unreformierte) öffentliche Hochschulsystem Polens Gefahr läuft, die

Lasy losowe (random forests) b˛ed ˛ ace uogólnieniem idei drzew decyzyjnych zalicza si˛e do procedur agreguj ˛ acych (ensemble method). Działanie lasów losowych polega na

atrybut Kolor ma przestrzeń {Czerwony, Zielony, Niebieski, Żółty}... atrybut będący najlepszym dyskryminatorem ze względu

forms of expansion from dominant core cities onto hinterlands with little history of prior urbanisation are likely to produce different functional and socio-economic arrangements,

Widz- imy także, że pierwszym atrybutem wybranym do budowy drzewa jest cecha Petal.Length, która w przypadku, gdy wartość Petal.Length jest mniejsza od 2.45 od razu prowadzi

Else if the nearest sibling of the empty leaf contains only a single element (2 in Fig. J), but its parent contains two elements, then move the closest parent element (1 in Fig. J)

Omawia bowiem skądinąd znane koncepcje na- rodow o-socjalistycznej polityki akadem ickiej i jej realizację, pow stanie i działalność podziem nego U niwersytetu

Schlesisches und mongolisches Heer im Vergleich” (s. 87—108), cechuje się , owszem, szerokością porównawczego ujęcia, specjalnie odkrywczych momentów jednak nie