В течение последних нескольких недель мне было любопытно посмотреть, когда, вероятно, кривая новых случаев 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 долларов США.