Informační systémy pro podporu rozhodování 2 Jan Žižka, Naděžda Chalupová Ústav informatiky PEF Mendelova universita v Brně
Strojové učení, umělá inteligence, dolování z dat Strojové učení je moderní, rychle a neustále se rozvíjející technologie pro získávání ( dolování ) znalosti z dat. Umělá inteligence se zabývá technologiemi prohledávání libovolných (reálných a abstraktních) prostorů; cílem je nalezení optima (globálního maxima), což je nejlepší řešení nějakého zadaného problému. Dolování z dat je zaměřeno na odkrytí znalosti v datech ukryté: data informace znalost. Dolování z dat využívá veškeré vhodné technologie, zejména strojové učení, umělou inteligenci, logiku a matematiku.
Mezi vytvářením dat a jejich porozuměním neustále narůstá mezera. Souvisí to úměrně s narůstajícím množstvím dat. Data ukrývají informaci jako svou potenciálně užitečnou část pro řešení různých konkrétních úloh. Data obsahují skupiny vzájemně si podobných hodnot, které představují vzory, tj. vzor (něco společného a typického) je zobecněním určité skupiny dat: lovci sledují typické chování své kořisti, zemědělci sledují typické souvislosti při pěstování plodin, politici sledují typické vzory názorů voličů, milenci typické odezvy svých partnerů, apod.
Dolování z dat se zaměřuje na elektronicky uložená data, přičemž prohledávání dat je automatizované pomocí počítačů. Odhaduje se, že množství uložených dat na celém světě se zdvojnásobuje každých 20 měsíců. Obecně platí, že více dat obsahuje více informace, tj. více znalosti, která je stále složitější. Inteligentně analyzovaná data představují velmi cenný zdroj. Z komerčního hlediska může jít o zvyšování konkurenční schopnosti; z vědeckého hlediska např. o zvýšení znalosti o řešeném problému.
Dolování z dat se zabývá řešením problémů pomocí analýzy dat, která jsou v daném čase k dispozici. Odhalená znalost pak může účinně pomáhat při odhadu budoucích jevů. Užitečné vzory umožňují netriviální predikce o nových, v budoucnu se vyskytujících instancích. Data získaná libovolným způsobem nemají obecně nijak zřetelnou strukturu. Dolování z dat odhaluje různé skryté, avšak existující struktury vzory struktur, tj. něco obecného, typického, aplikovatelného na více či méně si podobné popisy objektů. Objekty pak lze kategorizovat do jim příslušných skupin (tříd), kde není rozhodující unikátní individualita, nýbrž společné vlastnosti definující typ, např.: červené, zelené, modré,... předměty (libovolného tvaru).
+ + + + Metody alternativní ke statistice umožňují nalézt skryté datové struktury, které statistika odhalí jen velice obtížně nebo vůbec ne. Ilustrace ukazuje čtyři jednoduché případy, kdy odhalení neznámé struktury statisticky do druhého řádu selhává, protože všechny čtyři ukázky mají stejný střed + i kovarianci, takže se jeví stejně ve skutečnosti by individuální případy měly být zařazeny do příslušných shluků či kategorií odlišně. Vícerozměrné případy jsou pak mnohem komplikovanější.
Příklad dolování z dat: Kontaktní čočky ID Age Spectacle prescription Astigmatism Tear production rate 1 young myope no reduced none 2 young myope no normal soft 3 young myope yes reduced none 4 young myope yes normal hard 5 young hypermetrope no reduced none 6 young hypermetrope no normal soft 7 young hypermetrope yes reduced none 8 young hypermetrope yes normal hard 9 pre-presbyopic myope no reduced none 10 pre-presbyopic myope no normal soft 11 pre-presbyopic myope yes reduced none 12 pre-presbyopic myope yes normal hard 13 pre-presbyopic hypermetrope no reduced none 14 pre-presbyopic hypermetrope no normal soft 15 pre-presbyopic hypermetrope yes reduced none 16 pre-presbyopic hypermetrope yes normal none 17 presbyopic myope no reduced none 18 presbyopic myope no normal none 19 presbyopic myope yes reduced none 20 presbyopic myope yes normal hard 21 presbyopic hypermetrope no reduced none 22 presbyopic hypermetrope no normal soft 23 presbyopic hypermetrope yes reduced none 24 presbyopic hypermetrope yes normal none Recommended lenses presbyopic: dalekozraký starší (pokles akomodace věkem) myope: krátkozraký hypermetrope: dalekozraký
Data kontaktní čočky popisují podmínky, kdy optik (ne)má předepsat určitý druh kontaktních čoček. Tabulka je mírně zjednodušená (nejsou v ní všechny atributy mající vliv na předpis čoček). Databáze popisuje všechny možné případy, které jsou bez chybějících hodnot a bez šumu. Dohromady je 24 instancí, popis čtyřmi atributy, které nabývají nominálních hodnot. Klasifikační třídy jsou tři. Data pocházejí ze srpna 1990. Jsou ve veřejně přístupném souboru různých dat UCI Repository Of Machine Learning Databases and Domain Theories (Univ. of California, Irvine, CA).
Je v datech nějaká struktura? Jsou tři třídy: none (žádné čočky), soft (měké) a hard (tuhé) čočky. Podle čeho lze každou kombinaci nominálních hodnot zařadit do jednotlivých tříd? young, myope, no, reduced: none presbyopic, hypermetrope, no, reduced: none pre-presbyopic, hypermetrope, yes, reduced: none presbyopic, myope, yes, reduced:? Z tabulky plyne, že když je tear-production-rate = reduced, tak je vždy třída none. Ale ne vždy je hodnota atributu tear-production-rate = reduced pro třídu none!
Například: pre-presbyopic, hypermetrope, yes, normal: none Takže nestačí se řídit pouze jedním atributem, relevantní jsou zjevně i další: v jaké kombinaci hodnot? Popis struktury dat z hlediska klasifikační třídy může být různý, například srozumitelně pomocí pravidel nebo rozhodovacího stromu (white-box), nebo nesrozumitelně pomocí natrénované umělé neuronové sítě (black-box). Příklad pravidel a stromu získaných strojovým učením z dat kontaktní čočky:
If astigmatism = no and tear-prod-rate = normal and spectacle-prescrip = hypermetrope then soft If astigmatism = no and tear-prod-rate = normal and age = young then soft If age = pre-presbyopic and astigmatism = no and tear-prod-rate = normal then soft If astigmatism = yes and tear-prod-rate = normal and spectacle-prescrip = myope then hard If age = young and astigmatism = yes and tear-prod-rate = normal then hard If tear-prod-rate = reduced then none If age = presbyopic and tear-prod-rate = normal and spectacle-prescrip = myope and astigmatism = no then none If spectacle-prescrip = hypermetrope and astigmatism = yes and age = pre-presbyopic then none If age = presbyopic and spectacle-prescrip = hypermetrope and astigmatism = yes then none Celkem 9 pravidel popisuje kompletně problém předepsání kontaktních čoček. Pravidla vygenerována algoritmem PRISM.
tear-prod-rate = reduced: none tear-prod-rate = normal astigmatism = no age = young: soft age = pre-presbyopic: soft age = presbyopic spectacle-prescrip = myope: none spectacle-prescrip = hypermetrope: soft astigmatism = yes spectacle-prescrip = myope: hard spectacle-prescrip = hypermetrope age = young: hard age = pre-presbyopic: none age = presbyopic: none Rozhodovací strom vytvořený algoritmem ID3 popisuje problém rovněž zcela správně. Každá větev zároveň představuje jedno pravidlo.
reduced t-p-r normal none no astig yes age young pre-pre pre myope spect hyper soft soft spect hard myope hyper young age pre-pre pre none soft hard none none Překreslený rozhodovací strom ID3
Detailní popis demonstrovaných algoritmů: PRISM algoritmus: J. Cendrowska (1987). PRISM: An algorithm for inducing modular rules. International Journal of Man-Machine Studies. 27(4):349-370. ID3 algoritmus: R. Quinlan (1986). Induction of decision trees. Machine Learning. 1(1):81-106.
(Počet věcí, které mají vysvětlovat jevy, nemá být zbytečně násobený.) Machine Learning, Artificial Intelligence, Data Mining Alternativní algoritmus: Umělá neuronová síť se sigmoidálními přenosovými funkcemi neuronů (nelineární hranice oddělující třídy) trénovaná tzv. zpětným šířením chyb (backpropagation). Není zřejmé, jakou architekturu má síť mít. Lze zkusit různé architektury (pouze počet vstupních a výstupních jednotek je dán úlohou). Jako výsledek se vybere dle Occamova (resp. Ockhamova) pravidla architektura nejjednodušší, dává-li stejně dobré výsledky jako architektury složitější (tzv. Occamova břitva, Occam s / Ockham s razor): Entia non sunt multiplicanda praeter necessitatem.
Dolování z dat data mining Metody strojového učení jsou prakticky zaměřené, využívají všech vhodných teorií a postupů včetně exaktní matematiky, pravděpodobnosti, umělé inteligence, přibližného usuzování, logiky, apod. Strojové učení nepředpokládá žádný filosofický přístup k termínu učení jde o naučení se (zobecnění) znalosti z dat a informace, zejména induktivně, z příkladů. Algoritmy, metody, jejich kombinace, příprava dat, zpracování a interpretace výsledků většinou bývají dosti složité a vyžadují výkonné počítače (rychlý procesor, lépe více procesorů, a rozsáhlou paměť).
Klasickým příkladem dolování znalosti je tzv. problém počasí a hry v tenis: Sledují se lidé, zda jdou či nejdou hrát tenis v závislosti na některých atributech popisujících počasí. Naměřené hodnoty a jejich kombinace nepokrývají veškeré možnosti. Idea je v zobecnění disponibilní informace tak, aby bylo možno předvídat, zda se půjde hrát či ne i pro kombinace hodnot, které během učení nebyly známy, a predikce má být co nejlepší, s minimální chybou. Disponibilní informaci ukazuje následující tabulka:
předpověď teplota vlhkost větrno hrát slunečno horko vysoká ne ne slunečno horko vysoká ne zataženo horko vysoká ne deštivo příjemně vysoká ne deštivo chladno normální ne deštivo chladno normální ne zataženo chladno normální slunečno příjemně vysoká ne ne slunečno chladno normální ne deštivo příjemně normální ne slunečno příjemně normální zataženo příjemně vysoká zataženo horko normální ne deštivo příjemně vysoká ne Počet možných kombinací hodnot je 36, známo je 14. zataženo, horko, normální, : hrát =? hrát = ne?
atribut teplota je pro trénovací data irelevantní vždy, když předpověď byla zataženo, se hrálo, takže na ostatních atributech nezáleželo zataženo, horko, normální, : hrát =? hrát = ne?
předpověď teplota vlhkost větrno hrát slunečno horko vysoká ne ne slunečno horko vysoká ne zataženo horko vysoká ne deštivo příjemně vysoká ne deštivo chladno? ne deštivo chladno normální ne zataženo chladno normální slunečno příjemně vysoká ne ne slunečno chladno normální ne deštivo příjemně normální ne slunečno příjemně normální zataženo příjemně vysoká zataženo horko normální ne deštivo příjemně vysoká ne Chybějící hodnota atributu vlhkost (původně = = normální).
Celkový počet instancí je opět 14: 3.00 2.00 7.54 1.46 14.00 neznámá (chybějící) hodnota nahrazena dle výskytu hodnot v jiných instancích: (7.54/1.0): 7.54 zařazeno do třídy správně, 1 instance chybně strom je nyní odlišný: normální vysoká neúplná instance náleží částečně do více tříd
Instance s chybějícími hodnotami přinášejí méně informace do zpracování, takže výsledek klasifikace má obecně vyšší chybovost. Při dostatečném množství trénovacích instancí lze ty neúplné ze zpracování vyřadit; jinak je nutno chybějící hodnoty nahradit pomocí např. pravděpodobnostního výpočtu. Lze také zavést umělou hodnotu missing a strom pak ukáže, kam vede větev při výskytu chybějící hodnoty určitého atributu, což může napovědět, do jaké míry chybějící hodnoty ovlivňují výsledek. Někdy lze atribut s chybějícími hodnotami vyřadit jako irelevantní i za cenu zvýšení chyby klasifikace.
Entropie a rozhodovací stromy Odpovědi na dotazy v testovacích uzlech by měly dát co nejvíce informace, tj. odpovědi by měly být co nejužitečnější vzhledem k řešené úloze (např. rozdělení heterogenní množiny instancí na co nejhomogennější podmnožiny pro dosažení optimální klasifikace). Jedním z problémů při konstrukci rozhodovacího stromu je stvení vhodných dotazů. K dobrým a praktickým možnostem při hledání dotazů patří využití entropie. Entropie je definována v teorii informace a lze ji využít k mnoha účelům, nejen pro rozhodovací stromy.
Cílem klasifikace je přiřazení správné vlastnosti (tj. třídy) pro du instanci (vzorek). Pro trénovací data jsou jejich vlastnosti známy, takže jsou známy odpovědi na možné dotazy kvalitní dotazy mají odpovědi, které pro trénovací data vyvolají co nejmenší překvapení. Mírou překvapení je zde entropie, která ji měří pomocí pravděpodobnosti. S růstem pravděpodobnosti výskytu jevu klesá překvapení nad jeho výskytem, tj. je-li pravděpodobnost p = 1.0 pak lze daný jev očekávat zcela jistě. Podobně je tomu naopak pro p = 0.0, kdy také nevzniká překvapení. Překvapení (surprise) dvou nezávislých jevů s pravděpodobnostmi p a q: S(pq) = S(p) + S(q).
Teorie informace, jejíž základy položil zejména Shannon [Shannon C. E., Weaver W. (1949) The Mathematical Theory of Communication. Univ. of Illinois Press], definuje funkci typu S(p) vztahem S(p) = -log b p kde b je nějaký základ. Vyjadřujeme-li míru informace v jednotkách bit (binary digit), pak b = 2 (odpověď je buď nebo ne, např. zařazení instance do určité třídy). Entropie H(X) pro náhodnou proměnnou X je definována: H X = n p n S p n = n p n log 2 p n
H X = n p n log 2 p n 0, 0 p 1 Proměnná X má možné hodnoty x n s pravděpodobnostmi p n (kde n = 1, 2, 3,...). Záporné znaménko poskytuje kladné hodnoty entropie: logaritmy z hodnot pravděpodobností jsou záporné. Průběh funkce entropie ukazuje graf. Odpověď na dobrý dotaz je co nejblíže 0 nebo 1. Špatný dotaz bude zařazovat instance víceméně náhodně. H maximální entropie 0 1 0.5 p
H(p) 1 0.9 Entropie H(p) 0.8 H(p) = -p log 2 p - (1-p) log 2 (1-p) 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 0.8 0.9 1 p
Při konstrukci rozhodovacího stromu se tedy hledají testy v uzlech tak, aby odpověď na test poskytla co nevíce informace, tj. aby byla co nejmenší entropie. Počáteční heterogenní množina trénovacích instancí je na základě odpovědí na test rozdělena na homogennější podmnožiny, snižuje se neuspořádst ( chaos ). Principem je výběr atributu, na jehož hodnoty se uzel ptá. Je nutno vyzkoušet všechny uvažované atributy, tj. zjistit, jakou poskytují entropii, a pak vybrat atribut s nejnižší entropií. Vznikne nová úroveň stromu (kořenem je počáteční množina trénovacích instancí), kterou lze rekursivně dále testovat. Konec generování stromu je dán nemožností dosažení nižší entropie (listy).
Příklad vytvoření rozhodovacího stromu pro výše uvedený problém počasí a hry v tenis: předpověď teplota vlhkost větrno hrát slunečno horko vysoká ne ne slunečno horko vysoká ne zataženo horko vysoká ne deštivo příjemně vysoká ne deštivo chladno normální ne deštivo chladno normální ne zataženo chladno normální slunečno příjemně vysoká ne ne slunečno chladno normální ne deštivo příjemně normální ne slunečno příjemně normální zataženo příjemně vysoká zataženo horko normální ne deštivo příjemně vysoká ne
Který atribut (předpověď, teplota, vlhkost, větrno) dá jako odpověď nejlepší rozdělení do homogennějších podmnožin? Postupně se spočítají entropie; např. pro předpověď: předpověď =? 9x se hrálo, 5x se nehrálo (9+5=14 trénovacích instancí). Pravděpodobnosti a posteriori pro jsou: slunečno ne ne ne zataženo deštivo ne ne 2/9 + 4/9 + 3/9 = 1.0, resp. pro ne: 3/5 + 0/5 + 2/5 = 1.0. Entropie je mírou neuspořádsti množiny (dokonalá uspořádst je dána hodnotou entropie = 1 nebo 0). Protože test zde rozdělí množinu na 3 podmnožiny, které obecně mohou mít různé neuspořádsti, tak se ství průměrná neuspořádst na konci větví vedoucích z testovacího uzlu. Neuspořádst množiny každé větve se váhuje rozměrem množiny relativně vzhledem k celkovému rozměru množin ve všech větvích. Váha je tedy počet příkladů n b ve větvi b ku celkovému počtu příkladů n t ve všech větvích: n b / n t.
Průměrná neuspořádst: H avg = b n b n t neuspořádst větveb H avg = [ b n b n t ] [ c n bc n b log 2 n bc n b ] kde n b n t... počet příkladů ve větvi b... celkový počet příkladů ve všech větvích n bc... celkový počet příkladů ve větvi b třídy c (Vzorec není posvátný, v praxi se osvědčil; lze samozřejmě použít i jiný vhodný, dává-li dobré výsledky.)
Zpátky k příkladu hrát tenis či ne? : slunečno předpověď =? Entropie pro předpověď: H avg = [- 5/14 (2/9 log 2 2/9 + 3/5 log 2 3/5)] + [- 4/14 (4/9 log 2 4/9 + 0/5 log 2 0/5)] + [- 5/14 (3/9 log 2 3/9 + 2/5 log 2 2/5)] = 0.8592 deštivo zataženo (Pozn.: 0 log b 0 = 0 [def.]; log b x = log 10 x / log 10 b) ne ne ne ne ne Z výsledku je vidět, že zvolený test předpověď snížil do určité míry původní neuspořádst (jedna ze vzniklých podmnožin, zataženo, je již zcela homogenní a není nutno ji už dále nijak dělit; podmnožiny ve větvi slunečno a deštivo jsou stále ještě heterogenní, takže se dále bude hledat možnost jejich rozdělení). Otázka nyní je, zda jiný atribut nemůže dát ještě lepší výsledek, bude-li použit jako test.
Další tři atributy včetně větvení a hodnot: teplota =? vlhkost =? větrno =? horko vysoká ne normální chladno příjemně ne ne ne ne ne ne ne ne ne ne ne ne ne ne ne
Spojité a diskrétní atributy Atributy popisující objekty mají velmi často číselný charakter (nejen binární či nominální). Obecně mohou být numerické atributy definovány na spojité reálné ose. Některé algoritmy jsou schopny zcela přirozeně pracovat i s číselnými atributy, část z nich pouze s numerickými hodnotami (např. metoda nejbližšího souseda k NN využívající Eukleidovy vzdálenosti, nebo algoritmy založené na regresních technikách, např. regresní strom M5P, kde i klasifikační třída je numerická). V takových případech je nutno převést data buď ze spojitého universa na diskrétní, resp. naopak.
Popisovaný typ rozhodovacích stromů vychází z původního algoritmu pro indukci rozhodovacího stromu ID3 (Interactive Dichotomizer No. 3), který umí zpracovat pouze nominální atributy. [Vysoká praktická úspěšnost aplikace ID3 vedla k rozšíření na atributy numerické. Nejznámější je c4.5 Rosse Quinlana, včetně následné komerční verze c5/see5 *) pro operační systémy Unix/Linux/Windows]. Princip rozšíření je v tzv. diskretizaci. Diskretizaci lze provést mnoha různými metodami, včetně zcela automatické (unsupervised) nebo řízené (supervised). Zpět k problému počasí a hry v tenis, tentokrát s atributy teplota avlhkost numerickými: *) Demonstrační, plně funkční verzi c5/see5 s omezením na počet příkladů lze získat zdarma na URL (2007): http://rulequest.com
předpověď teplota vlhkost větrno hrát 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. slunečno 85 85 ne ne slunečno 80 90 ne zataženo 83 86 ne deštivo 70 96 ne deštivo 68 80 ne deštivo 65 70 ne zataženo 64 65 slunečno 72 95 ne ne slunečno 69 70 ne deštivo 75 80 ne slunečno 75 70 zataženo 72 90 zataženo 81 75 ne deštivo 71 91 ne Diskretizace musí rozdělit číselný interval, považovaný za spojitý, na soubor podintervalů. Každý vzniklý podinterval pak hraje roli nominální hodnoty. Pozn.: Teplota je ve stupních Farenheita: 32 F... 212 F odpovídá 0 C... 100 C. Vlhkost je relativní v %.
teplota: 85, 80, 83, 70, 68, 65, 64, 72, 69, 75, 75, 72, 81, 71 vlhkost: 85, 90, 86, 96, 80, 70, 65, 95, 70, 80, 70, 90, 75, 91 Některé z možných a používaných metod diskretizace: a) Rozdělení na určitý počet podintervalů stejné délky (nevýhoda může být ve velmi různém počtu hodnot v každém intervalu). b) Rozdělení na podintervaly, kde každý obsahuje (přibližně) stejný počet hodnot (v praxi se osvědčuje jako heuristika se pro stvení počtu intervalů často používá druhá odmocnina z celkového počtu hodnot daného atributu; intervaly ovšem mohou mít velmi různou délku). c) Rozdělení na podintervaly pomocí entropie, kde každý podinterval obsahuje (pokud možno) pouze hodnoty patřící do jediné třídy (diskretizace řízená tréninkovými daty).
a) b) c)
První krok diskretizace spočívá v seřazení hodnot: teplota: 64, 65, 68, 69, 70, 71, 72, 72, 75, 75, 80, 81, 83, 85 chladno příjemně horko vlhkost: 65, 70, 70, 70, 75, 80, 80, 85, 86, 90, 90, 91, 95, 96 normální vysoká Tento krok bývá z hlediska výpočetní složitosti obvykle nejnáročnější, ale jednou setříděné hodnoty se využijí i pro rekursivní generování podstromů na dalších úrovních stromu, takže stačí setřídit pouze jedenkrát. V dalším kroku se jednou z možných metod hledají dělící body mezi hodnotami, tj. hranice podintervalů.
Původní nominální a jim odpovídající numerická data: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. teplota vlhkost horko 85 vysoká 85 horko 80 vysoká 90 horko 83 vysoká 86 příjemně 70 vysoká 96 chladno 68 normální 80 chladno 65 normální 70 chladno 64 normální 65 příjemně 72 vysoká 95 chladno 69 normální 70 příjemně 75 normální 80 příjemně 75 normální 70 příjemně 72 vysoká 90 horko 81 normální 75 příjemně 71 vysoká 91 Postupně se musí (do značné míry hrubou silou ) zkoušet, která hranice mezi intervaly dá nejmenší entropii. Proto jsou úlohy s numerickými daty výpočetně složitější než úlohy s daty nominálními. V realitě však jsou numerické atributy poměrně běžné, obvykle doprovázeny atributy binárními i nominálními (smíšená reprezentace).
Výsledek entropické diskretizace atributu teplota: 64 65 68 69 70 71 72 75 80 81 83 85 ne ne ne/ / ne ne / Je teoreticky dokázáno, že metoda minimalizace entropie při diskretizaci nikdy neumístí hranici mezi intervaly tak, aby byly odděleny dvě instance téže třídy (pozn.: zde mezi 72 a 75 je hranice, která odděluje /ne od /, tj. nikoliv dvě instance téže třídy). To vede k urychlení výpočtu: je třeba testovat hranice pouze mezi instancemi z různých tříd (takže ne 68/69, 69/70, apod.).
Další možné diskretizační metody: Nikoliv shora dolů, jak ukázáno, ale naopak zdola nahoru, tj. napřed každá jednotlivá instance je oddělena a pak se hledá, zda ji lze spojit se sousední. Počítání chyb, ke kterým dojde při predikci pro různé diskretizace (hrozí degenerace, že každá instance bude prohlášena za interval; je nutno předem omezit počet intervalů). Metoda hrubou silou vyzkoušet všechny možnosti je exponenciálně náročná (počet intervalů k je v exponentu). Dynamické programování (způsob optimalizace) rozdělí N instancí do k intervalů v čase úměrném kn 2.
Převod diskrétních atributů na numerické: Některé algoritmy vyžadují pouze numerické hodnoty, takže je zapotřebí opačný převod. Atributy s nominálními hodnotami předpokládají různost dvou nominálních hodnot jako nenulovou vzdálenost a stejnost jako vzdálenost nulovou. Je-li k různých nominálních hodnot, jsou uměle nahrazeny binárními hodnotami 0/1, např. atribut barva může nabývat tří hodnot (modrá, zelená, červená), takže tento atribut je převeden na tři binární atributy: modrý, zelený, červený, a modrý objekt pak má odpovídající hodnoty nových umělých atributů 1, 0, 0. Pak lze počítat např. vzdálenosti mezi objekty, kde nulová vzdálenost znamená identitu (dva stejné objekty), apod. Seřaditelné nominální hodnoty lze nahradit celými čísly.
Trénování a testování Pro odhad chyby klasifikátoru na budoucích datech, která nebyla k dispozici během trénování, je nutno klasifikátor otestovat. K tomu se buď použijí nějak vyčleněná data, která se tréninku nezúčastní (testovací data), nebo se dá využít části tréninkových dat tím, že se použijí jako testovací, což ale vede ke snížení počtu trénovacích příkladů a dále k vyřazení určitých příkladů; negativním důsledkem může být zhoršený trénink a nižší kvalita klasifikátoru. Existují metody, kdy lze použít pro trénink všechny příklady a zároveň klasifikátor týmiž daty otestovat. Rozšířená (ale ne jediná) je např. metoda krosvalidace.
Krosvalidace (cross-validation) Tato metoda rozdělí náhodným výběrem data na k pokud možno stejně velkých částí, např. na 10 podmnožin (k může záviset na celkovém množství trénovacích instancí). Pak proběhne 10 tréninků tak, že v každém z nich se použije 9 podmnožin jako trénovací a 1 jako testovací. Každý trénink používá pro testování různou z podmnožin, takže postupně všechna data jsou využita na trénování a testování. Každé testování zjistí chybu klasifikátoru, a výsledná očekávaná chyba je průměrem. Tato chyba je tzv. pesimistická, protože byla odhadnuta na menším počtu trénovacích příkladů (zde např. na 90 %). Výsledný klasifikátor se pak natrénuje pomocí všech příkladů.
Počet podmnožin může být i jiný, 10 je prakticky osvědčená heuristika. Extrémem je rozdělení trénovací množiny na počet podmnožin odpovídající počtu trénovacích příkladů n. Pak se jedná o tzv. krosvalidaci 1-z-n, která má výhodu v trénování téměř všemi instancemi v každém z n trénovacích kroků. Nevýhodou je úplná ztráta rozložení hodnot [které je při obyčejné krosvalidaci (náhodným výběrem) do určité míry v podmnožinách zachováno]. Pro odhad chyby lze také použít obě metody a výsledky porovnat jsou-li např. chyby všech jednotlivých kroků velmi podobné a navíc jsou podobné i mezi krosvalidací obyčejnou a 1-z-n, pak je systém datově robustní.
Protože výběr prvků do podmnožin se provádí náhodně, může být i výsledek náhodně velmi špatný nebo náhodně příliš dobrý. Generátor (pseudo)náhodných čísel potřebuje na začátek tzv. násadu, z níž odvozuje posloupnost generovaných čísel s rovnoměrným rozložením. Takových posloupností lze vytvořit mnoho a předem není jasné, která povede k jakému výsledku. Proto je velmi vhodné celý proces krosvalidace zopakovat vícekrát, pokaždé s jinak provedeným náhodným výběrem. Strojové učení má jako empirický standard tzv. desetinásobně opakovu krosvalidaci s dělením na 10 částí (10-times 10-fold crossvalidation). Lze ovšem použít i jiné hodnoty odpověď dají experimenty a jejich pečlivé vyhodnocení.
Bootstrap Bootstrap je statistická metoda založená na výběru s vracením. Znamená to, že tímto výběrem vzniklá sada příkladů může obsahovat některé příklady vícekrát (takže nelze hovořit o množině). Myšlenka vychází z toho, že když některé příklady jsou náhodně vybrány vícekrát, jiné nejsou vybrány nikdy a právě tyto nevybrané příklady pak vytvoří testovací množinu.
Data, mající n příkladů, jsou podrobena n výběrům s vracením. Šance, že nějaký příklad nebude vybrán v žádném z n pokusů (výběr musí být náhodný), je založena na tom, že pravděpodobnost být vybrán je 1/n a nebýt vybrán 1 1/n. Opakuje-li se výběr n-krát, pak vynásobením pravděpodobností vznikne pravděpodobnostní odhad, kolikrát nedojde k výběru:. (1 1/n) n = e -1 = 0.3678794412... (pro n ), kde e je základ přirozených logaritmů. Např. pro n = 1000 pokusů je (1 1/1000) 1000. = 0.3676954248... = 36.77 %.
Odhad stvuje, že v testovací množině bude cca 36.8 % příkladů, zatímco v trénovací množině zůstane 63.2 %, takže originální data jsou statisticky oprávněně rozdělena přibližně na 2/3 trénovacích a 1/3 testovacích. Někdy se této metodě výběru říká 0.632 bootstrap. Samozřejmě, že ani trénovací ani testovací množina pak neobsahují opakované příklady.
Vzhledem k náhodnosti výběru mohou být data rozdělena i příliš dobře nebo příliš špatně, takže testovací část vůči trénovací může poskytnout neoprávněně malou či velkou chybu [ale míra (ne)oprávněnosti není známá, pouze se statististicky odhaduje]. Aby bylo možno se vyhnout výsledkům ovlivněných náhodností negativně, je vhodné trénování a testování provést opakovaně několikát, pokaždé s novým náhodným rozdělením výchozí datové množiny. Je nutno dát pozor na to, aby generátor náhodných čísel, používaných k výběru, vždy vyprodukoval jinou posloupnost hodnot s rovnoměrným rozdělením. To zajišťuje tzv. násada (seed).
Každé testování pak dá obecně více či méně odlišnou odhadnutou budoucí chybu a výsledná očekávaná chyba se spočítá jako průměr (platí i pro krosvalidaci). Rozptyl průměrně očekávané chyby poskytuje informaci o stabilitě algoritmu vůči složení dat. Pro dosažení dobré stability (robustnosti algoritmu) je ideální co nejmenší rozptyl. To především ovlivňují samotná data, ale různé algoritmy mohou dát různé výsledky i z tohoto hlediska, přestože průměrná chyba může být téměř stejná. Výsledky testování jsou tedy dalším hlediskem pro výběr algoritmu i z hlediska robustnosti.
Prořezávání (pruning) Znalost je zobecněná informace, a strom je jednou z možných reprezentací znalosti. Proto by měl být dostatečně obecný, tj. ne být dokonalý na tréninkových datech velmi často může velice chybovat na testovacích datech, i když na tréninkových dosahuje nízkých chyb. Ukazuje se, že k lepším výsledkům na testovacích datech přispívá tzv. prořezávání po celkovém vytvoření stromu. Strom se nenechá tak rozkošatět. Jednou z metod je tzv. náhrada podstromu, kdy podstrom je nahrazen listem. Tato operace zvýší chybu na trénovacích datech, ale pro testovací data je chyba nižší než před náhradou.
Příčina je zřejmá např. z extrémního případu, kdy mohou tréninkem vzniknout listy obsahující jedinou instanci; to je špatná generalizace, protože ideální je, aby každý list pokrýval co nejvíce příkladů. Obsahují-li tréninkové příklady šum, pak jednoprvkové množiny v listech mohou vést k chybné klasifikaci řízené spíše šumem než zobecněním souboru hodnot relevantních atributů. Takové přetrénování hrozí nejen při entropické tvorbě rozhodovacích stromů, ale i pro mnoho jiných algoritmů. U stromů lze zabránit přetrénování prořezáváním.
Existují dva postupy prořezávání: Shora dolů (pre-pruning) Zdola nahoru (post-pruning) Pre-pruning zastaví růst větve, když začne poskytovat nespolehlivou informaci. Post-pruning nechá strom zcela vyrůst a rozkošatět, a pak zpět směrem od listů ruší nespolehlivé části. V praxi se dává přednost metodě post-pruning (zdola nahoru), protože pre-pruning mívá tendenci zastavit růst větve příliš brzo. Pre-pruning je ale výpočetně rychlejší metoda než post-pruning.
Pre-pruning využívá test statistického významu propojení atributu s klasifikační třídou pro konkrétní uzel. Pro testování se nejčastěji používá χ 2 (chí-kvadrát), což je test vycházející z frekvencí hodnot, zde vzhledem ke třídě. Předčasné zastavení růstu lze demonstrovat na klasickém případu parity (neboli XOR-problému): id x 1 x 2 c 1 0 0 0 2 0 1 1 3 1 0 1 4 1 1 0 Ani jeden z individuálních atributů x 1 a x 2 nevykazuje žádný významný vztah ke třídě c. Struktura je vidět pouze na zcela vyrostlém stromě, avšak pre-pruning a χ 2 zastaví růst hned v kořeni zcela degenerovaný strom. Přesto ale lze pro XOR korektní strom vytvořit.
XOR-problém: id x 1 x 2 c 1 0 0 0 2 0 1 1 3 1 0 1 4 1 1 0 Obrázek ukazuje dvě zcela správná řešení. XOR je pro řadu algoritmů obtížný typ problému. V praxi se však vyskytuje poměrně zřídka. XOR je typická ukázka případu, kdy jednotlivé atributy nemají prediktivní význam, ale jejich kombinace. 0 x 1 1 0 x 2 1 x 2 x 2 0 1 0 1 0 1 1 0 x 1 x 1 0 1 0 1 0 1 1 0
Post-pruning vychází z následujícího principu: zcela homogenní listy vzniklé ze společného uzlu se zpětně uměle sloučí s rodičovským uzlem a vytvoří se tak list, který už není homogenní (má entropii > 0). Tím se zvýší chyba stromu na trénovacích příkladech, ale ta není rozhodující. Zato však může lépe generalizovat, což je podstatné pro klasifikaci testovacích datových příkladů. Úvaha platí i pro listy pokrývající více příkladů, a nemusí být homogenní. Zda nahradit či nenahradit podstrom listem, na to odpoví odhad chyby na testovacích datech (vždy po náhradě je nutno překlasifikovat příklady použité pro vytvoření neprořezaného stromu). Je-li po prořezání chyba na testovacích datech nižší, pak je doporučena náhrada listem.
Následující příklad demonstruje post-pruning na reálných (veřejně přístupných) vzorcích z vyjednávání o kolektivních smlouvách a podmínkách v kanadském průmyslu (listopad 1998). Data jsou popsána 57 příklady a 16 atributy a jsou k dispozici (spolu s mnoha dalšími z nejrůznějších oborů) na URL (rok 2007): http://www.ics.uci.edu/~mlearn/mlrepository.html Následující obrázek ukazuje vygenerovaný strom (ne úplný), v němž lze postupně zkoušet náhradu podstromů listy. Každý pokus vyžaduje po stvení místa prořezání zjistit chybu na trénovacích i testovacích datech. Zvýšení trénovací chyby se snížením testovací chyby (ve srovnání se stromem bez náhrady podstromu) určí, že náhrada listem je správná.
Post-pruning pracuje tak, že napřed nechá strom zcela vyrůst, čímž jsou zachyceny i kombinace mezi atributy. Poté hledá, zda lze nějaké podstromy nahradit listem. bad bad
Dva podstromy (viz předchozí obrázek) byly postupně nahrazeny listem bad. Zeleně ohraničený podstrom listem bad, a pak modře ohraničený podstrom rovněž listem bad. Strom je značně zjednodušen, lépe generalizuje na testovacích datech (na trénovacích má o něco vyšší chybu).
Další obrázky ukazují výsledky dosažené algoritmem J48 (c4.8) systému WEKA (labor-negotiation data jsou součástí WEKA jako jeden z příkladů, labor.arff). Lze srovnat různé výsledky dosažené nad týmiž daty pro různé koeficienty CF (0.1, 0.25, 0.5,1.0), kde menší hodnota znamená větší prořezání stromu. Sleduje-li se chyba testování pomocí krosvalidace 10 (implicitně nabízená hodnota), tak lze pozorovat, že testovací chyba klesá až do CF = 0.5 (a platí to i pro chybu trénovací). Výsledný strom by měl být vybrán tak, aby dosahoval minimální předpovězené testovací chyby a aby nebyl příliš prořezán. Lepší je mít pro testování oddělená data, krosvalidace zde snižuje počet trénovacích.
CF = 0.1 CF = 0.25 (implicitní hodnota daná statistikou) Faktor jistoty (confidence factor, CF ) je parametr ovlivňující prořezávání. Nižší hodnota znamená větší prořezávání a naopak. Parametr zadává uživatel, implicitně platí CF = 0.25.
CF = 0.5
CF = 1.0 Maximální jistota poskytované informace vede k neprořezanému stromu. Může i nemusí snižovat generalizaci závisí na konkrétní aplikaci.
Přehled rozložení hodnot pro atributy dat labor-negotiation
Výše popisovaný problém XOR dává při použití J48/c4.8 degenerovaný strom pro každou hodnotu CF (první z následujících tří obrázků). Modernější (avšak komerční) verze c5/see5 pro vhodné nastavení parametrů vygeneruje správný strom. Je nutno zadat minimální pruning (pro c5 je to hodnota 99 % což odpovídá 1.0 či 0.99 pro J48/c4.8). Vzhledem k aplikaci je nutno povolit, aby v listech mohl být i pouze jeden příklad (implicitně je nastaveno minimální množství instancí pokrytých listem na 2). Implicitní hodnoty c5/see5 zde dávají špatný výsledek.
Zdegenerovaný strom J48 (c4.8) pro XOR problém list (kořen) pokrývá všechny 4 případy, z toho 2 chybně: 4/2, výsledná chyba je 50 %
Komerční verze c4.5/c4.8 pod názvem c5/see5 může dát správný výsledek, má-li nastaveny správně parametry: Je nutno omezit pruning a povolit jedinou instanci na list (dáno konkrétním problémem).
Implicitní parametry dávají ovšem chybný výsledek: