Добавить регрессор в Facebook Prophet

Вопрос или проблема

Я долго искал ответ на свой вопрос, но ничего не нашел. Поэтому надеюсь, вы сможете помочь.

Я ищу возможность добавить регрессор в свою модель Prophet в Python. Я знаю метод ‘model.add_regressor’, но он не решает мою проблему. Потому что я добавлю данные, которые я не знаю в будущем, а именно только в прошлом, в качестве регрессора. Я хочу предсказать 6 временных шагов (ежемесячные данные, то есть на 6 месяцев вперед).

Так что, знает ли кто-нибудь, как это решить?

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

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

Ответ или решение

Чтобы добавить регрессор в модель Facebook Prophet, используя данные из прошлого, вам необходимо учитывать несколько важных моментов. Посмотрим на алгоритмы, которые могут помочь вам предсказать значения на 6 временных отсчетов вперёд (то есть на 6 месяцев), используя информацию о регрессорах только за прошлые временные промежутки.

1. Основы работы с регрессорами в Prophet

Facebook Prophet – это инструмент для прогнозирования временных рядов, который позволяет настраивать модель с использованием регрессоров. Метод add_regressor позволяет добавить дополнительную информацию (регрессоры) к модели, что может значительно улучшить точность прогноза. Однако, как вы уже заметили, возникла проблема с использованием данных, которые известны только в прошлом.

2. Обработка регрессоров для будущих предсказаний

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

  • Использование исторических данных для создания дополнительных признаков: Вы можете использовать исторические данные для расчета дополнительных признаков (например, средних значений, скользящих средних и т.д.), которые могут дать пророческие сигналы о будущем.

  • Определение регрессора как временного сдвига: Если ваш регрессор относится к предыдущим временным интервалам (например, значение за предыдущий месяц), вы можете создать новый столбец в вашем наборе данных, который будет содержать это значение для соответствующего временного шага.

3. Простейший пример

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

import pandas as pd
from fbprophet import Prophet

# Загружаем данные
df = pd.read_csv('your_data.csv')

# Преобразуйте даты в формат datetime
df['ds'] = pd.to_datetime(df['date'])

# Создаем новые столбцы для статических регрессоров на основе исторических данных
df['regressor'] = df['advertising']  # предполагается, что рекламные расходы известны в прошлом

# Инициализация модели Prophet
model = Prophet()
model.add_regressor('regressor')

# Обучение модели
model.fit(df)

# Создаем dataframe для прогнозов
future = model.make_future_dataframe(periods=6, freq='M')

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

# Прогнозирование
forecast = model.predict(future)

# Показать результаты
model.plot(forecast)

4. Альтернативные методы

Если стратегия добавления регрессоров не даст хороших результатов, вы можете рассмотреть возможность создания отдельной модели для оценки будущих значений ваших регрессоров. Это можно сделать с использованием временных рядов, и результаты прогноза могут быть использованы как входные данные для вашей модели Prophet.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...