
Мы построили модель предиктора риска для психических воздействий из-за 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%) с ограниченными данными вызвала несколько вопросов о данных, с которыми мы обучались, и о том, использовали бы мы достаточное количество или правильные предикторы, которые могут дать нам точность не идеальную, а на уровне как минимум мало реалистично.
Возможно, данные, которые мы использовали для обучения и тестирования, были хорошими, но недостаточными, чтобы внести разнообразие в предикторы. Например, что насчет того, если мы рассмотрим несколько предикторов, таких как возраст, пол и профессия пользователей, использующих социальные платформы, или любой другой важный столбец, который можно изучить и использовать для повышения эффективности части важности функции, и тогда он мог бы изменить значения для Истинные положительные и истинные отрицания, которые в конечном итоге повлияют на точность модели.
Проблема утечки данных
В нашей модели целевые результаты, которые мы пытаемся предсказать, каким-то образом кажутся уже существующими в наших данных поезда, а затем включаются в тестовые/невидимые данные, это то, что на языке науки о данных известно как утечка данных.
Обычно это приводит к ненадежным результатам прогнозов в реальном сценарии после развертывания модели.
Вероятные причины утечки данных в модели
- Включение целевой переменной в качестве функции каким-то образом разрушает нашу цель модели прогнозирования, поскольку она не будет отличаться от другого набора функций.
- Подарочные функции — это функции, которые предоставляют информацию о целевой переменной, и после того, как модель будет развернута в реальном сценарии, она будет недоступна. Некоторые из случаев бесплатной раздачи, объясненные нашей моделью:
- В нашей модели мы прогнозируем умственное воздействие на основе различных характеристик. Теперь предположим, что у нас есть функция, которая указывает на то, что пользователь уже проявляет признаки умственного воздействия помимо целевой переменной, тогда мы никогда не должны включать ее в качестве функции в обучающие данные. Если мы уже знаем, что пользователь оказал явное психологическое воздействие на основе этой конкретной функции, то нам может не потребоваться здесь прогностическая модель.
- Еще одним примером в нашей модели является модель обучения, основанная на текущих данных о пандемии. После развертывания модели мы должны оценить влияние на пользователей — скажем, время после пандемии, поскольку в этом случае включение функций, раскрывающих информацию о времени после пандемии, вызовет утечку. Таким образом, мы должны использовать только функции, которые могут быть доступны после развертывания модели и использования для будущих данных.
Как мы могли бы избежать проблемы с утечкой данных здесь?
- В нашей модели мы использовали тот же набор данных для разделения на обучающие наборы, а затем использовали некоторый процент от него в качестве тестовых/невидимых данных, но было бы лучше включить проверочный набор данных. Это будет работать как сценарий реальной жизни, чтобы протестировать вашу модель и, наконец, подтвердить ее.
- Во время EDA функции должны были быть исследованы на предмет высокой корреляции, поскольку это может привести к систематической ошибке в модели.
- После обучения данные должны быть проверены на очень большие веса, потому что для утечки
- Применение шагов предварительной обработки для изучения или очистки данных, таких как удаление выбросов, оценка пропущенных значений и т. д., должно выполняться отдельно для обучающих данных, а не для всего набора данных, если мы используем весь набор данных — произойдет утечка данных, и мы все знаем, что эти данные не будут свежими невидимыми данными для прогнозирования модели.
Развертывание и будущие усовершенствования
- В будущем мы сможем использовать больше данных как до, так и после пандемии, а затем запустить модель для прогнозирования целевых пользователей.
- Мы можем изучить дополнительные функции (например, текст в посте или любые другие столбцы с большим количеством ключевых слов о здоровье) для лучшей модели.
- Используйте больше опыта медицинских работников, чтобы понять составляющие факторы психического здоровья и больше изучить данные.
- Мы будем развертывать нашу модель в рабочей среде с помощью приложения flask.
Уроки выучены
- Изучили возможности автоматического машинного обучения с помощью Pycaret.
- Изучили модель с объединенными данными и отдельными источниками данных.
- Важность признаков сыграла решающую роль в определении лучших предикторов, которые будут использоваться для построения модели.
- Понять проблему утечки данных и извлечь уроки из того, как этого можно избежать, с самых начальных этапов предварительной обработки и исследовательского анализа данных.
Исходный код: GitHub
https://github.com/OmdenaAI/omdena-singapore-covid-health [Предиктор риска]
Профиль на гитхабе:
https://github.com/ankurshukla4589