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

Facebook Prophet — мощный и простой в использовании инструмент для анализа временных рядов. Он предназначен для обработки широкого спектра данных временных рядов, включая ежедневные, еженедельные и ежемесячные данные, с несколькими факторами сезонности. Библиотека построена на основе Stan, вероятностного языка программирования для статистических выводов. Это позволяет fbprophet оценивать параметры с помощью байесовского вывода, что приводит к более точным прогнозам.

Начать работу с fbprophet очень просто. Первый шаг — установить библиотеку с помощью pip:

!pip install pystan #dependency
!pip install prophet

После установки мы можем импортировать библиотеку и загрузить наши данные. fbprophet требует, чтобы данные были в определенном формате с двумя столбцами с именами «ds» и «y». «ds» — это столбец даты, а «y» — столбец целевой переменной.

Рассмотрим пример прогнозирования количества авиапассажиров для конкретной авиакомпании. Мы можем загрузить данные с помощью библиотеки pandas:

Обратите внимание, что я получил этот набор данных из github Джейсона Браунли. Для тех из вас, кто не знает Джейсона Браунли, у него есть отличный блог, посвященный машинному обучению. Я свяжу его здесь, если кто-то захочет его проверить, потому что это отличный бесплатный ресурс, которым я так часто пользовался!

import pandas as pd
import matplotlib.pyplot as plt

# Load data
df = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv')

# Rename columns
df = df.rename(columns={'Month': 'ds', 'Passengers': 'y'})

# Convert ds column to datetime format
df['ds'] = pd.to_datetime(df['ds'])

Мы загрузили данные и переименовали столбцы, чтобы они соответствовали требуемому формату для fbprophet. Мы также преобразовали столбец «ds» в формат даты и времени. Следующим шагом является визуализация данных, чтобы понять их тенденцию и сезонность.

# Plot data
plt.plot(df['ds'], df['y'])
plt.xlabel('Date')
plt.ylabel('Passengers')
plt.title('Airline Passengers')
plt.show()

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

from fbprophet import Prophet

# Create model
model = Prophet()

# Fit model
model.fit(df)

# Create future dataframe for forecasting
future = model.make_future_dataframe(periods=12, freq='MS')

# Make predictions
forecast = model.predict(future)

# Plot forecast
model.plot(forecast)
plt.xlabel('Date')
plt.ylabel('Passengers')
plt.title('Airline Passengers')
plt.show()

Приведенный выше код создает объект модели, подгоняет модель к нашим данным и генерирует будущий кадр данных для прогнозирования. Мы установили периоды на 12 и частоту на «МС», чтобы прогнозировать данные на следующий год. Модель предсказывает будущие значения «у» на основе тенденции и сезонности в исторических данных.

Наконец, мы строим прогноз, используя метод графика, и визуализируем результаты.

Facebook Prophet — мощный инструмент для анализа временных рядов и прогнозирования. Это позволяет нам быстро и точно строить модели, предоставляя ценную информацию о будущих тенденциях наших данных. Следуя простым шагам, описанным в этой статье, вы сможете создать собственную модель временных рядов и начать уверенно прогнозировать. Удачного моделирования!