4. Prophet
Facebook에서 만든 시계열 분석/예측 라이브러리 (R, Python)
시계열 분석/예측에 대한 전문적인 지식을 가지고 있지 않더라도
직관적인 몇 가지 파라미터를 가지고 조작할 수 있도록 한다
5. Model Components
3개의 메인 컴포넌트로 구성된 Decomposable Time Series Model
Growth Seasonality Holidays
(Events)
y(t) = g(t) + s(t) + h(t) + error
6. Model Components
- ARIMA 등 많은 시계열 모형과는 다르게 시간에 종속적인 구조를 가지지 않는다
- 대신에 Curve Fitting으로 문제를 해결
- 그로 인해 얻게 된 이점이 있다
- 모형이 굉장히 유연해진다
- 측정하는 시간이 꼭 일정한 주기를 가질 필요가 없다
비어있는 구간을 interpolate 하지 않아도 됨
- 학습 속도가 빠르다
- 직관적으로 이해할 수 있는 파라미터를 통해 모형을 조정할 수 있다
7. Model Components : Growth
- Linear Growth (+ Change Point)
- change point는 자동으로 탐지한다
- 예측할 때는 특정 지점이 change point인지 여부를 확률적으로 결정
- Non-Linear Growth (LogisticGrowth)
- 자연적인 상한선이 존재하는 경우 : Capacity
- Capacity는 시간에 따라 변할 수 있다
8. Model Components : Seasonality
- 사용자들의 행동 양식으로 인해 주기적으로 나타나는 패턴
- ex) 방학, 휴가, 온도, 주말 등등
- Fourier Series를 이용해서 패턴의 근사치를 찾는다
9. Model Components : Holidays
- 주기성을 가지지는 않지만 전체 추이에 큰 영향을 주는 이벤트가 존재한다
- 이벤트의 효과는 독립적이라고 가정
- 이벤트 앞뒤로 window 범위를 지정해서
해당 이벤트가 미치는 영향의 범위를 설정할 수 있다
10. Model Fitting
- Stan을 통해 모델을 학습시킨다
- probabilistic programming language forstatistical inference
- Written in C++
- 크게 두 가지 방식을 사용
- MAP (Maximum A Posteriori) : Default
- 속도가 훨씬 빠르다
- MCMC (Markov Chain Monte Carlo)
- 모형의 변동성을 더 자세히 살펴볼 수 있음
11. Model Fitting : Stan sample code
model {
// Priors
k ∼ normal(0, 5);
b ∼ normal(0, 5);
epsilon ∼ normal(0, 0.5);
delta ∼ double_exponential(0, tau);
beta ∼ normal(0, sigma);
// Non-linear Likelihood
y ∼ normal(C ./ (1 + exp(-(k + A * delta) .* (t - (b + A * gamma))))
+ X * beta, epsilon);
// Linear Likelihood
y ∼ normal((k + A * delta) .* t + (m + A * gamma) + X * beta, sigma);
}
12. Analyst-in-the-loop Modeling
- 모형을 구성하는데 필요한 통계적 지식이 없더라도
직관적인 파라미터를 통해 모형을 조정할 수 있다
- 일반적인 경우 에는 기본값만 사용하더라도
높은 성능을 낼 수 있도록 설정되어 있음
- 내부가 어떻게 동작하는지에 대해서 고민할 필요없도록!
-> Analyst in the Loop
14. Where Prophet Shines?
- 많은 시계열 데이터 (연 단위 이상이면 좋음)
- 불규칙적으로 일어나지만 사전에 시점을 알고 있는 이벤트가 있는 경우
ex) 한국시리즈,크리스마스
- 결측치가 어느 정도 존재하거나, 아웃라이어가 많은 경우
- 특정한 이벤트로 인해 장기적인 추이가 변할 수 있는 경우
ex) 신제품 출시, 디자인 변경
- 지표가 선형으로 증가하지 않을 경우
증가할 수 있는 지표의 최대치가 존재하고 이를 알고있는 경우