Absolvoval som kurz Information Science od Software Development Academy a v tomto príspevku popisujem, aký bol cieľ môjho záverečného projektu a ako som postupoval pri jeho realizácii.
Cieľom projektu bolo vytvoriť mannequin, ktorý bude čo najpresnejšie odhadovať úroveň nadváhy človeka na základe rôznych faktorov. Pre tento účel som testoval rôzne klasifikačné machine studying(ML) algoritmy a najlepší z nich som postupne ladil a trénoval.
Úloha bola prevzatá zo súťaže na platforme Kaggle. Platforma poskytuje svojej komunite rôzne datasety pre trénovanie ML modelov, ktoré je možné zapojiť do súťaže. Účastníci si tak trénujú svoje ML schopnosti a zároveň môžu získať zaujímavé ceny (dokonca aj finančnú odmenu).
Obezita je globálnym problémom, ktorý môže mať vážne zdravotné dôsledky, napríklad v podobe kardiovaskulárnych ochorení. Množstvo ľudí trpiacich touto civilizačnou chorobou rastie. Rôzne štúdie sa zameriavajú na hľadanie príčin a spôsobov, ako predpovedať vznik nadváhy.
Väčšina existujúcich nástrojov je obmedzená na meranie indexu telesnej hmotnosti (označované skratkou BMI) a neberú do úvahy ďalšie relevantné faktory, ktoré by mohli byť užitočné pre efektívnejší odhad úrovne nadváhy. Pre modelovanie v rámci tohto projektu boli použité rôzne faktory, ktoré ovplyvňujú výskyt nadváhy.
Za hlavné príčiny vzniku nadváhy sa považujú stravovacie návyky (príjem vysokokalorických jedál), znižovanie fyzickej aktivity (sedavé typy zamestnaní) a spôsoby dopravy. Tieto predpoklady sa zrkadlia aj v otázkach, ktoré sa použili pre získanie dát od vzorky respondentov.
Na základe získaných dát (2111 riadkov a 17 atribútov) vygeneroval deep studying mannequin dataset, ktorý je použitý v tejto analýze. Pôvodný dataset obsahuje odpovede od ľudí z Mexika, Kolumbie a Peru. Dataset použitý pre trénovanie obsahuje 20758 riadkov a 17 atribútov.
Jednotlivé pozorovania sú roztriedené do 7 rôznych kategórii hmotnosti, ktoré sú na obrázku nižšie (vrátane počtu výskytov). Premenná “NObeyesdad” je cieľovou premennou, ktorú má mannequin odhadovať.
Analýza bola reallizovaná v IDE prostredí VSCode, v ktorom som pracoval počas celého kurzu.
Prvým krokom bolo získať základný prehľad o dátach. Skontroloval som chýbajúce hodnoty a dátové typy. Dataset neobsahoval žiadne chýbajúce hodnoty a dátové typy boli v poriadku.
Ďalší krokom bola Exploratívna dátová analýza (EDA), ktorú som si rozdelil na niekoľko krokov. Najskôr som dáta preskúmal z pohľadu deskriptívnej štatistiky (stredné hodnoty, rozptyl, rozsah) a následne preskúmal jednotlivé premenné. Pre vizualizáciu kategorických premenných a frekvenciu jednotlivých kategórii som použil grafy typu “countplot” a “pie chart”. Pre vizualizáciu distribúcie kvantitatívnych premenných som použil histogramy. Pre hľadanie vzťahov medzi premennými som použil grafy typu “pairplot”, “boxplot” a “heatmap”.
Po navnímaní dát a ich “ohmataní” som pokračoval okay ďalšej časti analýzy, ktorou bol výber ML algoritmu. Ako kandidátov som vybral 4 klasifikačné algoritmy z knižnice Scikit-learn:
- Choice Tree Classifier
- Random Forrest Classifier
- Assist Vector Machine (SVC)
- Gradient Boosting Classifier
Jednotlivé modely som natrénoval iba na numerických premenných z trénovacieho datasetu. Pre validáciu modelov a výber najlepšieho som použil metriku “accuracy”.
Zvíťazil Gradient Boosting Classifier, ktorý som sa snažil pomocou ďalších techník iteratívne vylepšiť.
V ďalšom kroku som v rámci preprocessingu zakódoval aj kategorické premenné pomocou techniky “One scorching encoding”. V rámci vylepšovania modelu som pre výber najlepších parametrov použil techniku “GridSearch”.