Можно ли измерить и нанести на карту области, уязвимые для COVID-19?

Можем ли мы сделать вывод о важных факторах риска для здоровья населения в связи с COVID-19 на основе устаревших данных? Во многих странах данные переписей и других обследований могут быть неполными или устаревшими. Эта задача состоит в том, чтобы разработать доказательство концепции того, как машинное обучение может помочь правительствам более точно отображать риски COVID-19 в 2020 году с использованием старых данных, не требуя нового дорогостоящего, рискованного и трудоемкого исследования на местах.

Контекст этой публикации сосредоточен на переписи 2011 года, которая дает нам ценную информацию для определения того, кто может быть наиболее уязвим для COVID-19 в Южной Африке. Однако данным уже почти 10 лет, и мы ожидаем, что за это время некоторые ключевые показатели изменятся. Составление современной карты, показывающей, где находятся наиболее уязвимые слои населения, станет ключевым шагом в борьбе с этой болезнью. Подобные усилия по картированию требуют объединения множества различных входных данных и инструментов. В этой статье мы начнем с малого. Можем ли мы вывести важные факторы риска из более доступных данных?

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

О данных

Южная Африка разделена на 4392 района. Мы объединим целевые индикаторы (домохозяйства с 5+ членами и без воды на территории) и другие прогностические переменные из переписи по всем домохозяйствам в каждом районе, чтобы получить агрегированное значение каждого индикатора для каждого района.

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

Примечание. Часть описания может показаться скучной, так как она длинная, вы можете перейти к следующему разделу.

  1. total_households: Общее количество домохозяйств в приходе.
  2. total_individuals: Общее количество людей в отделении.
  3. target_pct_vunerable: Процент крупных домохозяйств, которым приходится выходить из дома за водой.
  4. dw_00: Процент жилищ типа: Дом на отдельном стоянке или во дворе или на ферме.
  5. dw_01: Процент жилищ типа: Традиционные жилища из традиционных материалов.
  6. dw_02: Процент жилых помещений типа: Квартира или квартира в многоквартирном доме.
  7. dw_03: Доля жилых помещений типа: Блоковый дом в комплексе.
  8. dw_04: Процент жилья типа: Таунхаус (двухквартирный дом в комплексе).
  9. dw_05: Доля жилых помещений типа: Парный дом.
  10. dw_06: Процент жилья типа: Дом во дворе.
  11. dw_07: Доля жилищ типа: Неформальное жилище (лачуга на заднем дворе).
  12. dw_08: Процент жилищ типа: неформальное жилище (лачуга не на заднем дворе, например, в неформальном/скваттерном поселении или на ферме).
  13. dw_09: Процент жилых помещений типа: Комната/квартира на участке или более просторное жилье/помещения для прислуги/квартира для бабушки.
  14. dw_10: Процент жилищ типа: караван/палатка.
  15. dw_11: Процент жилых помещений типа: Другое.
  16. dw_12: Доля жилых помещений типа: Не указано.
  17. dw_13: Процент жилых помещений типа: Не применимо.
  18. psa_00: Процентное соотношение текущей посещаемости школы: Да
  19. psa_01: Процентное соотношение текущей посещаемости школы: Нет
  20. psa_02: Посещаемость школы в настоящее время указана в процентах как: Не знаю
  21. psa_03: Процент посещаемости школы в настоящее время указан как: Не указано
  22. psa_04: Посещаемость школы в настоящее время указана в процентах как: Неприменимо.
  23. stv_00: Процент домохозяйств со спутниковым телевидением: Да
  24. stv_01: Процент домохозяйств со спутниковым телевидением: Нет
  25. car_00: Процент домохозяйств с автомобилем: Да
  26. car_01: Процент домохозяйств с автомобилем: Нет
  27. lln_00: Процент владельцев стационарных телефонов: Да
  28. lln_01: Процент владельцев стационарных телефонов: Нет
  29. lan_00: язык процентного перечисления как: африкаанс.
  30. lan_01: Язык списка процентов: английский
  31. lan_02: Язык перечисления процентов как: IsiNdebele
  32. lan_03: Язык перечисления в процентах как: IsiXhosa
  33. lan_04: Язык перечисления процентов как: IsiZulu
  34. lan_05: Язык перечисления процентов как: Сепеди
  35. lan_06: Язык перечисления в процентах как: сесото
  36. lan_07: Язык перечисления в процентах как: сетсвана
  37. lan_08: язык в процентах как: язык жестов
  38. lan_09: Язык перечисления в процентах как: SiSwati
  39. lan_10: Язык перечисления процентов как: Tshivenda
  40. lan_11: Язык перечисления процентов как: Xitsonga
  41. lan_12: Язык перечисления в процентах как: Другое
  42. lan_13: Язык перечисления в процентах как: Не указано
  43. lan_14: Язык перечисления в процентах как: Неприменимо
  44. pg_00: Процент в группе населения: черный африканец
  45. pg_01: Процент в группе населения: цветные
  46. pg_02: Процент в группе населения: индийцы или азиаты.
  47. pg_03: Процент в группе населения: белые
  48. pg_04: Процент в группе населения: Другое
  49. lgt_00: Процент использования электричества для освещения

Почему Даск?

Целью каждой компьютерной программы является оптимизация, поэтому Pandas, одна из самых популярных и любимых библиотек обработки и анализа данных, имеет ограничения, когда дело доходит до больших данных, из-за ограничений алгоритма и локальной памяти. Однако Dask — это свободно доступная библиотека Python с открытым исходным кодом. Dask предоставляет способы более естественного масштабирования рабочих процессов Pandas, Scikit-Learn и Numpy с минимальным переписыванием.

Какой алгоритм машинного обучения использовать?

Единственный способ найти наилучший алгоритм для данной задачи — попробовать и протестировать все алгоритмы.

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

Что такое КАТБУСТ?

CatBoost — это алгоритм повышения градиента в деревьях решений. Он разработан исследователями и инженерами Яндекса и используется для поиска, рекомендательных систем, персонального помощника, беспилотных автомобилей, предсказания погоды и многих других задач в Яндексе и других компаниях, включая CERN, Cloudflare, Careem Taxi. Он находится в открытом доступе и может быть использован кем угодно.

Почему КАТБУСТ?

Библиотека сфокусирована на лазере

  1. Отличное качество без настройки параметров. Сократите время, затрачиваемое на настройку параметров, поскольку CatBoost обеспечивает отличные результаты с параметрами по умолчанию.
  2. Повышенная точность. Уменьшите переобучение при построении моделей с помощью новой схемы повышения градиента.
  3. Быстрые прогнозы: быстро и эффективно применяйте обученную модель даже к задачам с критическими задержками с помощью средства применения модели CatBoost.
  4. Быстрая и масштабируемая версия GPU. Обучите свою модель быстрой реализации алгоритма повышения градиента для GPU. Используйте конфигурацию с несколькими картами для больших наборов данных.
  5. Поддержка категорийных функций. Улучшите результаты тренировок с помощью CatBoost, который позволяет использовать нечисловые факторы вместо предварительной обработки данных или затрат времени и усилий на преобразование их в числа.

Установка CATBOOST

Установка поддерживается только 64-битной версией Python. В основном он имеет две зависимости Numpy и Six. Его можно установить двумя популярными менеджерами пакетов Python — Conda и PyPI.

Установка Конды:

conda install catboost

Установка PyPI

pip install catboost 

Обе версии CatBoost имеют встроенную поддержку GPU.

Импорт пакетов

Здесь мы начинаем с импорта всех библиотек Python, которые нам понадобятся для этого проекта.

  • warning : Предупреждение об отключении устаревших функций в пакетах Python.
  • numpy : Включает научные вычисления.
  • dask.dataframe& pandas: библиотеки Dask и pandas для обработки и анализа данных. Dask обеспечивает масштабируемость для Pandas .
  • CatBoostRegressor : Использован алгоритм машинного обучения.
  • mean_square_error:`Показатели производительности, используемые для оценки модели

Чтение и получение обзора наборов данных

Предварительная обработка данных и разработка функций

Отмечается, что наборы данных «обучения» состоят из 50 признаков, и мы дали им исчерпывающее описание. Замечено, что некоторые функции являются избыточными, их удаление было бы идеальным для процесса построения модели.

Разработка функций, которая представляет собой процесс использования знаний предметной области для извлечения функций из необработанных данных с помощью методов интеллектуального анализа данных. На основе знаний предметной области были созданы три объекта rich, poor и household_size соответственно, а кластерный анализ total_household и total_individual был использован для разработки объекта cluster.

Чтобы сохранить коды СУХИМИ (не повторяйтесь), данные train и test были объединены, поэтому этапы проектирования функций будут влиять на оба набора данных. Теперь мы завершили операцию разработки признаков, в идеале было бы разделить объединенные данные обратно на train и test.

Преобразование данных

Если масштабирование функций не выполняется, алгоритм машинного обучения имеет тенденцию взвешивать более высокие значения, более высокие и рассматривать меньшие значения как более низкие значения, независимо от единицы измерения значений. Здесь мы будем масштабировать функции с большими значениями с помощью логарифмических преобразований. Затем мы разбиваем обучающие данные на матрицу признаков — x и цель — y.

Можно заметить, что в данных отсутствуют пропущенные значения.

Еще одним полезным преобразованием, которое улучшит модель, будет приближение всех значений float к 2 знакам после запятой.

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

Модель catboost создается с уже настроенными гиперпараметрами. Настройка гиперпараметров — очень затратная по времени процедура, и в статье она была пропущена. Чтобы избежать переобучения, для перекрестной проверки использовалось 15 кратностей.

Оценка модели и прогноз

Прогнозы модели имели показатель RMSE 5.800504378972998. Более низкие значения RMSE указывают на лучшее соответствие, и модель выглядит хорошо! Наконец, модель применяется к данным, которые она не видела, для создания файла отправки.

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