Мы построили модель предиктора риска для психических воздействий из-за COVID-19, и в этой статье мы собираемся описать наше путешествие в Сингапур в Омдене.

Авторы: Анкур Шукла и Манел Бельхай

Для визуального представления результатов ознакомьтесь с нашей панелью Tableau.

Постановка задачи

Как идентифицировать и прогнозировать сообщения/твиты/видео в социальных сетях от пользователей с высоким риском проблем с психическим здоровьем.

Для начала нам нужно оценить эти два вопроса, чтобы провести наше исследование:

  • Какие данные нам нужны?
  • Как мы можем получить к нему доступ?

Мы уже знали, что наша проблема связана с воздействием коронавируса на психическое здоровье в Сингапуре, поэтому это был отличный старт, который помог нам сузить круг поиска. Но что именно собирать?

Источники данных

Поскольку мы прогнозировали последствия на основе твитов, постов и видео отдельных пользователей на социальной платформе, мы выбрали три важных для нас источника данных:

  • Твиттер
  • Реддит
  • YouTube

Наша первая цель — оценить, оказывает ли Covid значительное воздействие на людей с самого начала.

Наша вторая цель — собрать значимые данные об этих воздействиях, чтобы изучить новые идеи о том, как можно улучшить модели машинного обучения для прогнозирования рисков.

Мы решили использовать смешанный подход для сбора как количественных, так и качественных данных.

  • Количественные данные выражаются в цифрах и графиках и анализируются с помощью статистических методов.
  • Качественные данные выражаются словами и анализируются посредством интерпретаций и категорий.

Теперь о втором вопросе: когда аналитик/ученый данных хочет собрать какие-то данные за короткий период, первое, что нужно сделать, это Kaggle! Верно?

Как здорово, когда к данным можно получить такой же простой доступ, как в Kaggle? Сбор данных? Просто зайдите на Kaggle, найдите подходящий набор данных и загрузите его менее чем за 5 минут.

  • Подсказка: недостаточно использовать набор данных Kaggle.

После долгих поисков в Google мы решили собрать данные у третьих лиц, где нашли нужные нам данные.

Как мы парились в двух словах:

  • Изучите и изучите веб-страницу, чтобы найти маркеры HTML, связанные с нужной нам информацией.
  • Используйте библиотеки snscrape, twint -Python для очистки твитов твитов.
  • Используйте API YouTube для очистки комментариев
  • Манипулируем очищенными данными, чтобы получить их в нужном нам виде. (формат CSV)

Примечание. Парсинг и подготовка данных выполнялись разными целевыми группами по парсингу для каждого из источников данных. Каждая команда сотрудничала и предоставила очищенные данные из вышеупомянутых источников данных.

Методология

Выполняя прогнозирование рисков на уровне пользователя в отношении психических воздействий на основе различных функций социальных платформ в качестве источников данных, мы разработали следующие методологии машинного обучения для построения модели:

Обучение под наблюдениемМодель классификации

Почему мы используем модели классификации обучения с учителем вместо метода без учителя?

Алгоритм классификации обучения с учителем используется для прогнозирования вероятности целевой переменной. Природа целевой или зависимой переменной в этом случае является дихотомической, что означает, что будет только два возможных класса, поэтому будет ли ментальное воздействие на пользователя «Да» или «Нет».

Используемые инструменты и язык программирования:

  • Анаконда Навигатор
  • Блокнот Юпитера
  • питон
  • Google Колаб

Алгоритмы

  • Пикарет Авто ML
  • Логистическая регрессия

Что такое Пикаре?

Pycaret – это библиотека машинного обучения с открытым исходным кодом на языке Python с минимальным кодом, которая позволяет перейти от подготовки данных к развертыванию модели за считанные минуты в выбранной вами среде ноутбука.

Почему Pycaret и как он нам помог?

  • Повышенная производительность: Pycaret, будучи библиотекой с низким кодом, делает вас более продуктивным. Теперь, когда на кодирование уходит меньше времени, наша команда может больше сосредоточиться на бизнес-проблемах.
  • Простота в использовании: Pycaret — это простая и удобная в использовании библиотека машинного обучения, которая поможет вам проводить сквозные эксперименты по машинному обучению с меньшим количеством строк кода.
  • Готовность к бизнесу: Pycaret — это готовое к работе решение. Это позволяет нам быстро и эффективно создавать прототипы в выбранной нами среде ноутбука.

Логистическая регрессия

Логистическая регрессия является одним из наиболее распространенных, простых и более эффективных методов для задач бинарной и многоуровневой классификации. [Мы также использовали этот алгоритм, кроме подхода Пикаре, только для традиционного способа и чтобы увидеть различия результатов, если таковые имеются].

Построение модели

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

  • Модель, созданная для прогнозирования влияния пользователей с разных социальных платформ на психику из-за ситуации с коронавирусом, начиная с конца 2019 года.
  • В соответствии с моделью целевой переменной являются пользователи с негативными или очень негативными настроениями, содержащие все признаки covid, и прогнозируются ключевые слова для психического здоровья.
  • Модель была обучена и протестирована на текущих данных о пандемии, которые у нас есть из разных источников, и мы определили целевых пользователей.
  • Цель модели состоит в том, чтобы ее можно было использовать для будущих данных и посмотреть, будут ли пользователи влиять или нет на период после пандемии, и это поможет социальным организациям и неправительственным организациям выявлять и прогнозировать людей, которые пострадали психически, поэтому лучше можно оказать поддержку и помощь.

Важность функции

Что такое важность функции?

Важность функции — это метод присвоения оценок входным функциям в прогностической модели, который указывает относительную важность каждой функции при прогнозировании. Это помогает нам исключить второстепенные функции (переменные) и повысить общую точность и производительность модели классификации.

Как мы использовали важность функции для нашей модели?

Были рассмотрены важные функции, которые помогли нам построить точные модели. Ковид, психическое здоровье, актуальность и негатив были главными характеристиками. Позже при использовании pycaret мы оценили модель с хорошей точностью на невидимых данных.

Резюме и выводы из модели

  • Всего более 80 тысяч пользователей из Twitter, Reddit и Omdena.
  • Результаты - Из общего числа пользователей 80K+, Has_Mental_Impact -4720 пользователей
  • Точность модели обычно представляет собой долю истинных результатов (истинно положительных + истинно отрицательных) среди всех результатов.

Точность = (TP+TN)/(TP+FP+FN+TN)

Для нашей модели мы получили точность 100%, теоретически это означает, что наша модель эффективно предсказывает тестовые/невидимые данные. Причина идеального результата в том, что у нас нет ложноположительных и ложноотрицательных прогнозов.

В противоречии с приведенной выше теорией, оценка точности 1 (100%) с ограниченными данными вызвала несколько вопросов о данных, с которыми мы обучались, и о том, использовали бы мы достаточное количество или правильные предикторы, которые могут дать нам точность не идеальную, а на уровне как минимум мало реалистично.

Возможно, данные, которые мы использовали для обучения и тестирования, были хорошими, но недостаточными, чтобы внести разнообразие в предикторы. Например, что насчет того, если мы рассмотрим несколько предикторов, таких как возраст, пол и профессия пользователей, использующих социальные платформы, или любой другой важный столбец, который можно изучить и использовать для повышения эффективности части важности функции, и тогда он мог бы изменить значения для Истинные положительные и истинные отрицания, которые в конечном итоге повлияют на точность модели.

Проблема утечки данных

В нашей модели целевые результаты, которые мы пытаемся предсказать, каким-то образом кажутся уже существующими в наших данных поезда, а затем включаются в тестовые/невидимые данные, это то, что на языке науки о данных известно как утечка данных.

Обычно это приводит к ненадежным результатам прогнозов в реальном сценарии после развертывания модели.

Вероятные причины утечки данных в модели

  1. Включение целевой переменной в качестве функции каким-то образом разрушает нашу цель модели прогнозирования, поскольку она не будет отличаться от другого набора функций.
  2. Подарочные функции — это функции, которые предоставляют информацию о целевой переменной, и после того, как модель будет развернута в реальном сценарии, она будет недоступна. Некоторые из случаев бесплатной раздачи, объясненные нашей моделью:
  3. В нашей модели мы прогнозируем умственное воздействие на основе различных характеристик. Теперь предположим, что у нас есть функция, которая указывает на то, что пользователь уже проявляет признаки умственного воздействия помимо целевой переменной, тогда мы никогда не должны включать ее в качестве функции в обучающие данные. Если мы уже знаем, что пользователь оказал явное психологическое воздействие на основе этой конкретной функции, то нам может не потребоваться здесь прогностическая модель.
  4. Еще одним примером в нашей модели является модель обучения, основанная на текущих данных о пандемии. После развертывания модели мы должны оценить влияние на пользователей — скажем, время после пандемии, поскольку в этом случае включение функций, раскрывающих информацию о времени после пандемии, вызовет утечку. Таким образом, мы должны использовать только функции, которые могут быть доступны после развертывания модели и использования для будущих данных.

Как мы могли бы избежать проблемы с утечкой данных здесь?

  • В нашей модели мы использовали тот же набор данных для разделения на обучающие наборы, а затем использовали некоторый процент от него в качестве тестовых/невидимых данных, но было бы лучше включить проверочный набор данных. Это будет работать как сценарий реальной жизни, чтобы протестировать вашу модель и, наконец, подтвердить ее.
  • Во время EDA функции должны были быть исследованы на предмет высокой корреляции, поскольку это может привести к систематической ошибке в модели.
  • После обучения данные должны быть проверены на очень большие веса, потому что для утечки
  • Применение шагов предварительной обработки для изучения или очистки данных, таких как удаление выбросов, оценка пропущенных значений и т. д., должно выполняться отдельно для обучающих данных, а не для всего набора данных, если мы используем весь набор данных — произойдет утечка данных, и мы все знаем, что эти данные не будут свежими невидимыми данными для прогнозирования модели.

Развертывание и будущие усовершенствования

  • В будущем мы сможем использовать больше данных как до, так и после пандемии, а затем запустить модель для прогнозирования целевых пользователей.
  • Мы можем изучить дополнительные функции (например, текст в посте или любые другие столбцы с большим количеством ключевых слов о здоровье) для лучшей модели.
  • Используйте больше опыта медицинских работников, чтобы понять составляющие факторы психического здоровья и больше изучить данные.
  • Мы будем развертывать нашу модель в рабочей среде с помощью приложения flask.

Уроки выучены

  • Изучили возможности автоматического машинного обучения с помощью Pycaret.
  • Изучили модель с объединенными данными и отдельными источниками данных.
  • Важность признаков сыграла решающую роль в определении лучших предикторов, которые будут использоваться для построения модели.
  • Понять проблему утечки данных и извлечь уроки из того, как этого можно избежать, с самых начальных этапов предварительной обработки и исследовательского анализа данных.

Исходный код: GitHub

https://github.com/OmdenaAI/omdena-singapore-covid-health [Предиктор риска]

Профиль на гитхабе:

https://github.com/ankurshukla4589