TSM - Как използвахме машинно обучение, за да предскажем връзката между нашите навици

Адриан Калиман - Архитект на решения @ PitechPlus

Изкуственият интелект, машинното обучение и дълбокото обучение са тези „модни думи“, които ни изумяват с широката си приложимост: от впечатляващи класификации на изображения или невероятен напредък в преводите, до прогнозиране на ракови клетки.

Ако прочетете за историята на това ново поле, което изобщо не е ново, вероятно ще се чудите защо виждаме този шум едва наскоро. Това е така, защото през последните години повечето основи на AI приложенията станаха много лесно достъпни:

Дата: ГОЛЯМА дата. Ръстът на данните в интернет е експоненциален. Стигнахме до точка, при която на всеки два дни извеждаме толкова данни, колкото от началото на времето до 2000 г. Кой би помислил?

Процесорна мощ: машинно обучение (ML), особено задълбоченото обучение, съчетано с много данни, се превръща в необходимост от висока мощност на обработка. Законът на Мур, според който изчислителната мощност се удвоява приблизително на всеки две години и че графичните процесори на видеокартите са се доказали като много ефективни при обработката на ML приложения, означава, че вече разполагаме с достъпен хардуер, който може да се използва за създаване на мощни приложения.

  • Умения за програмиране/Наука за данните: Доскоро кривата на обучение за разбиране на машинното обучение беше изключително стръмна поради всички математически концепции, стоящи зад моделите ML, които могат да бъдат поразителни. За щастие сега има много уроци и рамки за ML, които абстрахират по-голямата част от математиката и са лесно достъпни дори за начинаещи.
  • В нашата компания всеки може да прекара времето за самообучение, за да научи или задълбочи своите познания по софтуера. Ние, след като разбрахме теорията на машинното обучение, искахме да използваме това време за решаване на реални проблеми.

    Едно от заблудите, които имах относно частта от създаването на ML приложение, беше, че действителното развитие на модела и неговото обучение е значителна част от целия процес. Всъщност частта, която отнема най-много време, е събирането на данни и трансформирането им в структурирана форма.

    Фиг. 1 - Google Crash Course за машинно обучение - Пропорции на стъпките на приложението

    Как да намерите най-подходящия набор от данни

    Въпреки че има много данни (дори безплатно), те често са неструктурирани и съдържат много шум, а данните са най-важният фактор за успешен алгоритъм на ML. На пръв поглед, след като забелязахме, че първата стъпка е толкова голяма и важна, но не непременно подходяща за някой по-техничен, изглежда, че имаме блокиране, което ни позволява бързо да използваме ML модел. По-късно открих необикновен информационен ресурс на kaggle.com. Kaggle разполага с над 50 000 набора публични данни, предоставени от изследователи, специалисти или обикновени хора в голямо разнообразие от области. По този начин, ако успяхме да намерим интересен набор, който в идеалния случай се нуждае само от прилично количество форматиране и обработка, за да бъде готов за употреба, бихме могли значително да намалим времето, прекарано в събиране на данни.

    Заедно с AI и ML, коя е най-често срещаната дума, която чуваме, за съжаление, през този период? COVID-19. Затова сметнахме, че би било уместно да практикуваме новите си умения и да протегнем ръка за помощ, за да разберем по-добре въздействието на новата пандемия по света.

    Един набор от данни, които открих, които проверяват най-важните критерии, които търся, е COVID-19 Datay Healthy Diet Dataset. Този набор от данни включва навиците на консумация на различни видове храни в 170 страни по света под формата на csv файлове. Той също така съдържа общото население на всяка държава и статистиката на COVID-19 - броят на потвърдените случаи, смъртни случаи и възстановявания. Данни за групи храни, хранителни стойности, затлъстяване и недохранване са на разположение от Организацията за прехрана и земеделие на ООН (FAO).

    Задачата, поставена от човека, който е качил набора от данни, е проста: да разберете дали и как хранителните навици влияят на статистиката на COVID-19. Здравословните хранителни навици наистина дават предимство на страните в борбата срещу коронавируса?

    Единственият недостатък на този набор от данни е, че той е доста малък от гледна точка на ML. Подобни проблеми изискват хиляди или повече записи за по-точни резултати. Тъй като обаче няма хиляди или десетки хиляди държави по света, това е добра отправна точка за проверка на общата хипотеза, че има връзка между храната и коронавируса.

    Планът ни беше да отговорим дали има характеристики, които пряко влияят върху процента на смъртните случаи, причинени от COVID-19 за всяка държава. Планът включва два различни подхода:

    ML алгоритъм - Анализ на данни и идентифициране на характеристики, които показват корелацията с броя на смъртните случаи. Въз основа на тях създаването и контролираното обучение на модел за машинно обучение, който може да предскаже процента на смъртните случаи въз основа на тези характеристики. Ако прогнозите са достатъчно точни, това означава, че има корелация между тях.

  • Анализ на данни - Ако потвърдим, че има корелация, ще сортираме данните въз основа на смъртността и ще анализираме стойностите на ключовите колони, идентифицирани за страните с най-висока и най-ниска смъртност, за да видим дали можем да направим други заключения. Това е подробно описано в статията, публикувана на платформата Kaggle, която можете да намерите в края на тази статия.
  • връзката

    Приближаване на модела за машинно обучение

    Първата стъпка беше да изследваме набора от данни и да анализираме данните ни. Python беше първият ни избор за език за програмиране, тъй като пакетите numpy и pandas предлагат много инструменти за разглеждане и обработка на данните.

    След като анализирахме колко записа има, каква е минималната, максималната стойност, средната стойност и процента на квантила, ние си създадохме представа за последователността на данните.

    Установихме обаче няколко аномалии:

    Данните не са 100% пълни. В някои редове липсват стойности за колоните Затлъстяване, Потвърдено, Смърт, Възстановено и Активно

  • За няколко колони максималната стойност изглежда много висока в сравнение с другите квантили, което предполага, че за тези колони имаме някои ненормални стойности. Например за колоната Плодове - без вино имаме максимална стойност 9,7. Като се имат предвид квантовите стойности и средните, стандартни стойности, бихме очаквали максималната стойност да бъде около 3,0. Този проблем възниква и за колоните с маслени култури, бобови култури, подправки, скорбялни корени и население.
  • След това продължихме да генерираме матрица, която описва пряката математическа корелация между всички колони на характеристиките. Въпреки че няма силно корелирана характеристика, ние идентифицирахме четири характеристики, които имат пряка корелация с колоната Deaths (стойност 1 означава силна корелация):

    Затлъстяването = 0,32

    Зърнени култури с изключение на бира = - 0,28

    Примери: Ечемик, зърнени храни, царевица, просо, овес, ориз и продукти

    Животински продукти = 0,26

    Животински продукт е всеки производен материал

    Примери: говеждо, масло, сметана и др.

    Растителни продукти = - 0,26

    Примери: ябълки, банани, боб, плодове, грейпфрут, грозде

    (без вино), фъстъчено масло, фъстъци (белени), мед и др.

    За тези стойности разработихме хистограма, за да видим разпределението на данните и да видим дали е нормално или наклонено. Животинските продукти, затлъстяването и растителните продукти имат приблизително нормално разпределение, но зърнените култури - с изключение на бирата, от друга страна, имат наклонено разпределение (Фигура 3).

    След това имахме за цел да нормализираме данните, за да получим нормално разпределение и обработихме записите с липсващи стойности. Идентифицирахме девет записа, които не разполагаха с пълна информация в множество колони, по-специално нямаха стойности в колоната Deaths. Тъй като тази графа е от съществено значение за нашето изследване, решихме да изключим записите с липсваща информация.

    За да разрешим наклоненото разпределение на зърнени култури без бира, ние ще приложим методите за мащабиране Z-Score и Log при създаването на модела. Преглеждайки резултатите от операцията за мащабиране, виждаме, че данните ще бъдат разпределени правилно, като по този начин ще се подобри ефективността на модела.

    В същото време ще актуализираме стойностите на колоната Deaths, за да я приведем в по-подходящ диапазон от характеристиките.

    След обработката на данните стигнахме до пълни функции, които обикновено се разпространяват в 160 държави. Продължихме да разделяме данните на 90% данни за обучение и 10% данни от тестове, като ни дадохме 144 записа за обучение и 16 записа за оценка на точността на модела.

    Избрахме класически модел на линейна регресия и го внедрихме с помощта на TensorFlow и Keras. RootMeanSquaredError е използван като основна стойност за оценка на производителността на модела.

    Забелязали сме, че 64 епохи с набор от 12 елемента са достатъчни за сближаване на модела. Сега имаме функционален модел, който използва суровини за животински продукти, зърнени култури, различни от бира, затлъстяване и растителни продукти, за да прогнозира смъртността, причинена от коронавирус.

    Фиг.5 - RMSE напредък по време на обучение на модел

    Заключение и следващи стъпки

    Първото заключение, което можем да направим: очевидно има връзка между тези характеристики и прогнозирания резултат - процентът на смъртните случаи.

    Зърнените култури с изключение на бира и зеленчукови продукти също имат пряка отрицателна корелация. Увеличаването на стойностите на тези характеристики намалява процента на смъртните случаи. От друга страна, увеличаването на животинските продукти, което не е придружено от такова в растителните продукти, има пряка положителна корелация, което води до по-висок процент на смъртни случаи.

    С други думи, страните с по-висок процент от населението, консумиращи зърнени култури и растителни продукти, са склонни да имат по-малък процент смъртни случаи, причинени от коронавирус.

    Въпреки че това е изключително откритие, то трябва да бъде подобрено. Следващите стъпки ще бъдат да се инспектира всяка подкатегория от тези основни характеристики и по-точно да се идентифицира вида на храната, която има най-голямо въздействие. Предизвикателството ще бъде да се съберат данни на това ниво на детайлност, като моделът ML е готов за повторна употреба със същите основни стъпки, описани по-горе.

    Можете да научите повече подробности за кода, използван за достигане до тези заключения.