Materiál k cvičení DBM2 týden #2, sezona 2023/2024

Motivace

O předpovídání událostí, posloupností, trendů apod. se lidstvo snaží od nepaměti. Historicky to bystrým pomáhalo přežít (předpověď úrody, počasí), manipulovat s neznalým obyvatelstvem (st. Egypt - poradce předpoví zatmění měsíce, faraon ji využije k posílení své pozice), vést efektivně válku (špionáž, odhadování pohybu nepřátel, odhad výsledku bitvy). Většinou bylo potřeba "uvařit hodně z mála surovin", protože sběr dat byl obtížný.

S vývojem technologií začal být sběr a sdílení (telegram, telefon, ...) různých dat jednodušší (př. počasí). V současnosti se nacházíme v druhém extrému, kdy jsme zahaleni daty. Problémem ale není nedostatek technologií pro jejich zpracování. Hlavními otázkami jsou: jaké funkce použít, jaká data zvolit, co nám to říká a opravdu nám to říká to, co si myslíme? Přidanou hodnotu je tedy potřeba najít zde.

Data Mining je buzzword pro různé formy analýz rozsáhlých dat, zpracování informace či počítačové podpory při rozhodování. Aplikace jsou v mnohých oblastech, kde se pohybují větší objemy peněz. V podnicích jako BI, na finančních trzích jako predikce pohybu cen, pojišťovnictví při odhadu rizika, medicína...

Jsou i oblasti, které se zdály(/zdají) nadějně, ale prvotní nadšení vystřídalo zklamání startupů z nemožnosti generovat zisk jako např. StatsZone †2017 svého času sbírající detailní data o fotbalových zápasech, nebo česká RTSmunity †2021, která se snažila analyzovat profesionální hraní počítačových her a poskytovala služby sázkovým kancelářím

Weka

Weka je nástroj pro data mining napsaný v Java pod licencí GNU General Public License. Software je vyvíjen na University of Waikato na Novém Zélandu. Kromě použití nativního GUI, lze algoritmy nástroje volat přes API z vlastního programu.

Úloha klasifikace

Jedním z typů řešených problémů ve strojovém učení je určování, do jaké třídy pozorovaný exemplář zapadá. Typickým případem je otázka, zda příchozí mail je spam (třídy spam/nespam). Obecně je vytvořen model, který na vstupu přijme vektor atributů a na jeho základě rozhodne o výsledné třídě. Atributy mohou být číselné (např. věk) nebo nominální (např. pohlaví). Na výstupu je očekávána nominální hodnota.

Rozlišení kosatců

Autoři Weka nabízí ke stažení mimo jiné 37 klasifikačních datasetů ve formátu arff, který používá Weka. Dále je v textu pracováno se souborem UCI/iris.arff. Tento dataset obsahuje 150 pozorování kosatců (iris) a dělí je na 3 druhy. Sledovanými atributy jsou šířka a délka kališních lístků (sepal) a okvětních lístků (petal). Úkolem bude zkonstruovat model, který na základě těchto 4 atributů rozhodne, o jaký kosatec se jedná.

Prozkoumání dat

Po spuštění Weka vyberte modul Explorer a přes Open file na záložce Preprocess otevřete datový soubor. Postupným prozkoumáním jednotlivých atributů lze v (4) vidět, že v datasetu není problém s chybějícími daty. Hodnoty Distinct a Unique udávají, kolik různých hodnot atribut nabývá a kolikrát se v atributu vyskytuje hodnota, která je pouze v jednom pozorování. Typ numeric říká, že se jedná o číselnou hodnotu; nominal je hodnota kategorická. Správné typování atributů je nezbytné pro korektní běh algoritmů.

01preprocesspng Fig – Preprocess záložka v exploreru. 1) fitrace dat; 2) počet záznamů a atributů v datasetu; 3) jednotlivé atributy; 4) statistický popis vybraného atributu; 5) histogram vybraného atributu, barevně vyznačena target class; 6) prohlížení datasetu

Výběrem atributů v (3) a přepnutím na nominální referenční atribut v (5) lze graficky na histogramech sledovat, zda-li není mezi atributy patrná závislost. Například u petallength jsou výrazně odlišné hodnoty pro iris-setosa. Zajímavou vlastností datasetu je rovnoměrnost výskytů jednotlivých tříd a podobný obor hodnot numerických atributů. Tyto vlastnosti mohou hrát roli u některých algoritmů.

V dataset vieweru (6) jsou vidět všechny záznamy a lze zde nastavit, který z atributů je výstupní/target (pravé tlačítko na záhlaví sloupce Attribute as class), tj. jaký atribut má model předpovídat na základě ostatních. Název target attributu je vyznačen tučným písmem.


Na záložce Visualize je matice korelačních grafů mezi atributy. Iris-setosa je na všech grafech výrazně oddělaná od zbylých 2 typů, což naznačuje, že i základní algoritmy by nemusely mít problém tento druh rozlišit.

01visualizepng Fig – Matice korelačních grafů. Iris-setosa (modrá) se zdá být výrazně odlišná od zbylých typů ve sledovaných atributech.

Vyzkoušení modelů

Na záložce Classify je možnost vyzkoušet nad daty různé klasifikační algoritmy. Kliknutím na Choose (1) se dostaneme do stromové struktury implementovaných algoritmů. Některé jsou zašedlé, protože vyžadují jiný typ dat. Kliknutím do řádky s algoritmem lze změnit jeho parametry.

V levé části je nastavení verifikace modelu (2). Klasifikátor se nejprve natrénuje na určité množině dat z datasetu (trénovací množina) a následně se ověří jeho síla na datech, které neznal v době trénování. Možnost "Use training set" říká, že k natrénování chceme použít všechna data, což se hodí při finalizaci modelu, když ho již není potřeba testovat. "Supplied test set" znamená, že jako ověřovací data použije data z jiného souboru. "Cross-validation" je způsob rozdělení vstupních dat na část k trénování a část k ověření v poměru (folds-1) : 1. Validace se provede vícekrát tak, aby každý záznam byl v ověřovací množině právě jednou. Percentage split pouze rozdělí dataset a provede jedenkrát validaci.

Pod testováním je výběr target atributu a možnost spustit trénování a ověřování modelu. Po skončení se objeví výsledek v (3). Rozkliknutím záznamu lze získat podrobnosti o daném modelu. Zajímavé jsou hlavně statistiky úspěšnosti (4) a confusion matrix (5). Matice udává, jaká třída byla predikována, když ve skutečnosti se jednalo o třídu X. V případě na obrázku byla vždy predikována Iris-setosa.

01classifypng Fig – Záložka klasifikace. 1) výběr algoritmu a jeho parametrů; 2) způsob testování; 3) seznam výsledků testovaných modelů; 4) úspěšnost modelu; 5) confusion matrix

Při prvním spuštění je přednastaven klasifikátor ZeroR, který je nejtriviálnější z nabízených algoritmů - v případě klasifikace vždy predikuje třídu, která se v trénovacích datech vyskytuje nejčastěji. Tento model je užitečný převážně jako baseline při porovnávání zkoušených modelů.

Algoritmus lazy.IBk se rozhoduje pomocí KNN nejbližších bodů z trénovací množiny k bodu na vstupu. Pokud je parametr KNN větší než 1, pak je rozhodováno většinovým hlasováním, tzn. je predikována třída, které náleží nejvíce ze sousedních bodů. Z popisu je zřejmé, že algoritmus spoléhá na to, že prostory, ve kterých se vyskytují zástupci jednotlivých tříd, se příliš nepřekrývají.

V sekci trees stojí za zmínku algoritmus J48, REPTree a RandomForest.

Porovnání modelů

Ke srovnání více modelů pro daný problém existuje aplikace Experimenter přístupná z hlavní obrazovky Weka. Postup je znázorněn na obrázku. U typu experimentu je důležité zvolit, zda se jedná o klasifikaci (tento případ), nebo regresi (výstupem není predikce třídy, ale konkrétní hodnoty).

Po skončení experimentu se na kartě Analyse vybere tlačítkem Experiment, že chceme rozebrat údaje z proběhlého experimentu (alternativně lze z uloženého souboru). V levé části je předvybrán statistický párový T test s 0.05 hladinou významnosti. Srovnáváme pomocí procenta správných predikcí. Lze vybrat bázi, vůči které budeme sledovat výkon modelů. Základním baseline modelem bývá ZeroR. Po provedení testu vidíme, že všechny varianty jsou statisticky významně lepší než ZeroR (symbol 'v' vedle procentuální úspěšnosti). Nejlepší výsledek se zdá být u IBk. Po změně baseline na IBk je ale vidět, že IBk je statisticky významně lepší pouze proti ZeroR (symbol '*'). Podobným způsobem můžeme srovnávat modely s různou konfigurací a zkusit tak najít nastavení modelu, které by nejlépe popsalo situaci. (Pozor ale na přetrénování, overfitting)

01experimentpng Fig – Nastavení experimentu. 1) vytvoření nového experimentu; 2) zvolení typu experimentu; 3) seznam datasetů; 4) seznam modelů; 5) spuštění experimentu; 6) zobrazení výsledků experimentu

Uložení modelu

Po nalezení ideální konfigurace modelu je možné natrénovaný model uložit. V Explorer sekci, záložce Classify, zvolíme požadovaný algoritmus a jeho parametry. V test options ale volíme trénování na celém datasetu, protože již není nutné validovat funkčnost modelu; naopak je chtěné, aby byl natrénován na co nejvíce vzorcích. Po spuštění lze pravým klikem na výsledek vyvolat menu, v němž jedna z možností je save model. Pokud v budoucnu bude potřeba uloženým modelem vytvořit predikci, stačí z menu vybrat load model, v nastavení test options zvolit "Supplied test set" a odkázat na soubor se vstupními daty. V tomto datasetu by měl místo hodnot ve sloupci klasifikace být symbol '?' značící, že hodnota je neznámá. V "More options" je potřeba zvolit formu, jakou mají být predikce zobrazeny.