Data mining – strojové dobývání znalostí z dat

Oblast data miningu, neboli získávání znalostí z dat, je důležitou součástí informatiky. Objem dat, která jsou ukládána v počítačových systémech, neustále roste a spolu s tím roste i význam data miningu. Jeho cílem je nalezení nějaké informace, která je v datech obsažena. Říkáme, že vytváříme model dat. Takový model představuje potom jednodušší a mnohem menší reprezentaci informace a můžeme ho použít i k získání znalostí o datech, která jsme při tvorbě modelu nepoužili. Vlastnosti, kdy model dokáže dobře reprezentovat i data, která nebyla použita při jeho tvorbě, se říká generalizace.

Je celá řada způsobů, jak model z dat vytvořit, a jejich volba závisí na informacích, které chceme modelem reprezentovat. My se zaměříme na modely, které postihují velmi častý typ informace, a to tzv. funkční závislost. Předpokládáme, že data mají tvar množiny uspořádaných dvojic T = {(xi, di); i=1, ..., N}, kde N je velikost dat, kde xi je vstupní vektor (vstupů může být více, počet si označíme D a budeme mu říkat dimenze problému) a di je odpovídající výstupní hodnota (zatímco výstup je pro jednoduchost jen jeden). Množině T říkáme tréninková množina, protože ji používáme pro tvorbu (trénování, učení) modelu. Často máme k dispozici i testovací množinu, pomocí které ověřujeme, že jsme model dat vytvořili dobře a je možné ho použít i na další data. Je důležité, aby data z testovací množiny nebyla použita v tréninkové množině. Běžnou praxí při data miningu bývá rozdělit dostupná data na větší tréninkovou část (80-90%) a menší testovací (10-20%).

U funkčně závislých dat předpokládáme, že existuje nějaká funkce F, která realizuje zobrazení mezi vstupy x a výstupem d, neboli platí di = F(xi). My tuto funkci neznáme, ale známe příklady odpovídajících vstupních hodnot x a d. Hodnoty d i složek x mohou být buď číselné (například celá nebo reálná čísla) anebo se může jednat o hodnoty z množiny pevně určených hodnot, kterým říkáme kategoriální veličiny. Pokud je výstup d kategoriální, mluvíme o problému klasifikace, a pokud je d číselná, mluvíme o regresi. Každá z těchto úloh má jiný typ počítání chyby, jak uvidíme dále.

Příklad: Teplota lidského těla by například mohla být reprezentována číselnou proměnnou s reálnými hodnotami v rozsahu od 35 do 42. Výška člověka v centimetrech by se mohla reprezentovat jako celočíselná hodnota z intervalu mezi nulou a nějakou vhodnou horní mezí. Pohlaví je typická kategoriální veličina se dvěma hodnotami – žena a muž. Další příklady kategoriálních veličin jsou třeba měsíce v roce, jména karet, jména nemocí, apod. Typickou klasifikační úlohou je například určení diagnózy nemoci na základě vstupů o různých příznacích (jako je například teplota).

Tvorba modelu je tedy hledání funkce F. Každá metoda data miningu pracuje s jinou vnitřní reprezentací funkce F, ale důležité je, že princip, jak F hledat, je obecný a nazývá se učení s učitelem. Učení s učitelem se snaží minimalizovat chybu modelu na tréninkové množině. Představme si, že v průběhu tvorby modelu máme nějakou aproximaci modelu F0 a zjistíme jeho výstupy na vstupech z tréninkové množiny, tzn. určíme hodnoty yi = F0(xi). Naším cílem při tvorbě modelu je, aby hodnoty yi (skutečný výstup našeho modelu F0) a di (požadovaný výstup daný daty) byly co nejblíže. Matematické metody tvorby modelů počítají hodnotu chyby modelu E, která se spočítá jako nějaká matematická operace hodnot di a yi sečtená přes všechna i probíhající tréninkovou množinu od 1 do N. Pokud jsou hodnoty d a y číselné, jde o regresi a přirozenou operací je například absolutní hodnota rozdílu mezi di a yi. Nejvíce používanou chybou je kvadratická chyba, která počítá součet členů (yi-di)2. V případě klasifikace počítáme jen počet dat, kde se hodnoty di a yi liší a mluvíme o klasifikační chybě. Výpočetní systémy většinou počítají i další statistické veličiny související s chybou, jako střední hodnota a rozptyl, případně chybu relativizují tím, že ji dělí počtem dat v množině.

Metody data miningu využijí hodnoty spočtené chyby k tomu, aby zjistily dosavadní úspěšnost našeho modelu F0, ale typicky se chyba využije i ke tvorbě dalšího – lepšího – modelu F1. Ten se pak zase ohodnotí, vytvoří se F2, atd. Není výjimečné, že tento proces trvá i několik tisíc iterací. Naštěstí se děje automaticky, my jen určíme, zda chceme počítat například určitý počet iterací anebo dokud chyba neklesne pod určitou mez.

Problém tvorby modelu je výpočetně náročný. Uvědomme si, že často pracujeme s daty, kde N je v řádech tisíců či miliónů. Dalším problémem, který znesnadňuje práci strojům i představivost lidem, je vysoká dimenze problému. Člověk si těžko představuje věci, které jsou více než trojdimenzionální, takže pro problémy s D větší než dvě se většinou nemůžeme spolehnout na geometrickou intuici. Musíme tedy spoléhat na to, že naše metody tvorby modelu jsou dostatečně efektivní a dají nám vhled do problému tím, že si můžeme testovat odpovědi modelu na nejrůznější vstupy.

V následujícím textu se stručně seznámíme se dvěma populárními metodami tvorby modelů, které spadají do kategorie metod umělé inteligence. Nejde zdaleka o jediné možnosti, lidé, kteří se v praxi zabývají data miningem, mají k dispozici desítky až stovky metod pocházejících z různých oblastí informatiky a matematiky, od statistiky po biologicky inspirovanou umělou inteligenci.