Rozhodovací stromy

Transkript

Rozhodovací stromy
Rozhodovacı́ stromy
Atribut
Outlook
Sunny
Humidity
High
No
Overcast
Rain
Yes
Normal
Yes
Hodnota atributu
Wind
Strong
No
Weak
hodnota
cílového
atributu
Yes
Rozhodovacı́ strom pro daný cı́lový atribut G je kořenový strom
tvořený z
• kořene a vnitřnı́ch uzlů označených atributem; ze kterého vede
jedna hrana pro každou možnou hodnotu tohoto atributu;
• listy jsou označeny předpokládanou hodnotou cı́lového atributu
G za předpokladu, že ostatnı́ atributy nabývajı́ hodnot na cestě
od kořene do listu. Pokud se některé atributy na cestě nevyskytujı́, na jejich hodnotě nezáležı́.
Základ algoritmu tvorby rozhodovacı́ho stromu z dat je následujı́cı́:
1. vyber atribut; vytvoř z něj uzel a rozděl data podle hodnoty
tohoto atributu
2. pro každou hodnotu atributu vytvoř podstrom z dat
s odpovı́dajı́cı́ hodnotou
3. pokud data obsahujı́ jen jednu hodnotu cı́lové třı́dy či pokud
došly atributy k dělenı́, vytvoř list s hodnotou nejčetnějšı́ cı́lové
třı́dy.
Otázkou je, jak vybı́rat atribut k dělenı́.
Entropie
Po mı́ře entropie rozdělenı́ hodnot daného atributu A (tj. mı́ře
nejistoty, negativnı́ mı́ře informace) chceme, aby:
• byla nula, pokud jsou všechny hodnoty cı́lové třı́dy stejné
• byla největšı́, pokud je stejně hodnot všech cı́lových třı́d (tj.
nevı́me nic)
• aby rozhodnutı́ ve dvou krocı́ch vedlo ke stejnému výsledku
jako rozhodnutı́ naráz, tj.
7
E([2, 3, 4]) = E([2, 7]) + · E([3, 4])
9
Toto splňuje pouze entropie E([ p1 , . . . , pn ]) = − ∑in=1 pi log pi ,
logaritmus se bere většinou dvojkový.
Pozn. nemusı́me normalizovat, pak dostaneme entropii násobenou součetem všech pi .
Pokud chceme uvést, přes který atribut entropii počı́táme,
použı́váme dolnı́ index, např. E X j , resp. EG pro cı́lový atribut.
Entropie pro dvouhodnotový atribut
Entropie
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
vodorovná osa: pi , svislá: entropie.
0.8
0.9
1.0
ID3 algorithmus
Uzel, který dáme do kořene (pod)stromu, vybı́ráme podle
maximálnı́ho informačnı́ho zisku (information gain), definovaného
pro množinu dat data a atribut X j jako:
Gain(data, X j ) = EG (data) −
∑
x j ∈X j
|dataX j =x j |
EG (data X j =x j )
|data|
kde data X j =x j je podmnožina data, kde atribut X j má hodnotu x j ,
entropie je definovaná
|G|
|dataG=g |
|dataG=g |
EG (data) = ∑ −
· log2
= ∑ − pi · log2 pi
|
data
|
|
data
|
g∈ G
i =1
kde pi je počet dat v data patřı́cı́ do třı́dy gi dělený celkovým počtem
dat v data.
Algoritmus ID3 algorithm(data, G cı́l, Attributes vstup. atributy)
Vytvoř kořen root
Pokud majı́ všechna data stejné g, označ kořen g a konec,
Pokud došly Attributes, označ root
nejčastějšı́ hodnotou g v data a konec
jinak
X j = atribut z Attributes s maximálnı́m Gain(data, X j )
označ root atributem X j
pro každou hodnotu x j atributu X j ,
přidej větev pod root, odpovı́dajı́cı́ testu X j = x j
data X j =x j = podmnožina data, kde X j = x j
Je–li data X j =x j prázdné, přidej list označený
nejčastějšı́ hodnotou g v data a konec
jinak přidej podstrom ID3(data X j =x j , G, Attributes \ { X j })
vrať root
Chyba predikce
• na trénovacı́ch datech
• na nových datech (při nasazenı́ v reálu)
Occamova břitva
• preferujeme jednoduššı́ model (jsou–li srovnatelně dobré)
• penalizujeme složité modely
Snažı́m se strom zmenšit (prořezat) bez velkého zhoršenı́ chyby.
Prořezávánı́
• postprunning – nejdřı́v vytvořı́me strom, pak ho prořezáváme;
• preprunning – ukončit tvořenı́ stromu dřı́ve, než dojdeme na
konec.
I když pre–prunning vypadá lákavěji (než zbytečně tvořit dál a
prořezávat), častěji se použı́vá postprunning, protože nezamı́tne
kombinaci atributů, z nichž žádný jednotlivec nenı́ užitečný, ale jako
celek užitečnı́ jsou. Nenı́ jasné, jestli lze nalézt preprunning strategii,
která by byla stejně dobrá, jako postprunning.
Odhad chyby
• reduced error prunning – nechám trochu dat na prořezávánı́, ale
bohužel učı́m strom na méně datech.
• odhadovat chybu na základě trénovacı́ch dat – použito v C4.5,
motivováno statistikou.
• optimalizovat penalizovanou mı́ru chyby (CART).
Odhad chyby z trénovacı́ch dat
• Uvažujme list `, v něm je N` přı́kladů, v datech je Err` přı́kladů
chybných (tj. různých od nejčetnějšı́ třı́dy)
• fˆ` =
Err`
N`
je pozorovaná frekvence chyby,
• předpokládáme, že N` instancı́ bylo generováno Bernoulliho
procesem s parametrem q` (=správná (true) pravděpodobnost
chyby),
• vzhledem k tomu, že odhad je založen na trénovacı́ch datech,
děláme pesimistický odhad a mı́sto výpočtu konfidenčnı́ho
intervalu bereme jako odhad hornı́ hranici tohoto intervalu.
V C4.5 je default hladina významnosti (confidence level) α = 0.25
hledáme z tak, aby:


ˆ`
q
−
f
`
P q
> z = α
q` (1−q` )
N`
Pro α = 0.25 je z = 0.69, nižšı́ α vede k drastičtějšı́mu prořezánı́. z
ˆ `
použijeme pro výpočet pesimistického odhadu frekvence chyby err
r
2
ˆf ` + z2 + z fˆ` − fˆ` + z2 2
2N`
N`
N`
4N`
ˆ `=
err
2
1 + Nz `
Nebo přibližně:
s
ˆ ` ≈ fˆ` + zσ` ≈ fˆ` + z ·
err
fˆ` (1 − fˆ` )
N`
Prořezávánı́
Postprunning uvažuje dvě operace,
• subtree replacement – vyberu podstrom a nahradı́m ho listem;
to určitě snı́žı́ přesnost na trénovacı́ch datech, ale může to zlepšit
predikci na nezávislých testovacı́ch datech. Postupujeme od
listů ke kořeni, v každém uzlu buď podstrom nahradı́me, nebo
necháme.
• subtree raising – komplexnějšı́ a je otázkou, je–li třeba. Ale je
použité v C4.5. Jde o vynechánı́ jednoho uzlu, nahrazenı́ ho jeho
podstromem a překlasifikovánı́m přı́kladů, které patřily do
zbylých podstromů. V praxi se to zkoušı́ jen pro
nejnavštěvovanějšı́ větev.
Numerické atributy
64
65
68
69
70
71
72
75
80
81
83
85
yes
no
yes
yes
yes
no
no,yes
yes,yes
no
yes
yes
no
U tohoto atributu připadá v úvahu 11 dělicı́ch bodů, ale pokud
neuvažujeme dělenı́ mezi dvěma stejnými hodnotami cı́lového
atributu, tak jen 9. Pro každý řez zvlášť můžeme zjistit informačnı́
zisk, např. pro řez v 71.5 dostaneme
6
8
E([9, 5]) − E([4, 2], [5, 3]) = E([9, 5]) − ( · E([4, 2]) +
· E([5, 3]))
14
14
= 0.940 − 0.939 bitů.
Testů podle numerického atributu může být na cestě z kořene do
listu vı́c – narozdı́l od diskrétnı́ho atributu, kde rovnou dělı́me podle
všech možných hodnot.
Penalizace mnohahodnotových atributů
• Dělenı́ dle identifikačnı́ho kódu záznamu vede k nulové
entropii, ale nezobecňuje.
• Pro výběr dělenı́ užijeme Gain ratio=
Gain(data,X j )
E( X j )
tj. penalizujeme započı́tánı́m informace obsažené v samotném dělenı́
podle atributu, bez ohledu na cı́lovou třı́du.
Např. ID kód pro N přı́kladů bude mı́t informaci obsaženou v atributu:
E([1, 1, . . . , 1]) = −( N1 · log
1
)
N
· N = log N.
• Nebo jednoduše dovolı́me jen binárnı́ dělenı́(CART); připouštı́–li
atribut dalšı́ dělenı́, pokračuje do podstomů.
•
V praxi se navı́c přidávajı́ at–toc testy na vyhozenı́ ID, i když vyjde nejlepšı́, a na omezenı́ přı́lišné závislosti na entropii atributu
tı́m, že vyberu maxmálnı́ gain ratio jen tehdy, pokud je i information gain aspoň tak dobrý jako průměrný information gain přes
všechny testované atributy.
•
C4.5 navı́c nevybere atribut, který má skoro jen jednu hodnotu – vyžaduje aspoň dvě hodnoty s aspoň dvěma přı́klady s tı́m, že ta
druhá dvojka se dá nastavit a měla by se zvětšit, máme–li hodně dat s velkým šumem.
Binárnı́ řez pro kategoriálnı́ atributy
• Pro q hodnot 2q − 1 možných dělenı́, ALE
• pro 0–1 výstup stačı́
– setřı́dit hodnoty atributu dle klesajı́cı́ proporce těch s cı́lem 1
– vyzkoušet všechny řezy, tj. q − 1.
• Pro kvantitativnı́ výstup setřı́dit kategorie dle klesajı́cı́ho
průměru cı́le a totéž.
Chybějı́cı́ hodnoty
• Ignorovat celou instanci často nemůžeme, protože by nám
nezbyla žádná data. Navı́c, pokud chybějı́cı́ atribut nenese informaci
pro rozhodovánı́, tak je tahle instance stejně dobrá jako všechny ostatnı́.
• Pokud fakt, že údaj chybı́, nenı́ náhodný, pak je vhodné
chyběnı́ hodnoty považovat za dalšı́ možnou hodnotu
atributu.např. plat neuvedou ti, kdo ho majı́ hodně malý či hodně velký.
• Pokud ale samotný fakt chyběnı́ nenese informaci (např. neměřil
porouchaný teploměr), pak je lépe nakládat jinak.
• Možné řešenı́ je rozdělenı́ instance na kousky (numericky vážit
podle počtu trénovacı́ch instancı́ jdoucı́ch jedotlivými větvemi),
dojı́t k listům, a váženě zkombinovat predikce na listech.
• Podobně použı́váme váhy pro výpočet informačnı́ho zisku a
informač. poměru a pro dělenı́ instancı́ podle chybějı́cı́ho att.
Různé mı́ry pro větvenı́ stromu
• entropie − ∑kK=1 p̂m,k log p̂m,k
• chyba predikce
1
Nm
∑i∈Rm I ( yi 6= k(m)) = 1 − p̂m,km
• Gini ∑k6=k| p̂m,k p̂m,k| = ∑kK=1 p̂m,k (1 − p̂m,k )
Interpretace Gini:
– předpovı́dám pravděpodobnosti, pak je trénovacı́ chyba Gini
– Gini je součet rozptylů jednotlivých třı́d k při 0–1 kódovánı́
Přı́klad:
Je dělenı́ (300,100) a (100,300) lepšı́ či horšı́ než (200,400) a (200,0)?
Miry pro vyber vetveni stromu
0.5
0.4
0.3
0.2
0.1
0
0
0.1
entropie
0.2
0.3
0.4
0.5
0.6
0.7
misclas. error
GINI
0.8
0.9
1.0
Různá cena chyby
• Raději predikuji infarkt i tomu, kdo ho nedostane, než nevarovat
toho, kdo ho dostane.
• Lkk| matice ceny za chybnou klasifikaci k jakožto k|
• pro vı́cekategoriálnı́ klasifikaci modifikujeme
Gini = ∑k6=k| Lkk| p̂mk p̂mk|
• pro dvouhodnotovou vážı́me prvky třı́dy k Lkk| krát
• v listu pak klasifikujeme k(m) = argmink ∑l Llk p̂ml .
Cena za pozorovánı́
Gain2 ( S, X j )
Cost( X j )
učenı́ robota, nakolik objekty mohou být uchopeny Schlimmer 1990, Tan 1993
nebo
2Gain( S,X j )−1
(Cost( X j ) + 1)w
Nunez 1988 medicı́nská diagnostika. Nunez 1991 srovnává oba přı́stupy na různých přı́kladech.
Složitost algoritmu
Mějme N instancı́ o p atributech. Předpokládejme hloubku stromu
O(logN ), tj. že zůstává rozumně hustý. Vytvořenı́ stromu potřebuje
O( p · N · logN ) času. (Na každé hloubce se každá instance vyskytne
právě jednou, je logN hloubek, v každém uzlu zkoušı́me p atributů.
Složitost subtree replacement je O( N ), složitost subtree raising je
O( N (logN )2 ).
Celková složitost tvorby stromů je O( pNlogN ) + O( N (logN )2 ).
Pravidla ze stromů
• Ze stromu můžeme vytvořit pravidla napsánı́m pravidla pro
každý list.
• Ta pravidla ale můžeme ještě zlepšit tı́m, že uvažujeme každý
atribut v každém pravidle a zjistı́me, jestli jeho vynechánı́m
pravidlo nezlepšı́me (tj. nezlepšı́me chybu na validačnı́ch datech
resp. pesimistický odhad chyby na trénovacı́ch datech).
• To funguje celkem dobře, ale dlouho, protože pro každý atribut
musı́me projı́t všechny trénovacı́ přı́klady. Algoritmy tvořı́cı́
pravidla přı́mo bývajı́ rychlejšı́.
• Výsledná pravidla setřı́dı́me podle klesajı́cı́ úspěšnosti.
Stromy pro numerickou predikci
• Listy stromů obsahujı́ numerické hodnoty, rovné průměru
trénovacı́ch přı́kladů v listu.
• pro výběr atributu k dělenı́ zkoušı́me všechny řezy, vybı́ráme
maximálnı́ zlepšenı́ střednı́ kvadratické chyby.
• Tyto stromy se nazývajı́ také regresnı́ stromy, protože statistici nazývajı́
regrese proces pro predikci numerických hodnot.
• Můžeme i kombinovat regresnı́ přı́mku a rozhodovacı́ strom tı́m,
že v každém uzlu bude regresnı́ přı́mka – takový strom se
nazývá model tree.
CART
Hledá proměnnou j a bod řezu s na oblasti R1 ( j, s) = { X | X j ≤ s} a
R2 ( j, s) = { X | X j > s}
takové, aby minimalizovaly
"
#
min j,s = minc1
∑
xi ∈ R1 ( j,s)
( yi − c1 )2 + minc2
∑
( yi − c 2 )2
xi ∈ R2 ( j,s)
vnitřnı́ minima jsou průměry, tj. ĉ1 = avg( yi | xi ∈ R1 ( j, s)).
Prořezávánı́ v CART
• Naučme strom T0 až k listům s málo (5–ti) záznamy.
• Vytvořı́me hierarchii podstromů T ⊂ T0 postupným slévánı́m
listů dohromady.
• Listy stromu T o velikosti | T | indexujeme m, list m pokrývá
oblast Rm , definujeme:
ĉm
Qm ( T )
=
=
1
Nm
1
Nm
∑
yi ,
∑
( yi − ĉm )2 .
xi ∈ R m
xi ∈ R m
• Definujeme kriterium k optimalizaci:
|T |
Cα ( T ) =
∑
Nm Qm ( T ) + α | T |.
m=1
• Vyjdeme z T0 , postupně slijeme vždy dva listy, které způsobı́
nejmenšı́ nárůst ∑m Nm Qm ( T ), až nám zbyde jen kořen.
• Dá se ukázat, že tato posloupnost obsahuje Tα optimálnı́ stromy
pro daná α.
• α = 0 – neprořezáváme, necháme T0 , pro α = ∞ necháme jen
kořen, vhodné α zvolı́me na základě krosvalidace,
α̂ minimalizuje krosvalidačnı́ chybu RSS, vydáme model Tα̂ .

Podobné dokumenty

eagle-sbírka úloh

eagle-sbírka úloh Při výpočtu hodnoty potenciometru P1 vycházíme ze vzorce, který je uveden v doporučeném zapojení výrobce na obr. 4, a ze zadaných hodnot výstupního napětí. Protože proud IADJ je řádově 100 µA, může...

Více

a. příprava projektu

a. příprava projektu ∆UC1 – rozdíl max. a min. hodnoty napětí na C1  U C1=U MAXC1 −U MINC1  U C1=10,45−8=2,45 V t – perioda nabíjení a vybíjení C1 (u dvoucestného můstkového usměrnění odpovídá f = 100 Hz)

Více

M etriky softw arove kvality S polehlivost v testovanı softw aru O

M etriky softw arove kvality S polehlivost v testovanı softw aru O Sledovanou proměnnou studovaných kritériı́ je počet defektů (nebo rychlost defektů normalizavaná počtem řádku kódu) za daný časový interval (týdny, měsı́ce, atd.), nebo doba mezi dv...

Více

Periodická literatura v roce 2012

Periodická literatura v roce 2012 http://archiv.ucl.cas.cz/index.ph p?path=CesLit http://www.prolekare.cz/ceskoslovenskapediatrie?confirm_rules=1 http://www.tigis.cz/casopisy/pr o-lekare/ceskoslovenskafyziologie.html

Více

Základy práce s programem Simulink

Základy práce s programem Simulink Schopností tohoto bloku je nahrazovat vstupní signál, jehož hodnota leží v oblasti necitlivosti, nulovou hodnotou výstupu. Oblast necitlivosti je vymezena hodnotami vepsanými do políček Start of de...

Více

Uvodnı slovo - Římskokatolická farnost u kostela sv. Tomáše v Brně

Uvodnı slovo - Římskokatolická farnost u kostela sv. Tomáše v Brně pozemského života. Všichni vı́me, že to nenı́ snadné a že poslednı́ fáze lidského života bývá často nesnadná. I když během celého života byl člověk úspěšný, stačil na všech...

Více

TAEKWONDO WTF Karviná

TAEKWONDO WTF Karviná 14.5. Zakázané akce 14.5.1. Následující akce jsou klasifikovány jako zakázané akce a vyhlašuje se "Kyonggo" a) Překračování hraniční čáry b) Vyhýbání se otáčením se k soupeři zády c) Padání d) Vyhý...

Více

DIPLOMOV´A PR´ACE Digitáln´ı kompenzacn´ı jednotka pro

DIPLOMOV´A PR´ACE Digitáln´ı kompenzacn´ı jednotka pro Výsledkem je tedy přı́pravek, pomocı́ kterého je možné snı́žit zbytkové napětı́ v měřı́cı́m obvodu z desı́tek milivoltů na desı́tky až jednotky mikrovoltů.

Více