160 likes | 424 Views
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
E N D
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
x2 α21 x1 α11 α12 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
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 • Ntije 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) • end • 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 tse stane listem a určime jeho třídu • když není splněno ukončovací kritérium => uzel tdělíme na 2 syny tY a tN s příslušnými množinami XtY a XtN podle dotazu „je xk0 ≤αk0n0?“ • end
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