Быстрое прогнозирование с помощью Facebook Prophet — менее 10 строк кода

Прогнозирование для программистов Python и R

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

Но это также и недостаток пакета, он не подходит для начинающих. Кто хочет построить машину только для того, чтобы ездить на ней по дорогам?

Затем появился Facebook Prophet.

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

Пакет очень интуитивно понятен в использовании и особенно эффективен для бизнес-прогнозирования. Вы даже можете указать выходные, особые дни и события (например, Суперкубок), которые влияют на деловую активность.

Вишенка на торте, Prophet доступен как на языке программирования Python, так и на языке R!

Давайте сделаем быструю демонстрацию.

1. Установить пакет

Я делаю это на Python, так что все, что вам нужно, это пакет pandas для манипулирования данными.

И конечно же Prophet.

# improt libraries
import pandas as pd
from fbprophet import Prophet

2. Импорт и форматирование данных

Набор данных, который я собираюсь использовать, представляет собой временной ряд, состоящий из дневной минимальной температуры, зарегистрированной за 10 лет между 1981 и 1990 годами.

# import data
df = pd.read_csv("https://bit.ly/3hJwIm0")
# check out first few rows
df.head()

Как видите, в datarame всего два столбца: один для измерения времени, а другой для наблюдений.

Необходимо некоторое форматирование данных. Prophet требует, чтобы столбец даты и времени назывался «ds», а столбец наблюдения — «y».

Переименуем оба столбца.

# data formating
df = df.rename(columns = {"Date": "ds", "Temp": "y"})

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

Подобно алгоритмам Scikit Learn, Prophet следует простому рабочему процессу создать экземпляр → подогнать → предсказать для прогнозирования.

# instantiate model
m = Prophet()
# fit model to data
m.fit(df)

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

4. Прогнозирование

Теперь, когда у вас есть модель, вы готовы сделать прогноз.

Точно так же, как построение модели, прогнозирование также представляет собой двухстрочный код. В первой строке вы создаете пустой фрейм данных для хранения значений прогноза. Во второй строке вы передаете пустой кадр данных в модель, модель заполнит строки прогнозируемыми значениями.

# make a forecast dataframe 
future = m.make_future_dataframe(periods = 365)
# make a forecast
forecast = m.predict(future)

Вы закончили с прогнозированием, теперь вы можете проверить значения прогноза в кадре данных.

# check out forecast values
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

Названия столбцов интуитивно понятны —

  • ds: временные шаги прогноза;
  • yhat: прогнозные значения
  • yhat_lower и yhat_upper: доверительные интервалы

5. Заговор

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

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

# plot
fig1 = m.plot(forecast)

На этом рисунке ниже каждая черная точка представляет исходные наблюдения, темно-зеленая линия — модель прогноза, а светло-зеленая линия — доверительные интервалы.

Там! Вы сделали настоящую модель прогнозирования всего за 10 строк кода!

Что дальше?

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

В качестве следующего шага вы можете изучить другие функции — у них есть очень простая документация. Я бы особенно посоветовал людям изучить, как особые дни и события влияют на прогнозирование (конечно, не температуру!, а деловую активность).

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

Не стесняйтесь подписываться на меня в Twitter или LinkedIn.