Одна из вещей, которая так заинтересовала меня в науке о данных, была идея, что будущее можно предсказать с помощью машин, запрограммированных с данными! Это было так увлекательно для меня, и, конечно же, когда я начал изучать науку о данных, стало понятно, что это возможно. Почему? Потому что в науке о данных, когда есть разумный паттерн, его можно использовать для определения результатов. Регрессия временных рядов - важное приложение в машинном обучении, которое широко используется во многих отраслях. Возможность извлекать наблюдения из исторических данных и обучать машину с помощью этих наблюдений, чтобы машина могла предсказывать будущие наблюдения, - это то, что делает регрессию временных рядов интересной, но также и полезной!

Если вы читали любую из моих предыдущих статей, вы знаете о моей глубокой страсти к использованию ИИ для анализа основных экономических и социальных проблем в Африке. Возможно, нет более благородного использования цифровых технологий, чем когда они используются для пропаганды перемен. Однако на этот раз я решил проанализировать проблему, с которой весь мир столкнулся в последние пару месяцев, и это вирус COVID-19. Если вы когда-либо работали с каким-либо набором данных COVID-19, вам, скорее всего, приходилось работать с данными временных рядов. В прошлом специалистам по обработке данных приходилось использовать различные методы кодирования или рекуррентные нейронные сети для работы с данными временных рядов. Ничто из этого не ужасно, за исключением того, что данные временных рядов с однократным горячим кодированием могут быть дорогостоящими в вычислительном отношении, особенно когда ваш набор данных большой, а нейронные сети похожи на черные ящики (их результаты могут быть трудно интерпретировать).

Именно здесь на помощь приходит sktime и спасает положение. Sktime - это недавно выпущенный набор инструментов машинного обучения Python для временных рядов с унифицированным интерфейсом для множества задач обучения. В настоящее время он поддерживает прогнозирование, регрессию временных рядов и классификацию. Хотя он поставляется с алгоритмами, предназначенными для прогнозирования временных рядов, он также совместим с моделями научного обучения. Так что давай посмотрим, на что способен этот плохой мальчик! Набор данных, используемый для этого проекта, представляет собой ежедневно регистрируемые случаи COVID-19 в Нигерии с 28 февраля по 20 июля, и его можно скачать здесь. А не ___ ли нам?

После небольшой очистки данных наш набор данных готов к использованию, и мы можем установить sktime с помощью команды pip install. Мы будем использовать ReducedRegressionForecaster, который основан на табличной регрессии. Приведенная регрессия просто сводит задачу прогнозирования (экстраполяции) временных рядов к простым задачам регрессии и объединяет уникальные решения каждой задачи регрессии (интерполяции) в решение исходной проблемы с использованием скользящего окна. Прежде чем мы начнем строить нашу модель, нам нужно разделить данные на данные для обучения и тестирования, а затем установить горизонт прогнозирования, то есть период, на который вы прогнозируете. В нашем случае горизонтом прогнозирования будет период, охватываемый данными тестирования.

Метод temporal_train_test_split разбивает обучающие данные без опасности утечки данных в одной строке кода! Довольно хорошо по сравнению с тем, что вам пришлось бы делать в противном случае. По умолчанию в методе используется размер теста 36 точек, где каждая точка времени представляет день в нашем случае, а именно с 15 июня по 20 июля. Другими словами, мы будем пытаться делать прогнозы на этот период. Таким образом, горизонт прогнозирования определяется как массив целых чисел от 1 до 36 с использованием размера данных тестирования в качестве ориентира. Как упоминалось ранее, sktime совместим с моделями обучения sci-kit, поэтому все, что нам нужно сделать, это определить стандартную модель RandomForestRegression и ввести ее в модель ReducedRegressionForecaster. Затем будет использоваться определенная длина скользящего окна и соответствовать обучающим данным. После подбора модель может прогнозировать, используя горизонт прогнозирования.

Как всегда, вы не можете дочитать так далеко, не получив вознаграждения за свои усилия, и я знаю, что вам нужно! Хорошая шутка о Python!

Теперь, когда вам это понравилось! Поехали! Вы, наверное, заметили smape_loss в этом фрагменте кода раньше. Это означает симметричную среднюю абсолютную ошибку в процентах. Он используется для количественной оценки точности наших прогнозов, и чем он ниже, тем выше точность. Имея это в виду, вы можете видеть, что наши прогнозы хороши, и, следовательно, наша модель работает хорошо. Давайте визуализируем наши обучающие данные, данные тестирования и прогнозы, чтобы получить иную картину производительности нашей модели:

Мы видим, что наша модель остается достаточно точной, прогнозируя среднее количество случаев COVID-19 на горизонте прогнозирования. Итак, поехали! С помощью коротких строк кода sktime может сделать работу с данными временных рядов приятной! Вы можете узнать больше о наборе инструментов sktime здесь: https://sktime.org/index.html.

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

Если вы дочитали до этого места, вы просто великолепны! Пожалуйста, хлопните в ладоши, если вам понравилось, и посмотрите мой код для этого проекта здесь: https://www.kaggle.com/chizzi25/data-science-project-3-covid-19-forecasting-ng?scriptVersionId= 39772568 # Очистка-исследование данных .

Вы также можете подписаться на меня в Medium и связаться со мной в LinkedIn. Спасибо за чтение! :)