(Эта статья написана для IoT Datathon 3.0 и подготовлена ​​группой «верхний выброс»: Chua Xin Ying, Koh Yen Sin, Yang Qian Yu, Dr Zeenathnisa D/O Mougammadou Aribou и Zhang YunJue. )

Что такое лихорадка денге

Лихорадка денге — это переносимое комарами заболевание, которое передается комарами Aedes, жизненный цикл которых зависит от температуры и осадков (рис. 1). В периоды высоких температур время откладки яиц комарами Aedes сокращается, что приводит к увеличению численности комаров Aedes. Кроме того, это инфекция, которая более распространена в городских районах. Будучи страной с тропическим климатом и мегаполисом, Сингапур на протяжении многих лет страдал от лихорадки денге. По состоянию на 28 декабря 2019 г. было зарегистрировано 15 999 случаев лихорадки денге, что в пять раз больше, чем в 2018 г. Распространенность продолжает расти.

Сообщается, что 61 кластер Денге является активным, как показано на рисунке 2.

Почему лихорадка денге является проблемой в Сингапуре

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

Предварительная обработка данных

Набор данных, предоставленный для задачи, включал количество случаев денге в неделю, дневную температуру и дневное количество осадков, зафиксированных метеостанциями, и годовую численность населения в середине года. Кроме того, среднемесячные данные относительной влажности были взяты из https://data.gov.sg/. На основе предоставленных данных были созданы следующие переменные, связанные с температурой и количеством осадков:

Поскольку большинство метеостанций не имели данных до 2010 г., данные, используемые для создания модели, начинаются с 2010 г. и далее. Данные о населении были интерполированы в еженедельные данные, и, поскольку данные о населении были собраны в середине года, данные, использованные для создания модели, заканчиваются в июне 2019 года. Среднемесячная относительная влажность также была интерполирована в недельные данные.

Набор данных был разделен на обучающий набор данных (с 2010 по 2016 год) и тестовый набор данных (с 2017 года по июнь 2019 года). Количество случаев денге нормализовали по следующей формуле:

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

Оценка моделей

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

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

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

Исследовательский анализ данных

На Рисунке 3 показана динамика числа случаев денге, средней температуры, среднего количества осадков, средней относительной влажности и численности населения с 2010 г. по июнь 2019 г. Для случаев денге было 4 пика с более чем 600 случаями денге. Как показано на рисунке 4, они произошли в следующие недели: 25-я неделя 2013 г. (842 случая), 27-я неделя 2014 г. (819 случаев), 3-я неделя 2016 г. (624 случая) и 28-я неделя 2019 г. (647 случаев). Для средней температуры он показывает циклический характер, несмотря на шум, в то время как для средней относительной влажности и среднего количества осадков он не обнаруживает какой-либо закономерности в их тренде. Для населения он показывает относительно линейный рост.

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

XGBoost

Используя набор данных, мы использовали алгоритм XGBoost для создания нашей модели, которая представляет собой метод ансамблевого обучения, использующий концепцию повышения и пакетирования. Бэггинг — это комбинация множества деревьев решений для получения точного и стабильного прогноза путем усреднения результатов всех деревьев решений (рис. 5). Его цель состоит в том, чтобы уменьшить дисперсию, а это означает, что прогноз будет согласованным, если обучающий набор данных используется для повторного создания другой модели.

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

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

С помощью функции XGBoost в Python генерируется важность функции, как показано на рисунке 7. Значения потерь при обучении (0,0453) и значения потерь при тестировании (0,0544) визуализируются, как показано ниже на рисунке 8. Поскольку оба значения близки, это означает, что маловероятно, что модель будет соответствовать обучающим данным. На рисунках 9 и 10 показан прогноз, полученный с использованием модели с обучающим и тестовым набором данных. Хотя использование алгоритма XGBoost позволяет прогнозировать пики в правильное время, похоже, что в более поздней части прогноза теста есть задержка. Это также подтверждается графиком корреляции задержек (задержка обучения и тестирования = 1) на рисунке 11.

Улучшение приведенной выше модели

Поскольку кажется, что приведенная выше модель имеет задержку для прогнозирования тестового набора данных, мы попытались вручную манипулировать доступными функциями, чтобы проверить, можем ли мы уменьшить задержку. Используя функцию xgb.train() в R, мы включаем в окончательную модель следующие функции:

Для дальнейшего уменьшения переобучения использовалась регуляризация L2, а скорость обучения составляла 0,03. Кроме того, мы попытались спрогнозировать разницу между текущими случаями денге и случаями денге через 8 недель, поскольку этот метод позволяет нам иметь более точный прогноз, тем более что распространение денге зависит от сезонности погоды. Позже разница добавляется обратно к текущим случаям денге, чтобы создать график обучения и тестового прогноза для легкой интерпретации.

На приведенном ниже рисунке показан график важности переменных, показывающий, что 5 наиболее важными переменными являются лихорадка денге/популяция, лихорадка денге/популяция за 1 неделю до этого, средняя относительная влажность, средняя максимальная температура, обнаруженная за 11–20 недель до этого, и лихорадка денге/популяция 4. за неделю до.

Значение потерь при обучении составляет 0,00148, а значение потерь при тестировании — 0,00460. Близость двух значений показывает, что модель вряд ли будет избыточной. Несмотря на то, что значение тестовых потерь немного выше, чем потери устойчивости, и рисунок 14 показывает, что прогноз не идеален, график показывает, что модель способна в определенной степени предсказать тенденцию к росту, в частности, в более поздней части теста. график предсказаний. Кроме того, корреляция задержки обучающего и тестового набора данных равна 0, что определяется функцией ccf() в R.

Оценка нашей окончательной модели

Одним из больших преимуществ использования древовидных моделей является то, что они выявляют важность признаков, а затем наши модели дополнительно ограничиваются признаками, которые наиболее важны для прогнозирования случаев лихорадки денге. Мы попытались использовать нейронные сети, чтобы ответить на этот вопрос прогнозирования, и, хотя нам удалось преодолеть потери устойчивости, прогноз по-прежнему имел запаздывающую корреляцию в 1–2 недели. Кроме того, нейронная сеть не может определить важность признаков, как в древовидных моделях. Поэтому мы решили продолжить работу с древовидной моделью.

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

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

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

(Примечание: в процессе мы разработали приложение с использованием этого алгоритма, чтобы визуализировать график переменной важности и модель. Оно создано с помощью RShiny и размещено на веб-сайте: https://koh- yen-sin131.shinyapps.io/XGBoost_dengue/. Загрузка результата может занять некоторое время, а функции, используемые во второй модели, уже включены по умолчанию. Еще одно приложение, использующее случайный лес, также было создано как график важности дисперсии и могут ли признаки создать достойную модель, можно ли создать их быстрее: https://koh-yen-sin131.shinyapps.io/random_forest_dengue/. Мы хотим показать, что выбор признаков — действительно нелегкий процесс.)