Наблюдение
При настройке Пророка с помощью Yearly_ Seasonality=True ровно на 12 ежемесячных наблюдениях я заметил, что модель становится недостаточно идентифицированной (ожидаемой). В результате разные версии Prophet/cmdstanpy могут сходиться к очень разным разложениям тренда и сезонности, даже если код и данные идентичны.
В моем случае одна среда экстраполирует разумные будущие значения, а другая выдает очень большие отрицательные прогнозы, несмотря на то, что все обучающие наблюдения строго положительны. Проверка компонентов модели показывает, что эти различия возникают из-за того, как в этой конфигурации согласуются тренд и годовая сезонность.
На данный момент не существует предупреждений или мер безопасности при включении годовой сезонности только с одним годовым циклом данных, что может привести к нестабильным и зависящим от версии прогнозам в производственных настройках.
Среда
Azure ML Студия:
- prophet: 1.1.4
- cmdstanpy: 1.2.5
- 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Локально (пророк 1.2.1)
Код: Выделить всё
2026-01 trend = +2.25M, yearly = +0.67M → yhat = +2.92MВопрос/запрос
Может ли кто-нибудь поделиться передовым опытом решения этого случая?
Можно ли добавить предупреждение или защиту при включении годовой сезонности только с одним годовым циклом данных?
Подробнее здесь: https://stackoverflow.com/questions/798 ... lts-due-to
Мобильная версия