상세 컨텐츠

본문 제목

시계열 스터디 5주차(우명진) : Prophet 논문

본문

해당 게시물은 Forecasting at Scale을 참고하여 작성하였습니다. 

저자는 Sean J. Taylor & Benjamin Letham 입니다. 

 

1. Introduction 

forecasting은 데이터 사이언스의 공통 업무인데, 그럼에도 시계열 예측을 하는 것은 어렵다. 

특히나 시계열 예측 전문가가 많이 없기 때문에 비즈니스를 위한 시계열 예측 Library를 만들게 되었다. 

 

해당 이유로 인하여 prophet을 만들게 되었다.

1) 많은 사람들이 교육없이 시계열 예측을 하도록 함. 

2) 잠재적으로 특이한 특징을 가진 다양한 예측 문제 존재.

3) 많은 수의 예측을 효율적으로 평가하고 비교하여 스스로 문제를 해결할 수 있도록 함.

 

 

 

 

analyst-in-the-loop approach to forecasting at scale

 

평가 시스템이 작동하는 방식은 다음과 같다.

1.  모델을 통해 예측하고, 각 상황에 맞는 합리적인 베이스라인을 만들고, 예측을 평가한다.

2. 예측 성능이 좋지 않더라면 해당 요인을 우선적으로 고려하여 모델을 설계한다. 

 

 

 

2. Features of Business Time Series

시계열 데이터에서 보이는 특징: multiple strong seasonalities(주별/연별 주기성), trend changes(새로운 상품 및 마켓 변화), outliers(이상치), holiday effects(휴일)

 

Facebook example.

seasonal effects: Christmas, New Year

trend: new products, market changes 

outliers: real datasets이 가지는 한계점

 

  • automatic ARIMA: large trend errors , 그러나 계절성을 감지하지 못한다.
  • 지수평활법 & seasonal naive forecasts: 주별 계절성을 감지하지만, 장기적인 계절성을 감지하지 못한다.

해당 문제를 해결하기 위해서는 hyperparameter tuning이 필요한데, 도메인 지식을 필요로 한다. 

 

 

 

3. The Prophet Forecasting Model 

decomposable time series model with three main model components: trend, seasonality, holidays

(Harbey & Peters 1990) 

 

 

g(t) : 반복적인 요소를 가지지 않는 트렌드

s(t): 반복적인 변화(주기성)을 나타낸다. (주별, 연별 계절성) 

h(t): 불규칙한 휴일의 효과를 나타낸다. 

오차항: 모델로 나타낼 수 없는 특이한 변동을 나타낸다. 

 

* 이 모델은 비선형 smoothers가 적용된 Generalized Additive Model(GAM) 모델과 유사하다.

GAM formulation의 장점은 decompose하기 쉽고, 새로운 요소(예를 들면 계절성에 영향을 미치는 요인)를 쉽게 수용한다는 점이다. 

또한 GAM은 훈련을 매우 빨리 하기 때문에 모델 parameter를 수정하기에도 간편하다. 

 

비록 ARIMA 모델을 사용하여 temporal dependence structure in the data를 통해 얻는 important inferential advantages를 포기하지만, Prophet 모델은 실용적인 장점을 제공한다.

- 유연성: 계절성을 쉽게 반영할 수 있고, 분석가들은 트렌드에 대한 다양한 가설을 세울 수 있다. 

- ARIMA와 달리, 차분해서 정규화할 필요도 없고, 결측치를 채워넣지 않아도 된다.

- 모델 훈련을 빨리 하기 때문에, 분석가들은 다양한 시도를 통해 값 비교를 할 수 있다. 

- 회귀분석과 비슷한 느낌이기 때문에, 빠르게 적응할 수 있다. 

 

3.1 The Trend Model 

3.1.1 Nonlinear, Saturating Growth

growth(성장) forecasting에서 중요한 것은 1) population이 어떻게 자랐고, 2) 어떻게 자랄 것으로 예측되는 것이냐이다.

 

ex. logistic growth model

C: capacity(용량), k: growth rate(성장률), m: offset parameter

 

 1. 상수였던 C를 변수인 C(t)로 지정함. 

왜냐하면 시간이 지날수록 인터넷에 증가할 수 있는 사람들은 증가하기 때문에 시간에 따라 용량이 변한다. 

 2.  K는 상수가 아니다. 

 - changepoints(새로운 제품)를 이용하여 트렌드가 변하는 것을 반영한다. 

    -> vector of rate adjustments를 정의한다. 

 

최종적인 모델: piecewise logistic growth model 

 *piecewise은 상황에 따라 여러 방정식이 묶이는 경우

 

*Logistic Growth model은 generalized logistic growth의 특별한 케이스이다. 해당 경우는 sigmoid curve가 하나만 있는 경우이다. 확장된 버전은 curves가 직선인 경우이다. 

 

3.1.2 Linear Trend with Changepoints

성장 모델에 성장률이 k로 일정한 경우. 

 

k: growth rate, delta: rate adjustments, m: offset parameter, r_j을 이용하여 연속적인 함수를 만듦

 

 

3.1.3 Automatic Changepoint Selection

changepoints는 제품이 출시되었거나 큰 이벤트의 날짜를 알고 있는 분석가에 의해서 지정될 수 있거나 자동적으로 지정될 수 있다.

 

자동적인 방법은 (3)과 (4) 모델의 delta를 지정하는 방법으로 행해질 수 있다. 

예를 들면 특정 연도의 모든 한달마다, 이전의 조정률과 laplace를 사용하는 방법이 있다. 

 

 

3.1.4 Trend Forecast Uncertainty

예측의 불확실성을 추정하여 일반적인 모델로 확장이 가능하다. 

laplace를 이용하여 미래의 changepoints를 설정할 수 있다. 

즉, 미래의 빈도와 변화가 과거의 평균 빈도와 변화가 같을 것이다라는 가정으로 불확실성을 측정하는 것이다. 

 

 

3.2 Seasonality

주기성을 가지는 시계열 데이터에서 푸리에 시리즈를 이용한다. 

시계열 데이터가 가지는 주기를 P로 설정. ( ex. 연 단위라면 P = 365.25, 주 단위라면 P = 7로 설정)

 

 

P의 값을 대입하여 계절성 효과를 완화할 수 있다. 

 

 

이때, N의 값이 영향을 미치는데 N의 숫자를 키우게 된다면  패턴이 빠르게 바뀌고, N이 작으면 느리게 변한다. 

논문에서는 연 단위에서는 N = 10이, 주 단위에서는 N = 3이 가장 적합하다고 한다. 

 

 

예를 들어, 연도 주기성을 가지고 N = 10인 경우에 주기성 벡터는 

이고, seasonal component는 

 

 

3.3 Holidays and Events

Holiday는 주기성을 따르지도 않지만 비즈니스에 영향을 많이 미친다. 

예를 들어, 미국에서 추수감사절은 11월의 4째주 목요일이다. 미국에서 가장 큰 이벤트인 슈퍼볼은 1월 또는 2월 일요일이어서 명확하게 정하기 어렵다. 그러나 설날 같은 공휴일은 음력으로 계산하기 때문에 매년 날짜가 다르기도 하다. 

특정한 공휴일의 영향은 매년 영향이 비슷하기 때문에 공휴일을 모델 예측에 포함하는 것이 중요하다. 

 

 

Prophet에서는 나라별 공휴일을 어느 정도 제공한다. 

 

해당 공휴일을 벡터로 표현하면

시간 t가 공휴일 리스트 D에 속하는 지를 판단하고, 각 공휴일에 파라미터 k를 부여하여 파라미터를 설정하는 방식이다. 

 

 

3.4 Model Fitting

 

Prophet을 이용한 예측 결과다. 예측 주 단위의 주기성을 확인하기 위해 요일별로 나타내었다. 앞선 모델에 비해 주단위, 연단위 주기성을 더욱 잘 포착하고 있다. 

 

 

 

모든 데이터와 interpolation of the historical data를 이용하여 Prophet 예측한 결과이다. 점선으로 표현된 부분은 데이터에 없는 예측 결과이다. 

앞선 Prophet 예측에서 trend, weekly, yearly 별로 어떤 변화가 있는지 확인할 수 있는 그래프이다. 

 

 

 

3.5 Analyst-in-the-Loop Modeling

분석가들은 Prophet을 이용하여 통계적 지식이 없이도 자신의 분야에 맞게 모델을 변형할 수 있다. 

- Capacities: market size에 대한 데이터를 적용할 수 있다

- Changepoints: 신제품이 출시되는 날짜를 반영할 수 있다 

- Holidays and seasonality: 영향을 미칠거라 예상되는 공휴일의 날짜를 반영할 수 있다

- Smoothing parameters: 주기를 바꿔줄 수 있다. 

 

 

4. Automating Evaluation of Forecasts

4.2 Modeling Forecast Accuracy

예측은 특정 hoirzon H에 대해서 이루어진다. 예를 들면 30, 90, 180, 365라고 볼 수 있다. 

De Gooiger & Hyndman(2006)에 따르면 평가 지표를 Mean Absolute Percentage Error(MAPE)이 해석이 용이해서 선호한다고 한다.

 

 

위의 수식은 T 시간만큼 데이터가 있을 때 h 시간에 대한 예측을 나타낸 식이다.

 



오차항은 다음과 같은데, 이것을 사용하기 위한 가정이 필요하다. 

1. 함수가 h에서 locally smooth해야한다. 

2. 시간이 지날수록 h 예측력은 조금씩 떨어져야 한다는 것이다. 

 

 

4.3 Simulated Historical Forecasts

모델을 선택하고 평가하기 위한 방법으로 cross validation 같은 방법을 사용할 수 없다. 왜냐하면 시계열 데이터의 특성상 임의대로 데이터의 순서를 섞을 수 없기 때문이다. 

 

대신에 classical 'rolling origin'(Tashman 2000)의 방법을 참고하여 simulated historical forecasts(SHFs) 방법을 사용할 수 있다. 이것은 cutoff 지점들에서 K 개의 예측을 하여 전체 오차가 계산을 하는 방식이다. 해당 방식은 rollling origin에 비해서 윈도우 사이즈가 작은 여러 데이터셋에 대해서 예측을 하는 것이다. 

 

 

위의 그래프는 시계열 예측 알고리즘별 mape를 H별로 비교한 그림이다. 

결과를 통해 prophet이 다른 모델에 비해서 MAPE 값이 다소 낮다는 결과를 확인할 수 있다. 

 

 

4.4 Identifying Large Forecast Errors

만약 SHFs의 결과가 좋지 않을 때 시도해볼 수 있는 방법을 제시하고 있다. 

  • 베이스라인에 비해 예측의 오차가 크다면 모델이 잘못 설정되었을 수도 있다. 트랜드나 계절성을 바꾸는 것이 필요하다. 
  • 특정 날짜에서 예측의 오차가 크다면 outlier일 확률이 있다. 분석가들은 outlier를 찾아 제거하는 방법을 사용할 수 있다.
  • 하나의 cutoff 이후에 SHF 에러가 급격히 커진다면, 데이터 생성 과정이 바뀌었을 수도 있다. changepoints를 추가하는 것이 하나의 방법이 될 수 있다. 

 

 

5. Conclusion

 

 

 

 

참고 문헌: https://gorakgarak.tistory.com/1255

관련글 더보기

댓글 영역