Rozhodovací stromy
Rozhodovací stromy mnohoúrovňový systém třídy jsou postupně zamítány, dokud nedosáhneme přijatelné třídy na konci dosáhneme stavu, kdy příznakový prostor je sekvenčně rozdělen do oblastí, které odpovídají jednotlivým třídám pro předložený „neznámý“ příznakový vektor, hledáme oblast, kam bude vektor zařazen pomocí posloupnosti rozhodnutí ve stromové struktuře stromové schéma je výhodné pro velké množství tříd nejpopulárnější jsou obecné binární rozhodovací stromy (OBCT = ordinary binary classification trees) rozdělují prostor do mnohoúhelníků, které mají strany rovnoběžné s osami posloupnost rozhodnutí je aplikována na jednotlivé příznaky rozhodování probíhá podle dotazů ve tvaru „je příznak xi ≤α?“
Binární klasifikační stromy – ilustrační příklad postupným dělením prostoru vytvoříme oblasti, které odpovídají jednotlivým třídám: odpovídající binární strom:
Binární klasifikační stromy – ilustrační příklad úloha rozděluje 2-dimenzionální prostor prahy, které určují „řezy“ v jednotlivých uzlech stromu, byly zjištěny pozorováním problému => tento postup není možné použít pro vyšší dimenze odpovídající binární strom může klasifikovat vektor, aniž by testoval všechny příznaky klasifikace provedena jen základě hodnoty prvního příznaku
Binární klasifikační stromy – vlastnosti během trénovací fáze (výstavba stromu) musíme brát v úvahu každý uzel t má svoji trénovací množinu Xt (Xt ⊆ X) kořen stromu pracuje s celou trénovací množinou X v každém uzlu máme k dispozici množinu dotazů každý dotaz odpovídá dělení uzlu do 2 synovských uzlů dělení uzlu je ekvivalentní dělení Xt do dvou disjunktních podmnožin XtY a XtN v XtY jsou vektory z Xt, na které jsme odpověděli „Yes“ pomocí dotazu v uzlu t v XtN jsou vektory z Xt, na které jsme odpověděli „No“ pomocí dotazu v uzlu t pro každé dělení platí: XtY ∩ XtN = ø XtY ∪ XtN = Xt dělící kritérium musí být takové, aby vybralo nejlepší dělení z množiny kandidátů ukončovací podmínka definuje, kdy bude uzel listem (a tedy nedojde k dělení uzlu) určuje výšku stromu ke každému listu je přiřazena jeho třída
Binární klasifikační stromy – množina dotazů pro OBCT stromy jsou dotazy ve tvaru „ je příznak xi ≤ α ?“ všechny možné prahové hodnoty α daného příznaku xi definují dělení množiny Xt teorie: když se α mění v intervalu Yα ⊆ R => je nutné položit nekonečně dotazů praxe: uvažujeme jen konečně dotazů počet trénovacích vzorů v X je konečný (označme ho N) libovolný příznak xk (k=1,...,l) může nabývat nejvýše Nt ≤ N různých hodnot (Nt je kardinalita množiny Xt ⊆ X) pro příznak xk můžeme použít prahové hodnoty αkn pro n=1,..., Ntk (Ntk ≤ Nt) kde αkn je prostřední hodnota mezi dvěma sousedními hodnotami xk v trénovací množině X => celkový počet možných dotazů v uzlu t je: - podle dělícího kritéria se v uzlu t vybere dotaz, který vede k nejlepšímu dělení množiny Xt v uzlu t x1 x2 α11 α12 α21
Binární klasifikační stromy – dělící kritérium binární dělení uzlu t vytvoří se dva synovské uzly tY a tN podle odpovědi „Yes“/„No“ na dotaz v uzlu t synům přísluší podmnožiny XtY a XtN podle stromové struktury (od kořene k listu) každé dělení uzlu t musí vytvořit podmnožiny XtY a XtN, které jsou „více třídově homogenní“ než množina Xt v uzlu t trénovací vzory v každé z nových podmnožin mají „vyšší preference pro danou třídu“ trénovací data v Xt jsou stejnoměrněji distribuované mezi různými třídami příklad: uvažujme 4 třídy a nechť vektory v Xt jsou rozděleny mezi třídy se stejnou pravděpodobností když uzel t rozdělíme tak, že body z ω1 a ω2 vytvoří podmnožinu XtY a body z ω3 a ω4 vytvoří podmnožinu XtN => nové podmnožiny jsou více homogenní než Xt ... „čistší“ ve stromovém rozhodování cíl: definovat míru, která určí „nečistotu“ uzlu rozdělit uzel tak, aby celková „nečistota“ synů byla nižší ve srovnání s „nečistotou“ otce
Binární klasifikační stromy – dělící kritérium „nečistota“ uzlu: kde P(ωi|t) je pravděpodobnost, že vektor z množiny Xt uzlu t spadne do třídy ωi (i=1,...,c) definice odpovídá entropii spojené s množinou Xt (Shannonova teorie informace) lze ukázat: I(t) nabývá maxima, když všechny pravděpodobnosti jsou stejné 1/c ... největší „nečistota“ I(t) se blíží k 0, když pro jednu třídu platí P(ωi|t) =1 a pro ostatní je pravděpodobnosti nulová ... nejmenší „nečistota“ v praxi pravděpodobnost odhadneme příslušnými poměry Nti / Nt Nti je počet vzorů v Xt, které padnou do třídy ωi 0∙log20 = 0
Binární klasifikační stromy – dělící kritérium po rozdělení uzlu do 2 synů: NtY vzorů přísluší odpovědi „Yes“ (množina XtY) NtN vzorů přísluší odpovědi „No“ (množina XtN) pokles „nečistoty“ uzlu je dán: kde I(tY) a I(tN) jsou „nečistoty“ uzlů tY a tN cíl: podle dané množiny vytvořit dotaz, který rozdělí uzel tak, aby došlo k největšímu poklesu „nečistoty“
Binární klasifikační stromy – ukončovací podmínka kdy ukončit dělení uzlu a prohlásit uzel za list? použít prahovou hodnotu T uzel t nebude dělen, když maximum ∆I(t) přes všechny případné dělení uzlu t je menší než T použít velikost Xt uzel t nebude dělen, když kardinalita množiny Xt je dostatečně malá použít „čistotu“ množiny Xt uzel t nebude dělen, když množina Xt je „čistá“ (tj. ideálně všechny body patří k jediné třídě)
Binární klasifikační stromy – přiřazení listu ke třídě když uzel prohlásíme za list => list dostane „značku“ třídy nejčastěji používané pravidlo: list t dostane značku třídy ωi když tedy list t dostane značku podle nejvíce zastoupené třídy v Xt
Binární klasifikační stromy – algoritmus na vytvoření stromu začneme s kořenem Xt= X pro každý nový uzel t pro každý příznak xk (k=1,...,l) pro každou hodnotu αkn (n=1,...,Ntk) generujeme XtY a XtN podle dotazu „je xk(i) ≤ αkn?“ pro i=1,...,Nt spočteme pokles „nečistoty“ end vybereme αkn0 , které vede k největšímu poklesu (s ohledem na příznak xk) vybereme xk0 a příslušné αk0n0 , které vede k největšímu celkovému poklesu „nečistoty“ když je splněno ukončovací kritérium => uzel t se stane listem a určime jeho třídu když není splněno ukončovací kritérium => uzel t dělíme na 2 syny tY a tN s příslušnými množinami XtY a XtN podle dotazu „je xk0 ≤ αk0n0?“
Binární klasifikační stromy – poznámky kritickým faktorem je velikost stromu podobně jako u vícevrstvých perceptronů velikost stromu musí být dostatečně velká ale ne příliš velká (jinak nedojde k dobré generalizaci) pokusy ukázaly, že použití prahové hodnoty jako ukončovací podmínky pro pokles „nečistoty“ nevede ke stromům se správnou velikostí buď dělení skončí příliš brzy nebo příliš pozdě v praxi se často nechá vystavět velký strom a pak se použijí metody, které jej prořezají zatím jsme pracovali s obyčejnými binárními klasifikačními stromy lze zobecnit budeme dělit prostor pomocí nadrovin, které nejsou rovnoběžné s osami dotazy budou mít tvar: „ je ∑ckxk ≤α ?“ dojde k lepšímu dělení příznakového prostoru
Binární klasifikační stromy – příklad nechť Xt u uzlu t má Nt = 10 vzorů 4 patří do třídy ω1 4 patří do třídy ω2 2 patří do třídy ω3 rozdělením uzlu t dostaneme množiny XtY a XtN XtY má vzory: 3 vzory z ω1 1 vzory z ω2 XtN má vzory: 1 vzory z ω1 3 vzory z ω2 2 vzory z ω3 spočtěte pokles „čistoty“ pro toto dělení uzlu
Binární klasifikační stromy – řešení příkladu XtN: 1 vzory z ω1 3 vzory z ω2 2 vzory z ω3 zadání Xt : 4 vzory z ω1 4 vzory z ω2 2 vzory z ω3 řešení XtY: 3 vzory z ω1 1 vzory z ω2