
이번에는 시계열 예측(Time Series Forecasting) 모델 중 라이브러리 형태로 쉽게 구현 가능하면서도 효과적인
Prophet
모델에 대해서 알아보겠습니다.
Prophet은 (구) Facebook ( 현: Meta) 에서 만든 시계열 예측 모형입니다.

[위 모델은 논문 "Forecasting at scale(2017, Tayloer et al.)"을 통해 공개되었습니다.]
1. Prophet 모델
- Prophet은 Bayesian 구조 시계열(Bayesian Structural Time Series, BSTS) 모델을 기반으로 한 추세(Trend), 계절성(Seasonality), 공휴일 효과(Holiday Effects)를 결합하여 예측한 모델입니다.
- Prophet의 경우, ARIMA / ETS / LSTM 등의 시계열 예측 모델들과 비교했을 때,
* 해석의 직관성
* 자동화된 튜닝 기능
* 불규칙한 데이터에도 강건함
이라는 특징을 가지고 있는 유용한 모델입니다.
1.1 Prophet 모델의 기본 구성
Prophet이 예측하는 값인 y(t)는 다음과 같은 형태로 구성되어 있습니다.

즉, Prophet은 Trend, Seasonality, Holiday Effects를 분해하여 각각의 영향을 독립적으로 분석한 후 최종 예측값을 계산하는 모델입니다.
1.2 추세(Trend) 모델
Prophet은 Non-linear Growth Model을 사용해 장기적인 추세(Trend)를 학습하는데요
이때 1) Linear Growth와 2) Logisitic Growth, 이 두 가지 중 하나를 선택해서 Prophet 모델에 Trend를 반영합니다.
1) Linear Growth
* piecewise linear model을 활용하는데요 이는 아래와 같습니다.

* 이를 활용했을 때는 단순히 선형적으로 모델이 시간이 지남에 따라 성장하는 경향성을 의미합니다. 하지만 기업의 매출, 이익, 성장률 등과 같은 데이터는 시간이 지남에 따라 한계에 봉착하기에 이와 같은 모델을 많이 사용하지는 않습니다.
2) Logistic Growth
* Logistic 함수(Sigmoid 함수)에 기반한 장기 Trend를 반영하는 모델입니다. 이때 C(Capacity, 한계값)을 설정해서 비선형적인 성장 패턴을 반영합니다.

1.3 계절성(Seasonality) 모델
* Prophet은 주간, 월간, 연간 주기를 포함하는 Fourier series를 사용해 계절성(Seasonality)을 모델링합니다.

1.4 공휴일 효과(Holiday Effects)
* 또한, 특정한 이벤트(블랙프라이데이, 명절 등)로 인해 발생하는 매출 변동을 반영하는 모형을 활용합니다.

1.5 불확실성 모델링 (Uncertainty Intervals)
* Prophet library는 단순히 예측값만 제공하는 것이 아닌 신뢰 구간을 활용한 불확실성을 손쉽게 계산해주고 이를 시각화 해줍니다.

1.6 Bayesian 접근을 활용한 모델 구성
* Prophet은 Bayesian 모델을 기반으로 하기에, 사전확률(Prior Probability)를 적용해 모델을 개선할 수 있습니다.
* 아래는 Library를 기반으로 모델의 Prior 를 조정하는 예시입니다.
(다음 포스팅에서 실제 구현을 선보이도록 하겠습니다)

2. Prophet과 다른 시계열 예측 모델의 비교
- 시계열 예측에서 굉장히 많은 다른 모델들이 있지만 그 중에서 가장 기본적인 모델인 ARIMA와 LSTM과 비교해서 Prophet 모델의 특성을 정리해보겠습니다.

- 위를 요약해보면
* ARIMA는 선형 패턴에 적합하지만, 복잡한 계절성이나 이벤트 반영이 어렵고
* LSTM은 비선형 패턴에 우수하짐나, 대량의 데이터가 필요하고 해석이 어렵다는 점이 있습니다.
* 이에 반해, Prophet은 적은 데이터로도 Trend + Seasonality + Event(Holiday, ..)를 반영할 수 있다는 장점이 있습니다.
예제 데이터를 활용한 실제 모델 구현과 관련해서는 다음 포스팅을 통해서 설명드리겠습니다.
'머신러닝 with Python' 카테고리의 다른 글
[머신러닝 with Python] Darts 라이브러리로 SCHD 주가 예측모델 만들기 (0) | 2025.03.08 |
---|---|
[머신러닝 with Python] Prophet 모델로 SCHD 주가 분석하기 (1) | 2025.03.07 |
[머신러닝 with Python] TPOT을 활용한 Iris 데이터 분류(AutoML) (0) | 2024.12.11 |
[머신러닝 with Python] 유전 알고리즘이란? TPOT에서 최적화 활용(AutoML) (0) | 2024.12.11 |
[머신러닝 with Python] AutoML이란? (AutoML의 정의, 종류 등) (0) | 2024.12.10 |
댓글