Годовая сезонность всего с 12 ежемесячными баллами приводит к разным результатам из-за зависимостей версий.Python

Программы на Python
Ответить
Anonymous
 Годовая сезонность всего с 12 ежемесячными баллами приводит к разным результатам из-за зависимостей версий.

Сообщение Anonymous »

Я поднял этот вопрос в разделе «Github Пророка» (https://github.com/facebook/prophet/issues/2709)
Наблюдение
При настройке Пророка с помощью Yearly_ Seasonality=True ровно на 12 ежемесячных наблюдениях я заметил, что модель становится недостаточно идентифицированной (ожидаемой). В результате разные версии Prophet/cmdstanpy могут сходиться к очень разным разложениям тренда и сезонности, даже если код и данные идентичны.
В моем случае одна среда экстраполирует разумные будущие значения, а другая выдает очень большие отрицательные прогнозы, несмотря на то, что все обучающие наблюдения строго положительны. Проверка компонентов модели показывает, что эти различия возникают из-за того, как в этой конфигурации согласуются тренд и годовая сезонность.
На данный момент не существует предупреждений или мер безопасности при включении годовой сезонности только с одним годовым циклом данных, что может привести к нестабильным и зависящим от версии прогнозам в производственных настройках.

Среда
Azure ML Студия:
  • prophet: 1.1.4
  • cmdstanpy: 1.2.5
Локальный (VSCode):
  • prophet: 1.2.1
  • cmdstanpy: 1.3.0
Минимальный воспроизводимый пример

Код: Выделить всё

import pandas as pd
from prophet import Prophet

y = [
361.0602049, 33880.23, 29431.62, 17337.68, 208032.5, 515776.5,
848975.0, 837513.2, 1237904.0, 2246456.0, 1982927.0, 2421611.0
]

df = pd.DataFrame({
"ds": pd.date_range("2025-01-01", periods=12, freq="MS"),
"y": y
})

m = Prophet(
yearly_seasonality=True,
weekly_seasonality=False,
daily_seasonality=False
)

m.fit(df)

future = m.make_future_dataframe(periods=3, freq="MS")
fcst = m.predict(future)

print(fcst[["ds", "trend", "yearly", "yhat"]])
Наблюдаемое поведение
Azure (пророк 1.1.4)

Код: Выделить всё

2026-01 trend = -5.36M, yearly = -7.08M → yhat = -12.4M
Тенденция становится сильно отрицательной, прогнозы становятся сильно отрицательными (например, от -10M до -12M)
Локально (пророк 1.2.1)

Код: Выделить всё

2026-01 trend = +2.25M, yearly = +0.67M → yhat = +2.92M
То же самое наблюдение и для других будущих месяцев.

Вопрос/запрос
Может ли кто-нибудь поделиться передовым опытом решения этого случая?

Можно ли добавить предупреждение или защиту при включении годовой сезонности только с одним годовым циклом данных?

Подробнее здесь: https://stackoverflow.com/questions/798 ... lts-due-to
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»