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

Поэтому я создал веб-интерфейс, используя AWS API Gateway и AWS Lambda для ввода новых опубликованных данных.

Данные из отправки формы преобразуются в CSV-файл, который загружается в AWS S3.

"event_day","weekday","cases","recoveries","deaths"
2020-04-29,"wednesday",549,148,9

Корзина S3 используется в качестве озера данных, поэтому AWS Athena можно использовать для запроса данных с использованием стандартного SQL. Событие загрузки CSV-файла в корзину s3 запускает рабочий процесс AWS Stepfunction, который:

  • Запускает задание сканера AWS Glue для создания раздела athena для недавно обновленного csv.
  • Обновление набора данных Spice на панели инструментов AWS Quicksight

Прогнозирование с помощью Facebook Prophet

Хотя прогнозирование аналитики ML было включено для новых случаев, я заметил, что алгоритм не был гибким с тенденциями неопределенности. Нашел пророк Facebook как удивительную модель для прогнозирования значений временных рядов, которую действительно легко интегрировать с моим набором данных. Пророку требуется DataFrame с двумя столбцами:

  • ds с типом datetime
  • y числовое значение, которое нужно предсказать
  • ширина интервала 0,90 (интервал неопределенности 90%)

Результат прогнозирования загружается в корзину s3, которая запускает ту же пошаговую функцию, описанную выше, для создания таблицы athena для быстрого анализа.

from io import StringIO
csv_buffer = StringIO()
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(14).to_csv(csv_buffer, index=False)
s3_client.upload(
  bucket, 'prediction/output.csv', csv_buffer.getvalue()
)

Встроенная информационная панель AWS Quicksight

Второй этап решения — визуальный анализ набора данных с помощью AWS Quicksight. Инсайты Quicksight ML также позволили прогнозировать случаи заболевания covid-19 на следующие дни и сравнивать прогноз с набором данных от Prophet.

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

Анализ Quicksight был сохранен в виде информационной панели, которая затем была встроена в html-страницу с помощью quicksight-embedded-sdk, как показано ниже:

За исключением последнего опубликованного числа новых случаев (462), которые отклоняются от ранее собранных данных (557, 561, 567…), предсказание пророка оказалось больше, а общая стоимость облака составила менее 2 долларов США.