TSM - Як ми використовували машинне навчання, щоб передбачити зв’язок між нашими звичками

Адріан Каліман - архітектор рішень @ PitechPlus

Штучний інтелект, машинне навчання та глибоке навчання - ось ці "модні слова", які вражають нас своєю широкою придатністю: від вражаючої класифікації зображень або неймовірного прогресу в перекладах, до прогнозування ракових клітин.

Якщо ви прочитаєте про історію цієї нової галузі, яка зовсім не нова, ви, мабуть, здивуєтесь, чому ми бачимо цей ажіотаж зовсім недавно. Це тому, що за останні роки більшість основ програм ШІ стали дуже легкодоступними:

Дата: ВЕЛИКА дата. Зростання даних в Інтернеті є експоненціальним. Ми дійшли до того моменту, коли кожні два дні ми отримуємо стільки даних, скільки отримували від початку часів до 2000 року. Хто б міг подумати?

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

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

    Одне з помилкових уявлень щодо частини створення програми ML було те, що реальна розробка моделі та її підготовка є важливою частиною всього процесу. Насправді частина, яка триває найдовше, - це збір даних та перетворення їх у структуровану форму.

    Рис. 1 - Аварійний курс Google Machine Learning - Пропорції кроків програми

    Як знайти найбільш підходящий набір даних

    Незважаючи на те, що доступно багато даних (навіть безкоштовно), вони часто неструктуровані і містять багато шуму, а дані є найважливішим фактором успішного алгоритму ML. На перший погляд, помітивши, що перший крок є настільки великим і важливим, але не обов’язково придатним для когось більш технічного, здавалося, що у нас є блокування, що дозволяє нам швидко ввести в дію модель ML. Пізніше я виявив надзвичайний ресурс інформації на kaggle.com. Kaggle має понад 50 000 наборів публічних даних, наданих дослідниками, спеціалістами або простими людьми в самих різних областях. Таким чином, якби нам вдалося знайти цікавий набір, який в ідеалі потребує лише гідної кількості форматування та обробки, щоб бути готовим до використання, ми могли б значно скоротити час, витрачений на збір даних.

    Поряд з AI та ML, яке найпоширеніше модне слово ми чуємо, на жаль, у цей період? COVID-19. Тому ми вважали, що було б доцільно відпрацювати наші нові навички та простягти руку допомоги, щоб краще зрозуміти вплив нової пандемії у всьому світі.

    Я виявив, що найважливішими критеріями, які я шукав, є набір даних про здорову дієту COVID-19. Цей набір даних включає звички споживання різних видів їжі у 170 країнах світу у вигляді файлів csv. Він також містить загальну чисельність населення кожної країни та статистику COVID-19 - кількість підтверджених випадків, смертей та одужання. Дані про групи продуктів харчування, харчові цінності, ожиріння та недоїдання доступні у Продовольчій та сільськогосподарській організації ООН (ФАО).

    Завдання, яке ставить перед собою людина, яка завантажила набір даних, проста: з’ясувати, чи впливають і як харчові звички на статистику COVID-19. Здорові харчові звички дійсно дають країнам перевагу у боротьбі з коронавірусом?

    Єдиним недоліком цього набору даних є те, що він досить малий в плані ML. Подібні проблеми вимагають тисяч і більше записів для отримання більш точних результатів. Однак, оскільки в усьому світі не існує тисяч чи десятків тисяч країн, це є гарною відправною точкою для перевірки загальної гіпотези про наявність зв'язку між продуктами харчування та коронавірусом.

    Ми планували відповісти, якщо є характеристики, які безпосередньо впливають на відсоток смертей, спричинених COVID-19, для кожної країни. План передбачає два різні підходи:

    Алгоритм ML - Аналіз даних та виявлення характеристик, які показують кореляцію з кількістю смертей. На їх основі створено та контролюється навчання моделі машинного навчання, яка може прогнозувати відсоток смертей на основі цих характеристик. Якщо прогнози досить точні, це означає, що між ними існує кореляція.

  • Аналіз даних - Якщо ми підтвердимо, що існує кореляція, ми відсортуємо дані за відсотком смертності та проаналізуємо значення ключових стовпців, визначених для країн з найвищим та найнижчим рівнем смертності, щоб побачити, чи зможемо ми зробити інші висновки. Про це детально йдеться в роботі, опублікованій на платформі Kaggle, яку ви можете знайти в кінці цієї статті.
  • нашими

    Наближення до моделі машинного навчання

    Першим кроком було вивчення набору даних та аналіз наших даних. Python був нашим першим вибором мови програмування, оскільки пакети numpy та pandas пропонують безліч «нестандартних» інструментів для перегляду та обробки даних.

    Проаналізувавши, скільки записів є, яке мінімальне, максимальне значення, середнє значення та відсоток квантилів, ми сформували уявлення про узгодженість даних.

    Однак ми виявили кілька аномалій:

    Дані не заповнені на 100%. У деяких рядках відсутні значення для стовпців Ожиріння, Підтверджене, Смерть, Відновлений та Активний

  • Для кількох стовпців максимальне значення здається дуже високим у порівнянні з іншими квантилями, що говорить про те, що для цих стовпців ми маємо деякі ненормальні значення. Наприклад, для стовпця «Фрукти - без вина» ми маємо максимальне значення 9,7. Враховуючи квантові значення та середні значення, стандартні значення, ми очікували б, що максимальне значення буде приблизно 3,0. Ця проблема також виникає для стовпців "Олійні культури", "Бобові культури", "Спеції", "Крохмалисті корені" та "Населення".
  • Потім ми приступили до створення матриці, яка описує пряму математичну кореляцію між усіма стовпцями об’єктів. Незважаючи на те, що немає суттєво корельованої ознаки, ми виявили чотири ознаки, які мають пряму кореляцію зі стовпцем Смертей (значення 1 означає сильну кореляцію):

    Ожиріння = 0,32

    Зернові культури без пива = - 0,28

    Приклади: ячмінь, крупи, кукурудза, просо, овес, рис та продукти

    Продукти тваринного походження = 0,26

    Продукт тваринного походження - це будь-який похідний матеріал

    Приклади: яловичина, масло, вершки тощо.

    Овочеві продукти = - 0,26

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

    (без вина), арахісове масло, арахіс (очищений), мед тощо.

    Для цих значень ми розробили гістограму для перегляду розподілу даних та перевірки нормального чи нахиленого. Продукти тваринного походження, ожиріння та рослинні продукти мають приблизно нормальний розподіл, але зернові - без пива, навпаки, мають похилий розподіл (Рисунок 3).

    Далі ми прагнули нормалізувати дані, щоб отримати нормальний розподіл, і обробили записи з відсутніми значеннями. Ми виявили дев'ять записів, які не мали повної інформації у кількох стовпцях, зокрема, не мали значень у стовпці Смертей. Оскільки ця графа є важливою для нашого дослідження, ми вирішили виключити записи з відсутньою інформацією.

    Щоб вирішити похилий розподіл зернових культур, за винятком пива, ми будемо застосовувати методи масштабування Z-Score та Log під час створення моделі. Переглядаючи результати операції масштабування, ми бачимо, що дані будуть розподілятися правильно, тим самим покращуючи ефективність моделі.

    Одночасно ми оновимо значення стовпця Смертей, щоб вивести його у більш відповідний діапазон, ніж функції.

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

    Ми обрали класичну модель лінійної регресії та реалізували її за допомогою TensorFlow та Keras. RootMeanSquaredError використовувався як основне значення для оцінки продуктивності моделі.

    Ми помітили, що для зближення моделі достатньо 64 епох із набором з 12 елементів. Зараз у нас є функціональна модель, яка використовує вихідні продукти для продуктів тваринного походження, зерна, крім пива, ожиріння та рослинних продуктів, для прогнозування смертності від коронавірусу.

    Рис.5 - Прогрес RMSE під час навчання моделі

    Висновок та наступні кроки

    Перший висновок, який ми можемо зробити: між цими характеристиками та передбачуваним результатом - відсоток смертей - чітко існує зв’язок.

    Зернові культури, крім пива та рослинних продуктів, також мають пряму негативну кореляцію. Збільшення значень цих характеристик зменшує відсоток смертей. З іншого боку, збільшення продуктів тваринного походження, яке не супроводжується продуктом рослинного походження, має пряму позитивну кореляцію, що призводить до більшого відсотка смертей.

    Іншими словами, країни з більшим відсотком населення, що споживає зернові та рослинні продукти, як правило, мають менший відсоток смертей, спричинених коронавірусом.

    Хоча це виняткове відкриття, воно потребує вдосконалення. Наступними кроками буде інспекція кожної підкатегорії цих основних характеристик та більш точне визначення типу їжі, що має найбільший вплив. Завданням буде зібрати дані на такому рівні деталізації, оскільки модель ML готова до повторного використання з тими ж основними кроками, що описані вище.

    Ви можете дізнатись більше подробиць про код, який використовувався для досягнення цих висновків.