====== Rozhodovací stromy ====== * induktivní odvozovací metoda * strategie rozděl a panuj * její reprezentací je strom rozhodnutí - rozhodovací strom * dělíme na * **binární stromy** (vždy dvě větve z uzlu) * rychlejší výpočet (méně možností) * více uzlů * zpravidla přesnější * klasifikace * **obecné stromy** * lepší interpretovatelnost člověkem * menší strom * segmentace ===== Princip ===== ==== Popis stromu ==== * Kořen reprezentuje celou množinu vstupních dat. * Uzel, který není listem, reprezentuje rozhodovací pravidlo pro dělení (větvení). * Větev reprezentuje výsledek pravidla * Listy reprezentují třídy do kterých jsou data klasifikovány. (případně hodnoty atributů) ==== Tvorba rozhodovacího stromu ==== - Projdi trénovací množinu a najdi nejlepší atribut pro rozdělení - Rozděl množinu podle hodnoty atributu - Rekurzivně zpracuj každou část ==== Algoritmus ==== BuildTree(Node t, Training database D, Split Selection Method SSSS ) Apply SSSS to D to find splitting criterion if (t is not a leaf node) Create children nodes of t Partition D into children partitions Recurse on each partition endif ==== Kriterium volby testovacího atributu ==== * kriteriem volby je informační zisk **//G//**, jehož mírou je entropie **//E//** === Entropie === * entropie vyjadřuje míru nehomogenity dat == Entropie v booleovské klasifikaci == E(S) = − p_+ log_2 p_+ − p_-log_2 p_- == Entropie nabývající m různých hodnot == E(S) = - sum{i=1}{m}{p_i log_2 p_i} , kde p_i je pravděpodobnost, že vzorek patří do třídy C === Informační zisk (gain) === * očekávaná míra redukce entropie množiny S, při rozdělení podle atributu A G(S,A) = E(S) - sum{v in V(A)}{}{} delim{|}{S_v}{|}/delim{|}{S}{|}E(S_v) , kde V(A) je množina možných hodnot A,\\ S_v je podmnožina S, kde vzorky mají hodnotu atributu A = v. * E(S) je entropie množiny S, * druhý člen je hodnota entropie množiny S, při rozdělení podle atributu A. ===== Algoritmy ===== * ID3 * CHAID * CART Clasification and regreion tree * QUEST * MARS * TreeNet - namisto stromu, les malych stromu ==== ID3 (C4.5, C5 (See5)) ==== * postupuje shora dolů * používá hladového algorytmu * kritériem pro výběr atributu je maximalizace informačního zisku ==== CHAID ==== * CHi-squared Automatic Interaction Detector * Jeden z nejrozšířenějších rozhodovacích stromů v komerční oblasti * obecný strom === Princip === * Začíná se u celého souboru * Postupné větvení / štěpení souboru (přípustné je rozdělení na libovolný počet větví vycházejících z jednoho uzlu) * rekurzivní algoritmus - každý uzel se dělí podle stejného předpisu * Zastaví se, pokud neexistuje statisticky signifikantní rozdělení => vzniká list * Obvykle je navíc podmínka minimálního počtu případů v uzlu a/nebo v listu, příp. maximální hloubky stromu * Používá kontingenční tabulky * Exhaustive CHAID – provádí podrobnější prohledávání + adjustaci signifikancí při většinou stále únosné rychlosti počítání === Algoritmus === * Pro všechny atributy - Vytvoř kontingenční tabulku výstup x atribut (rozměr k x l) - Pro všechny dvojice hodnot atributu spočti chí-kvadrátový test podtabulky (k x 2) - „Podobné“ (=ne signifikantně odlišné) dvojice postupně spojuj (počínaje nejnižšími hodnotami chí-kvardrátu) a přepočítávej výchozí kontingenční tabulku. Zastav se, když signifikance všech zbylých podtabulek je vyšší než stanovená hodnota. - Zapamatuj si spojené kategorie a signifikanci chí-kvadrátu výsledné tabulky s redukovanou dimenzionalitou - Vyber atribut, kde je tato signifikance nejnižší - Pokud jsou splněny podmínky štěpení, rozděl případy v uzlu podle již „spojených“ kategorií ==== CART / C&RT ==== * Classification And Regression Tree * binární strom * Algoritmus je založen na počítání míry diverzity („nečistoty“) uzlu * Používa se Giniho míra diverzity div_{Gini} = 1 – sum{}{}{p^{2}_{i}} ,kde p_i jsou relativní četnosti v uzlech === Princip === - strom necháme vyrůst do maximální šíře => vede k přeučení - zpětně odstraníme listy a větve, které podle vhodně zvoleného statistického kriteria nelze považovat za významné (většinou se používá cross-validation) ==== QUEST ==== * Quick, Unbiased and Efficient Statistical Tree * Kriterium volby dělícího atributu na základě statistického testu nezávislosti atribut x výstup => mírně suboptimální, ale rychlé, navíc výběr štěpící proměnné je nevychýlený * nominální výstup (=závisle proměnná) ==== GUIDE ==== * Generalized, Unbiased, Interaction Detection and Estimation * kromě po částech konstantní aproximace nabízí i po částech polynomiální * „kříženec“ regresního stromu a mnohorozměrné regrese * vhodné pro data, u kterých může být na místě jistá míra spojitosti aproximace ==== MARS ==== * Multivariate Adaptive Regression Splines * Metoda blízce příbuzná rozhodovacím stromům * lze si ji představit jako jakýsi rozklad aproximační funkce do elementárních „stromů“ s jedním štěpením a s lineární namísto konstantní aproximací v obou polopřímkách ==== TreeNet, rozhodovací lesy ==== * Namísto jednoho velkého stromu „les“ malých * Výsledná predikce vzniká váženým součtem predikcí jednotlivých složek