Aktuální vydání

celé číslo

07

2019

Řízení dopravy a budov

celé číslo

Strojové učení a software Matlab

Obor strojového učení v současnosti nalézá uplatnění v nejrůznějších oborech lidské činnosti, počínaje ekonomií a energetikou přes průmyslovou automatizaci, robotiku a výrobu automobilů až po biomedicínu či zábavní průmysl a multimédia. Software Matlab, jakožto vývojové a výpočetní prostředí pro vědeckotechnické výpočty, nabízí k použití v oboru strojového učení množství různých algoritmů a usnadňuje jejich použití při řešení reálných úloh pro praxi.

 
„Strojové učení je podoborem umělé inteligence zabývajícím se algoritmy a technikami, které umožňují počítačovému systému ‚učit se‘. Strojové učení se značně prolíná s oblastmi statistiky a dobývaní znalostí a má široké uplatnění.“ (http://cs.wikipedia.org).
 
V praxi je strojové učení využíváno např. v oboru finančních výpočtů (bodování úvěrů, algoritmické obchodování), ve výpočetní biologii (výzkum a vývoj léčiv, sekvenování DNA), v energetice (předpovídání spotřeby energie a vývoje cen), při počítačovém zpracování přirozeného jazyka, rozpoznávání řeči a obrazu, v reklamě a propagaci a v mnoha dalších oborech a úlohách (obr. 1).
 

V čem spočívá strojové učení

Obor strojového učení používá data a vytváří program k plnění zadané úlohy. Jádrem výsledného programu je vnitřní matematický model, který s použitím zadaných vstupů určuje výstupní údaje. Úkolem vlastního postupu strojového učení je nastavit parametry modelu tak, aby výstupní údaje byly určovány s potřebnou přesností a minimem chybných výsledků. Metody strojového učení lze rozdělit do dvou skupin. Učení s učitelem vyžaduje sadu trénovacích údajů, kde je vstupním údajům explicitně přiřazen správný výstup. Algoritmus strojového učení využije trénovací data k „naučení“ (parametrizaci) vnitřního modelu. Naučený model je následně využíván k odhadu hodnoty výstupu pro nové hodnoty vstupů. Nejsou-li trénovací údaje k dispozici, je možné využít přístup učení bez učitele. Základními úlohami strojového učení jsou klasifikace, regrese a shluková analýza. Klasifikace využívá matematický model k rozdělení objektů popsaných vstupními daty do dvou či většího počtu tříd. Regrese spočívá v odhadu hodnoty spojité výstupní veličiny na základě vstupních údajů. Shluková analýza hledá v datech přirozená seskupení na základě podobných vlastností.
 
Zatímco klasifikace a regrese patří mezi metody učení s učitelem, shluková analýza je typickým příkladem učení bez učitele (obr. 2).
 

Strojové učení a software Matlab

Software Matlab je integrované prostředí pro vědeckotechnické výpočty, modelování, návrhy algoritmů, simulace, analýzu a prezentaci dat. Je to nástroj jak pro pohodlnou interaktivní práci, tak pro vývoj širokého spektra aplikačních programů.
 
Software Matlab poskytuje potřebné funkce pro všechny hlavní úlohy v oboru strojového učení: klasifikaci, regresi i shlukovou analýzu.
 

Klasifikace

Cílem klasifikace je zařadit objekty do disjunktních tříd. Objekty jsou popsány hodnotami jednotlivých svých parametrů (vlastnosti objektu), které jsou vstupem do klasifikačního algoritmu (klasifikátoru).
 
Software Matlab nabízí k použití široké spektrum klasifikačních algoritmů: rozhodovací stromy, algoritmy pro lineární a kvadratickou diskriminační analýzu (LDA, QDA), algoritmy podpůrných vektorů (Support Vector Machines – SVM), naivní bayesovský klasifikátor či algoritmus k-nejbližších sousedů. Dále lze využít obecnější přístupy, jako např. neuronové sítě, fuzzy logiku atd.
 
Práce s klasifikátory v softwaru Matlab je velmi snadná, protože ačkoliv jde o navzájem značně odlišné algoritmy, v prostředí Matlab je nad nimi vytvořeno jednotné rozhraní. Uživatel si nejprve vybere typ klasifikátoru a poté klasifikátor vytvoří a naučí funkcí fit doplněnou jménem klasifikátoru, např. fitctree (pro klasifikační strom). Klasifikační model je vytvořen jako objekt v pracovním prostoru prostředí Matlab. Pro následnou klasifikaci nových údajů je určena funkce predict, bez ohledu na typ klasifikátoru. Samozřejmá je možnost nastavit různé parametry, které chování klasifikačních algoritmů ovlivňují.
 
Prostředí Matlab navíc poskytuje přehledné grafické uživatelské rozhraní Classification Learner App (obr. 3). Tento program umožňuje vybírat data, volit a nastavovat klasifikátory a realizovat vlastní proces naučení se modelu. Dále poskytuje přehledné zobrazení výsledků včetně metrik umožňujících navzájem porovnat jednotlivé klasifikátory. Takto lze projít celým procesem učení klasifikátoru až po výběr nejlepšího kandidáta bez nutnosti programovat. Výsledný klasifikátor je pak možné snadno použít s novými vstupními údaji.
 

Regrese

Účelem regresní analýzy (regrese) je získat na základě vstupních údajů odhad hodnoty spojité výstupní veličiny. Software Matlab nabízí algoritmy pro lineární regresi, nelineární regresi a zobecněnou lineární regresi (lineární regresní model doplněný nelineární spojovací funkcí).
 
K tvorbě a učení regresních modelů lze využít funkce fitlm, fitnlm a fitglm, popř. funkci stepwise pro regresi s postupným přidáváním členů. Odhad výstupu odpovídajícího novým vstupním údajům opět zajišťuje funkce predict.
 

Shluková analýza

Shluková analýza se používá k rozdělení údajů do skupin na základě podobných vlastností. Funkcemi poskytovanými systémem Matlab jsou např. hierarchická shluková analýza, algoritmus k-means, směs Gaussových rozdělení, samoorganizující se sítě, algoritmus fuzzy c-means, skryté Markovovy modely atd.
 

Použití strojového učení krok za krokem

Při použití metod strojové učení se obvykle postupuje ve dvou fázích – nejprve je ve fázi učení určen vhodný model pro klasifikaci či regresi, který je poté ve fázi predikce použit k odhadu výstupu z nových údajů nebo k zařazení nových údajů do odpovídající kategorie (obr. 4). Na obr. 4 je naznačeno, že použití metod strojového učení nespočívá jen v hledání samotného klasifikátoru či regresního modelu, ale také ve vhodné přípravě údajů. Ty se nejprve vhodným způsobem upraví a teprve poté jsou předány na vstup klasifikačního nebo regresního modelu. Surové, neupravené údaje lze přímo využít jen velmi zřídka.
 
Někdy postačuje údaje před vstupem do modelu filtrovat a zbavit je tak nežádoucího šumu. Jestliže se soubor údajů skládá z hodnot přílišného množství veličin, je možné využít analýzu hlavních komponent (Principal Component Analysis – PCA) a převést mnohorozměrné údaje do jednodušší podoby. Také není vždy nutné, aby model pracoval se všemi výchozími údaji jednotlivě. Někdy postačí pouze použít souhrnné statistické charakteristiky souboru údajů za stanovený časový úsek nebo provést shlukovou analýzu.
 
Ve fázi predikce je nutné upravovat vstupní údaje stejným způsobem, jako ve fázi učení. Má-li predikce probíhat v reálném čase, musí být údaje upravovány dostatečně rychle a je třeba s touto skutečností počítat již ve fázi návrhu a učení modelu.
 

„Big Data“

Big data“ jsou fenoménem současné doby. Jde o termín souhrnně označující takové soubory údajů, které svým rozsahem či složitostí přesahují možnosti standardních výpočetních prostředků. Pro jejich analýzu a zpracování je tedy třeba mít k dispozici specializované funkce, které s takovými soubory dokážou pracovat. Úlohy v oboru strojového učení se s problematikou rozsáhlých souborů údajů často setkávají např. v případech, kdy jde o velké množství prediktorů či celkovou složitost souborů dat přesahující možnosti jednoduchých parametrických modelů. Systém Matlab poskytuje k práci s rozsáhlými soubory charakteru big data mnoho vhodných nástrojů a prostředků od diskových proměnných a funkcí typu datastore pro práci s distribuovanými údaji přes paralelní výpočty a výpočty s použitím grafického procesoru (GPU) až po zpracování obrazu po blocích či streamovací algoritmy. K nejnovějším nástrojům patří podpora platformy Hadoop a algoritmu
 
MapReduce.
Jaroslav Jirkovský,
Obr. 1. Příklady uplatnění strojového učení v praxi
Obr. 2. Rozdělení metod strojového učení podle typu úlohy
Obr. 3. Grafický výstup programu Classification Learner App pro správu a učení klasifikátorů
Obr. 4. Posloupnost kroků při strojovém učení (PCA – Principal Component Analysis; analýza hlavních komponent)