TSM - Ako sme pomocou strojového učenia predpovedali súvislosť medzi našimi zvykmi

Adrian Căliman - architekt riešenia @ PitechPlus

Umelá inteligencia, strojové učenie a hlboké učenie sú tieto „módne slová“, ktoré nás ohromujú svojou širokou uplatniteľnosťou: od pôsobivých klasifikácií obrázkov alebo neuveriteľného pokroku v prekladoch až po predikciu rakovinových buniek.

Ak si prečítate o histórii tohto nového poľa, ktoré nie je vôbec nové, asi sa budete čudovať, prečo vidíme tento humbuk len nedávno. Je to tak preto, lebo v posledných rokoch sa väčšina základných aplikácií AI stala veľmi ľahko prístupnou:

Dátum: VEĽKÝ dátum. Rast údajov na internete je exponenciálny. Dospeli sme do bodu, keď každé dva dni vyprodukujeme toľko údajov, koľko sme vyprodukovali od začiatku času do roku 2000. Kto by si to myslel?

Výkon spracovania: Strojové učenie (ML), obzvlášť hlboké učenie v kombinácii s veľkým počtom údajov vedie k potrebe vysokej výpočtovej sily. Moorov zákon, podľa ktorého sa výpočtový výkon zdvojnásobuje každé dva roky a že grafické karty grafických kariet sa ukázali ako veľmi efektívne pri spracovaní aplikácií ML, znamená, že teraz máme k dispozícii cenovo dostupný hardvér, ktorý je možné použiť na vytváranie výkonných aplikácií.

  • Programovacie schopnosti/Veda o údajoch: Až donedávna bola krivka učenia sa pre pochopenie strojového učenia mimoriadne strmá kvôli všetkým matematickým koncepciám modelov ML, ktoré môžu byť ohromujúce. Našťastie je v súčasnosti k dispozícii veľa tutoriálov a rámcov ML, ktoré abstrakujú väčšinu matematiky a sú ľahko dostupné aj pre začiatočníkov.
  • V našej spoločnosti môže ktokoľvek stráviť čas samoučením a učením sa alebo prehlbovaním svojich softvérových znalostí. Po pochopení teórie, ktorá stojí za strojovým učením, sme chceli tento čas využiť na riešenie problémov v reálnom svete.

    Jednou z mylných predstáv o časti vytvárania aplikácie ML bolo, že skutočný vývoj modelu a jeho školenie je podstatnou súčasťou celého procesu. V skutočnosti je najdlhšou časťou zhromažďovanie údajov a ich transformácia do štruktúrovanej podoby.

    Obr. 1 - Havarijný kurz strojového učenia Google - proporcie jednotlivých krokov aplikácie

    Ako nájsť najvhodnejší súbor údajov

    Aj keď je k dispozícii veľa údajov (aj zadarmo), sú často neštruktúrované a obsahujú veľa šumu a údaje sú najdôležitejším faktorom úspešného algoritmu ML. Na prvý pohľad, keď sme si všimli, že prvý krok je taký veľký a dôležitý, ale nie nevyhnutne vhodný pre niekoho technickejšieho, zdalo sa, že máme blokovanie, ktoré nám umožňuje rýchlo mať v prevádzke model ML. Neskôr som na serveri kaggle.com objavil mimoriadny zdroj informácií. Kaggle má viac ako 50 000 súborov verejných údajov poskytnutých výskumníkmi, špecialistami alebo obyčajnými ľuďmi v širokej škále oblastí. Ak by sa nám teda podarilo nájsť zaujímavú množinu, ktorá v ideálnom prípade potrebuje len slušné množstvo formátovania a spracovania, aby bola pripravená na použitie, mohli by sme výrazne skrátiť čas strávený zhromažďovaním údajov.

    Čo je spolu s AI a ML najbežnejšie módne slovo, ktoré v tomto období, bohužiaľ, počujeme? COVID-19. Takže sme si mysleli, že by bolo vhodné precvičiť si nové zručnosti a podať pomocnú ruku, aby sme lepšie pochopili dopady novej pandémie na svet.

    Jeden súbor údajov, ktorý som zistil a ktorý skontroloval najdôležitejšie kritériá, ktoré som hľadal, bol súbor údajov o zdravej strave COVID-19. Tento súbor údajov obsahuje spotrebiteľské návyky rôznych druhov potravín v 170 krajinách sveta vo forme súborov CSV. Obsahuje tiež celkovú populáciu každej krajiny a štatistiku COVID-19 - počet potvrdených prípadov, úmrtí a uzdravení. Údaje o skupinách potravín, výživových hodnotách, obezite a podvýžive sú k dispozícii od Organizácie OSN pre výživu a poľnohospodárstvo (FAO).

    Úloha, ktorú predstavuje osoba, ktorá nahrala súbor údajov, je jednoduchá: zistiť, či a ako ovplyvňujú stravovacie návyky štatistiku COVID-19. Zdravé stravovacie návyky poskytujú krajinám výhodu v boji proti koronavírusom?

    Jedinou nevýhodou tohto súboru údajov je, že je z hľadiska ML dosť malý. Podobné problémy si kvôli presnejším výsledkom vyžadujú tisíce alebo viac záznamov. Pretože však na celom svete nie sú tisíce alebo desaťtisíce krajín, je to dobrý východiskový bod na otestovanie všeobecnej hypotézy, že existuje súvislosť medzi potravinami a koronavírusmi.

    Náš plán bol odpovedať, či existujú charakteristiky, ktoré priamo ovplyvňujú percento úmrtí spôsobených COVID-19 pre každú krajinu. Plán zahŕňa dva rôzne prístupy:

    Algoritmus ML - Analýza údajov a identifikácia charakteristík, ktoré ukazujú koreláciu s počtom úmrtí. Na ich základe bolo vytvorenie a supervízny výcvik modelu strojového učenia, ktorý dokáže na základe týchto charakteristík predpovedať percento úmrtí. Ak sú predpovede dostatočne presné, znamená to, že medzi nimi existuje korelácia.

  • Analýza dát - Ak potvrdíme, že existuje korelácia, zoraďujeme údaje na základe úmrtnosti a analyzujeme hodnoty kľúčových stĺpcov určených pre krajiny s najvyššou a najnižšou úmrtnosťou, aby sme zistili, či môžeme vyvodiť ďalšie závery. Podrobne to popisuje príspevok zverejnený na platforme Kaggle, ktorý nájdete na konci tohto článku.
  • strojového

    Približovanie sa k modelu strojového učenia

    Prvým krokom bolo preskúmanie súboru údajov a analýza našich údajov. Python bol našou prvou voľbou programovacieho jazyka, pretože balíčky numpy a pandas ponúkajú veľa „out of the box“ nástrojov na prezeranie a spracovanie údajov.

    Po analýze počtu záznamov, čo je minimálna, maximálna hodnota, priemerná hodnota a kvantilové percento, sme si vytvorili predstavu o konzistencii údajov.

    Zistili sme však niektoré anomálie:

    Údaje nie sú 100% úplné. V niektorých riadkoch chýbajú hodnoty pre stĺpce Obezita, Potvrdené, Úmrtia, Obnovené a Aktívne

  • Pre niekoľko stĺpcov sa maximálna hodnota zdá byť veľmi vysoká v porovnaní s ostatnými kvantilmi, čo naznačuje, že pre tieto stĺpce máme nejaké abnormálne hodnoty. Napríklad pre stĺpec Ovocie - okrem vína máme maximálnu hodnotu 9,7. Vzhľadom na kvantové hodnoty a priemerné, štandardné hodnoty by sme očakávali maximálnu hodnotu asi 3,0. Tento problém sa vyskytuje aj pre stĺpce Olejnaté plodiny, strukoviny, korenie, škrobové korene a populácia.
  • Potom sme pokračovali v generovaní matice, ktorá popisuje priamu matematickú koreláciu medzi všetkými stĺpcami prvkov. Aj keď neexistuje žiadna silne korelovaná vlastnosť, identifikovali sme štyri vlastnosti, ktoré majú priamu koreláciu so stĺpcom Úmrtia (hodnota 1 znamená silnú koreláciu):

    Obezita = 0,32

    Obilniny bez piva = - 0,28

    Príklady: jačmeň, obilniny, kukurica, proso, ovos, ryža a výrobky z neho

    Živočíšne produkty = 0,26

    Živočíšnym produktom je akýkoľvek odvodený materiál

    Príklady: hovädzie mäso, maslo, smotana atď.

    Rastlinné výrobky = - 0,26

    Príklady: jablká, banány, fazuľa, ovocie, grapefruit, hrozno

    (bez vína), arašidové maslo, arašidy (lúpané), med atď.

    Pre tieto hodnoty sme navrhli histogram, ktorý slúži na zobrazenie rozdelenia údajov a na zistenie, či je normálne alebo naklonené. Živočíšne výrobky, obezita a rastlinné výrobky majú približne normálne rozdelenie, ale obilniny - okrem piva, na druhej strane, majú sklonenú distribúciu (obrázok 3).

    Ďalej sme sa zamerali na normalizáciu údajov na získanie normálneho rozdelenia a na ošetrenie záznamov chýbajúcimi hodnotami. Identifikovali sme deväť záznamov, ktoré nemali úplné informácie vo viacerých stĺpcoch, najmä nemali v stĺpci Úmrtia žiadne hodnoty. Pretože tento stĺpec je pre náš výskum nevyhnutný, rozhodli sme sa vylúčiť záznamy s chýbajúcimi informáciami.

    Na vyriešenie naklonenej distribúcie obilnín bez piva použijeme pri vytváraní modelu metódy Z-Score a Log škálovania. Prezeraním výsledkov operácie zmeny mierky vidíme, že údaje budú správne distribuované, čím sa zlepší účinnosť modelu.

    Zároveň aktualizujeme hodnoty stĺpca Úmrtia, aby sa dostali do vhodnejšieho rozsahu ako funkcie.

    Po spracovaní údajov sme dosiahli kompletné funkcie, bežne distribuované do 160 krajín. Pokračovali sme v rozdelení údajov na 90% tréningových údajov a 10% testovacích údajov, čo nám dalo 144 tréningových záznamov a 16 záznamov na posúdenie presnosti modelu.

    Zvolili sme klasický lineárny regresný model a implementovali sme ho pomocou TensorFlow a Keras. RootMeanSquaredError bola použitá ako hlavná hodnota pre hodnotenie výkonu modelu.

    Všimli sme si, že na konvergovanie modelu stačí 64 epoch so sadou 12 prvkov. Teraz máme funkčný model, ktorý na predpovedanie úmrtnosti spôsobenej koronavírusom využíva vstupy pre živočíšne produkty, obilniny iné ako pivo, obezita a rastlinné produkty.

    Obrázok 5 - Postup RMSE počas tréningu modelu

    Záver a ďalšie kroky

    Prvý záver, ktorý môžeme vyvodiť: existuje zjavná súvislosť medzi týmito charakteristikami a predpokladaným výsledkom - percentom úmrtí.

    Priamu negatívnu koreláciu majú aj obilniny okrem piva a rastlinných výrobkov. Zvyšovanie hodnôt týchto charakteristík znižuje percento úmrtí. Na druhej strane, zvýšenie živočíšnych produktov, ktoré nie je sprevádzané zvyškom v rastlinných produktoch, má priamu pozitívnu koreláciu vedúcu k vyššej miere úmrtia.

    Inými slovami, krajiny, kde vyššie percento obyvateľstva konzumuje obilniny a rastlinné produkty, majú tendenciu mať nižšie percento úmrtí spôsobených koronavírusmi.

    Aj keď ide o výnimočný objav, je potrebné ho vylepšiť. Ďalším krokom bude kontrola každej podkategórie týchto hlavných charakteristík a presnejšia identifikácia druhu potraviny, ktorá má najväčší vplyv. Výzvou bude zhromaždiť údaje na tejto úrovni podrobnosti, pričom model ML bude pripravený na opätovné použitie s rovnakými hlavnými krokmi, ktoré sú opísané vyššie.

    Môžete sa dozvedieť viac podrobností o kóde použitom na dosiahnutie týchto záverov.