Přejdi na obsah Přejdi na navigaci

ÚvodBlogMachine learning pro předpověď dokončení studia

Machine learning pro předpověď dokončení studia

Machine learning (ML) se dá využít v mnoha oblastech. Jedním z našich posledních projektů bylo supervised learning modelování pro předpověď úspěšného dokončení bakalářského nebo magisterského studia na nejmenované univerzitě. Přidaná hodnota tohoto modelu spočívá v celé řadě věcí. Hlavní přínosy zde představují lepší plánování pro univerzitu a lepší pomoc studentům, kteří mají se studiem problémy. Kde všude ML nalezne uplatnění a jakou přidanou hodnotu má model pro predikci dokončení studia, je možné si přečíst v samostatném článku Jak prakticky využít strojové učení v byznysu. Cílem tohoto článku je zjednodušeně čtenáře seznámit s tím, jak takový model vzniká.

Model je programován v jazyce R a příprava takového algoritmu probíhala v poměrně jasně daných krocích. Tyto kroky lze shrnout následovně:

  1. Vytvoření dostatečně velkého datasetu v datovém skladu na základě ukončených studií
  2. Explorační analýza (základní kámen pro pochopení vztahů v datech)
  3. Výběr vhodného algoritmu
  4. Trénování modelu
  5. Testování a evaluace modelu
  6. Nasazení modelu na cloud
  7. Vytvoření nového view se stejnou strukturou dat jako v prvním bodě, ale tentokrát pouze pro nedokončená studia
  8. Vytvoření procesu spouštění modelu, orchestrace procedur a uložení predikcí do databáze
  9. Reporting

Předešle uvedené shrnuje grafika uvedená níže. Nyní se zaměříme na jednotlivé kroky a rozebereme je podrobněji.

Prediktivni model

Vytvoření datasetu a explorační analýza

V našem případě jsme vyčlenili historická data o studiích, o kterých jsme již věděli, jak dopadla. Struktura datasetu, na kterém probíhá učení algoritmu, se nesmí změnit při využití modelu pro predikci. Predikce modelu probíhá totiž tak, že se již vytrénovaný a evaluovaný model použije pro zcela nová data. Stejnou strukturu využitou pro učení na historických datech jsme tedy uložili i pro aktuálně nedokončená studia, na kterých bude probíhat predikce.

U struktury dat je nutné podchytit celý ekosystém modelování a komplexity problému. Studia mohou být například v časové nekonzistenci. Co to přesněji znamená? Studia se mohou nacházet v různém časovém rozhraní (studium A se nachází v prvním ročníku bakalářského stupně a studium B v druhém ročníku studia magisterského atd.). Pro tento pohled je nutné ke studiím i takto přistupovat a vytvořit jednotlivé skupiny. Model je tedy nutné postavit tak, aby tuto časovou nekonzistenci reflektoval. Kdybychom měli pouze jeden model, který by predikoval úspěšnost studia pro všechny časové kategorie, došlo by ke zkreslení. Určitě si dokážeme představit různorodost třeba v rámci počtu získaných kreditů za každé studium. Takový algoritmus by nebylo možné využít, protože studium ve třetím ročníku by zákonitě mělo více kreditů než studium v prvním ročníku, a tudíž by tato kategorie neměla žádný vliv na predikci a upřednostňovala by studia, která se na univerzitě nachází déle.

V tomto ohledu jsme přistoupili k rozdělení studií po semestrech. Predikce tedy probíhá za každý semestr odděleně na zvlášť vytvořeném modelu. Podobné dělení dat pro lepší predikce se dále nabízí ještě u typu studia (bakalář, magistr) a fakulty. Takovéto rozdělení dat do menších množin a vytváření jednotlivých modelů je dobré pro snížení variability v datech. Z toho vyplývá, že počet výsledných modelů se pohybuje v jednotkách desítek. Rozdělení množiny dat do správných skupin probíhá v části zvané explorační analýza. Může se využít korelace, k-means algoritmus, PCA nebo další přístupy clusteringu. V našem případě jsme tedy data dělili po semestrech, typu studia a některých fakult, což lze vidět na schématu uvedeném níže.

Exploracni analyza

Výběr vhodného algoritmu a trénování modelu

Náš algoritmus pro predikci úspěšnosti studia je z oblasti ML supervised learning. Supervised learning, neboli učení s učitelem je proces, který definuje modely na ty, které je nutné nejprve učit od modelů, které hledají například pouze souvislosti v datech. Statisticky se náš projekt řadí do klasifikačních přístupů, jelikož chceme predikovat, jestli studium bude dokončeno úspěšně či nikoliv.

Modelování dále probíhá dle standardní metodiky, kdy se data rozdělí na data určená pro trénování algoritmu a data určená pro testování. Bez tohoto kroku bychom nebyli schopni říct, jak dobře náš model dokáže predikovat, a tudíž jak je pro predikce relevantní. Výsledek modelování má být algoritmus zachycující co nejlépe skutečnost. Je tedy nutné podrobit ho testování, abychom si byli jisti výslednou správností. Kdyby se data nedělila, nemohli bychom s jistotou říct jaká je kvalita výstupu pro data, která model nikdy nezpracoval (produkční data). Pro přehled této problematiky je nutné pochopit co znamená underfit a overfit.

underfit a overfit.

Z obrázku je patrné, že underfit modelu nereprezentuje skutečnost z daleka tak dobře, jak by potenciálně mohl. Overfit na druhé straně je také nepoužitelný, protože nová data vstupující do predikce, by nedokázal zachytit. V modelování je nutné dostat se do fáze dobrého podchycení trendu, jako na prostředním obrázku. Právě takový model je schopný reflektovat skutečnost nejlépe a je možné využití modelu pro produkční data.

Jak námi použitý algoritmus vlastně obecně funguje?

Náš algoritmus pro předpověď úspěšného studia pochází z kategorie „tree-based models“, což je kategorie modelů, založená na logice rozhodovacího stromu.

Rozhodovací strom předpovídá třídu nového, dosud neviděného vstupu, ale v zákulisí se musí algoritmus rozhodnout, kterou třídu k vstupním datům přiřadí. Některé klasifikační algoritmy jsou pravděpodobnostní, jako Naive Bayes. Existuje také přístup založený na pravidlech jako jsou modely typu tree-based.

My lidé se také neustále rozhodujeme na základě pravidel. Třeba když se chcete najíst, použijete přístup založený na pravidlech. Prvně se můžete rozhodnout, zda-li máte vůbec hlad, míra hladu určitě bude ovlivňovat i velikost daného jídla. Dále se dá rozhodnout třeba na základě toho, kolik jste ochotni za oběd utratit peněz. Tímto způsobem se dá pokračovat do různé hloubky problému. Například může hrát roli, jestli chcete pozvat svojí drahou polovičku, nebo jestli máte rádi sushi. Nad těmito pravidly lze přemýšlet jako nad procesem s určitou hloubkou, stejně jako je tomu u rozhodovacího stromu.

rozhodovaci strom

Intuice za rozhodovacími stromy spočívá v tom, že pomocí proměnných v datech vytváříme otázky typu ano/ne a soustavu dat neustále rozdělujeme, dokud neizolujeme všechny datové body patřící do každé třídy. Pomocí tohoto procesu organizujeme data do stromové struktury.

Pokaždé, když položíte otázku, přidáme do stromu uzel (node). První uzel se nazývá kořenový uzel (root node). Výsledek položení otázky rozdělí datovou sadu na základě hodnoty prvku a vytvoří nové uzly. Pokud se rozhodneme zastavit proces po rozdělení, poslední vytvořené uzly se nazývají listové uzly (leaf nodes). Pokaždé, když odpovíte na otázku, vytváříte také větve a segmentujete prostor proměnných do nesouvislých oblastí. Jedna větev stromu má všechny datové body odpovídající odpovědi ano na otázku, kterou implikovalo pravidlo v předchozím uzlu. Druhá větev má uzel se zbývajícími datovými body. Tímto způsobem pokračujeme, dokud nám nezbydou žádná data, nebo dokud jsme nevyužili všechny proměnné (tzn. není již žádná nová otázka). Algoritmus se snaží zcela oddělit datové třídy tak, aby všechny koncové uzly (uzly, které data dále nerozdělují) patřily do jedné třídy. Ty se označují jako čisté leaf nodes. Když nejde vytvořit čistou skupinu třídy, snaží se vytvořit skupinu co nejčistší. Dělení do tříd může probíhat na základě několika přístupů, např. tzv. „Gini Impurity of a node“.

K čemu je nám dobré pochopení, jak funguje jeden rozhodovací strom? Je to proto, protože jsme pro vývoj finálního algoritmu využili několik tisíc stromů. Do jednoho modelu jsme takto ukryli kolem 500 - 1000 rozhodovacích stromů. Toto množení stromů má za následek vyšší přesnost modelu, protože můžeme využít tisíce stromů a zprůměrovat jejich výsledky. Při implementaci vícero stromů se používá metoda bagging nebo boosting. Tyto metody zde rozebírat nebudeme, jelikož si zaslouží samostatný článek. Velmi stručně, Boosting je iterativní technika, která upravuje váhu pozorování na základě poslední klasifikace. Bagging implementuje vícero stromů a průměruje jejich predikce. My jsme pro předpověď studia na univerzitě využili algoritmus zvaný Random Forest, který implementuje množinu stromů (les) a automaticky v průběhu trénování bootstrapuje data. Boostrap je statistický přístup, který náhodně vybírá data z množiny a iterativně z nich vystaví strom. Ten dále využije pro predikce a daný strom testuje (v tomto ohledu je algoritmus velice robustní). Tyto stromy jsou obecně málo komplexní, ale výkon takového algoritmu je vysoký. Díky iterativnímu přístupu algoritmus nemá vysokou tendenci overfitovat data.

Pro porovnání všech modelů jsme již vycvičené modely evaluovali metodou ROC křivek (Receiver Operating Characteristic) a hodnotou AUC (Area Under the Curve). Jak bylo zmíněno na začátku, modelů jsme vytvořili hned několik, pro každý semestr typ studia a fakulty zvlášť.

Nasazení modelu na cloud a orchestrace

Dalším krokem je nasazení modelu na cloud. My jsme pro tento krok využili Azure a machine learning studio. Zde je možné vytvoření pipeliny, která využije view z databáze v potřebné struktuře a spustí proces predikce díky využití modelu a výsledky uloží nazpět do databáze.

Nasazení modelu na cloud a orchestrace

Tyto pipeliny je ještě nutné orchestrovat s ostatními procesy v databázi. Pro tento krok jsme využili datafactory, která dokáže procesy predikce spouštět v libovolném nastavení s ostatními ETL procesy v DWH.

Reporting

Reporting nad predikcemi se již výrazně neliší od jiných reportingových projektů. Pokud vás zajímají články o reportingu, či ukázkové reporty, pak je možné se více dozvědět například zde.

Ukázky reportů

Závěr

Predikce je možné využít i na jiných projektech. Vždy je ale nutné brát v potaz možné zkreslení. V tomto ohledu je nejdůležitější část evaluace modelu, která poskytuje náhled na podstatu věci. Samotná evaluace je náročný proces, který se několikrát opakuje a je častokrát nutné vyzkoušet jiné cesty, abychom si mohli být opravdu jistí, co náš model ukazuje. Dobrání se konečného výsledku může trvat tedy někdy poměrně dlouho (samotný výběr algoritmu či EDA, jsou rovněž časově náročné kroky pro modelování algoritmu). Nicméně, tento investovaný čas se vám zúročí v kvalitních predikcích, o které se můžete opřít při svém plánování, nebo optimalizaci procesů.

 

Autor: Kryštof Dytrt
oddělení data science
krystof.dytrt@dolphinconsulting.cz

Kryštof

 

 

Zpět na výpis rubriky