14.07.2013 Views

Co je rozhodovací strom?

Co je rozhodovací strom?

Co je rozhodovací strom?

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Těžko říct. <strong>Co</strong> znamená „lepší“?<br />

Přesnější? Oba jsou stejně přesné.<br />

7 / 23<br />

Který <strong>strom</strong> <strong>je</strong> lepší?<br />

Jednodušší? Oba <strong>strom</strong>y popisují datovou sadu stejně<br />

přesně, mají hloubku 2 a 4 listy. Strom 1 obsahu<strong>je</strong> 3<br />

podmínky, <strong>strom</strong> 2 <strong>je</strong>n 2.<br />

<strong>Co</strong> když <strong>je</strong> <strong>je</strong>den model <strong>je</strong>dnodušší, ale méně přesný?<br />

<strong>Co</strong> když jsou v datech chyby nebo obsahují šum?<br />

Úspěšnější při aplikaci na nová data? Žádná zatím<br />

nemáme. Potřebovali bychom sadu testovacích dat (jiná<br />

sada dat z téhož zdro<strong>je</strong>).<br />

9 / 23<br />

Umělá inteligence I.<br />

Expresivita <strong>rozhodovací</strong>ch <strong>strom</strong>ů<br />

Každý binární <strong>rozhodovací</strong> <strong>strom</strong> <strong>je</strong> ekvivalentní nějakému<br />

výrazu v DNF.<br />

Jakákoli funkce ve výrokové logice se dá vyjádřit jako<br />

<strong>rozhodovací</strong> <strong>strom</strong>.<br />

Pro některé z funkcí jsou <strong>strom</strong>y vhodné, pro jiné ne.<br />

Jak velká <strong>je</strong> množina booleovských funkcí nad n atributy?<br />

Počet pravdivostních tabulek, které lze s n atributy vytvořit.<br />

Tabulka má 2^n řádků 2^(2^n) funkcí.<br />

Stromů <strong>je</strong> <strong>je</strong>ště víc, <strong>je</strong>dna funkce může být vyjádřena více <strong>strom</strong>y.<br />

Potřebu<strong>je</strong>me nějaký chytrý algoritmus, který by z tolika<br />

hypotéz (<strong>strom</strong>ů) vybral nějakou dobrou. Jak na to???<br />

11 / 23<br />

Umělá inteligence I.<br />

Jak zvolit "nejlepší" atribut?<br />

Rozdělme množinu S na podmnožiny S 1 ,S 2 , ...,S n na základě hodnot<br />

diskrétního atributu at.<br />

Měření množství informace uvnitř S i def. pomocí entropie (Shanon)<br />

E(S i ) = -(p i + )*log pi + - (pi - )*log pi - ,<br />

kde (p i + ) <strong>je</strong> pravděpodobnost, že libovolný příklad v Si <strong>je</strong> pozitivní;<br />

hodnota (p i + ) se odhadu<strong>je</strong> jako odpovídající frekvence (četnost).<br />

Celková entropie E(S,at) tohoto systému <strong>je</strong><br />

E(S,at) = n i=1 P(S i ) * E(S i ),<br />

kde P(S i ) <strong>je</strong> pravděpodobnost události S i , tj. poměr |S i | / |S|.<br />

Vypočteme E(S,at) pro všechny at a zvolíme atribut at0 s minimální entropií E(S,at 0).<br />

Umělá inteligence I.<br />

Usmívá_se<br />

8 / 23<br />

kravata<br />

ano ne<br />

ano ne<br />

Rozhodovací <strong>strom</strong> jako logický výraz<br />

Klasifika Usmíva_se kravata<br />

ce<br />

tělo hlava v_ruce<br />

přítel ano ano kruh 3úhelník nic<br />

tělo<br />

jiné<br />

přítel nepřítel nepřítel<br />

přítel ne ne 3úhelník 3úhelník balon<br />

nepřítel ne ano čtverec 3úhelník balón<br />

nepřítel ne ano čtverec kruh meč<br />

přítel ano ne 3úhelník kruh květ<br />

přítel ano ano kruh kruh nic<br />

nepřítel ano ne čtverec čtverec nic<br />

nepřítel ne ne kruh kruh meč<br />

3úh.<br />

přítel<br />

(Kravata=ano & usmívá_se=ano) V (Kravata=ne & tělo=3úh.) -> přítel<br />

10 / 23<br />

Umělá inteligence I.<br />

Klasifikace Usmíva_se kravata tělo hlava v_ruce<br />

přítel ano ano kruh 3úhelník nic<br />

přítel ne ne 3úhelník 3úhelník balon<br />

nepřítel ne ano čtverec 3úhelník balón<br />

nepřítel ne ano čtverec kruh meč<br />

přítel ano ne 3úhelník kruh květ<br />

přítel ano ano kruh kruh nic<br />

nepřítel ano ne čtverec čtverec nic<br />

nepřítel ne ne kruh kruh meč<br />

Klasifikace Ano:3P,1N<br />

Ne: 1P,3N<br />

12 / 23<br />

Usmívá_se Kravata tělo=3úhel. hlava=3úh. v_r.=nic<br />

Ano:2P,2N<br />

Ne: 2P,2N<br />

Ano:2P,0N<br />

Ne: 2P,4N<br />

Ano:2P,1N<br />

Ne:2P,3N<br />

Umělá inteligence I.<br />

Umělá inteligence I.<br />

Ano:2P,1N<br />

Ne: 2P,3N<br />

Indukce <strong>strom</strong>u z trénovacích dat<br />

dáno: S ... trénovací množina (množina klasifikovaných příkladů)<br />

1. Nalezni "nejlepší" atribut at 0 (t.j. atribut, <strong>je</strong>hož hodnoty nejlépe diskriminují<br />

mezi pozitivní a neg. příklady) a tím ohodnoť kořen vytvářeného <strong>strom</strong>u.<br />

2. Rozděl množinu S na podmnožiny S 1,S 2, ...,S n podle hodnot atributu at 0 a<br />

pro každou množinu příkladů S i vytvoř nový uzel jako následníka právě<br />

zpracovávaného uzlu (kořenu)<br />

3. Pro každý nově vzniklý uzel s přiřazenou podmnožinou S i proveď:<br />

Jestliže v S i nejsou žádné případy, pak <strong>je</strong> uzel listem a pro rozhodnutí<br />

použij rodiče. Konec.<br />

Jestliže všechny příklady v S i patří do stejné třídy, pak <strong>je</strong> uzel listem a<br />

<strong>je</strong>ho rozhodnutí bude třída, do níž příklady patří. Konec.<br />

Jestliže nezbyl atribut, podle něhož se můžeme rozhodovat, a S i přesto<br />

obsahu<strong>je</strong> příklady více tříd (chyby v datech, šum), pak <strong>je</strong> uzel listem a<br />

jako rozhodnutí použij majoritní třídu z S i.<br />

jinak pokračuj ve větvení: jdi na bod 1 s tím, že S : = S i.<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!