[Python] Neural Prophet

  • NeuralProphet은 쉽게 이야기 하면 Neural Network(AR-Net)과 Prophet의 결합이다.
  • \(\hat{y_t}\)는 Trend, Seasonality, Event & Holiday, Regression for known future variable, Auto-regression, Regression for lagged observation of variables 각각 6개의 식으로 구성이 되어 있다.

Trend

  • Trend는 신호의 전체 Variation 중 가장 많은 부분을 차지하고 있다.
  • Neural Prophet은 Training을 통해서 가장 명확하게 Variation이 발생하는 지점, Change Point를 찾는다. 그리고 Change Point간의 Trend는 Linear하다고 가정을 하고, Linear Regression을 추정한다.
  • 당연한 것이겠지만 이 Regression의 Loss는 Model Loss에 모두 더해지고 Gradient Descent Method를 통해서 Loss를 Minimize하는 방향으로 Regression을 개선해나간다. 이 때 Regression의 Paraemeter를 여기서는 Growth Value라고도 부른다.
  • 이 때 L1 Regularization 을 이용해서 Change Point 중 불필요한 것들은 제외를 해나가는데 임의로 Change Point를 넣어줄 수도 있다. 스타트업의 경우 대규모 투자 또는 프로모션 집행 시점과 같이 Domain Knowledge에 기반한 시점을 임의로 넣어주면 정확도를 높여줄 수도 있다.

Seasonality

  • Seasonality는 신호의 주기적인 움직임, 패턴이라고 볼 수 있다.  이러한 부분을 모델링하기 위해서는 Neural Prophet은 Targetd을 주기적으로 반복되는 Fourier Series 형태의 연속형 함수로 가정을 한다.  구체적으로는 다음과 같은 형태를 취하고 있다.
  • \(S_{p}(t)=\sum_{j=1}^{k}\left(a_{j} \cdot \cos \left(\frac{2 \pi j t}{p}\right)+b_{j} \cdot \sin \left(\frac{2 \pi j t}{p}\right)\right) \)
  • 이 때 Trend와 Seasonality간의 관계는 Multiplicative, Additive 중 선택을 해서 진행하면 된다.

Auto Regression

  • 시계열 하면 단골로 나오는 Auto Regression이다. 시점별 Random Variable 간의 상관성을 파악하기 위한 Auto Regression이다. 식은 다음과 같다.
  • \(y_{t}=c+\sum_{i=1}^{i=p} \theta_{i} \cdot y_{t-i}+e_{t} \)
  • 이 식에서 $\epsilon$은 White Noise로 Random이고  평균이 0이면서 분산이 1인 정규 분포를 따라야 한다.
  • 다만 Auto Regression으로는 \(t+h,h=1\)시점에 대해서 예측이 가능하기 때문에 결국 \(h>1\)인 경우 Model의 갯수는 \(h\)개 필요하게 되는데 Neural Prophet은 이 부분에 대해서 AR Net으로 접근한다. 식으로 보면 다음과 같다.
  • \( A^{t}(t), A^{t}(t+1), \ldots, A^{t}(t+h-1)=\operatorname{AR}-\operatorname{Net}\left(y_{t-1}, y_{t-2}, \ldots, y_{t-p}\right) \)
  • 이 때 중요한 부분 중 하나가 \(p\)이다.  AR-Net의 Input으로 넣어야 하는 Time-Series의 Length인데, 비 부분은 Domain Knowledge를 바탕으로 과거 데이터를 보면서 조절해야할 필요가 있다.  정확하지는 않지만 경험상 Seasonality등을 Detect하고 반영하기 위해서는 두 번 이상의 Period가 반복된 데이터가 상대적으로 정확도에서 우수하게 나왔다.

Lagged Regressors

  • Neural Prophet의 Core idea인 AR-Net이 적용되기 위해서는 필수적으로 필요한 부분이다.(라고 하지만 사실 다른 시계열 모델에서 Lagged Data는 매우 중요하다.)

Future Regressors

  • Target Value를 예측하기 위한 다른 변수들의 미래 수치값이다. Controllable Variable이면 추가할 여지가 있겠으나, 없어도 모델은 돌아간다.

Event & Holiday

  • 마지막 Module은 주기적으로 반복되지 안는 이벤트(월드컵, 지방선거 등)나 휴일에 대한 부분을 처리하는 부분이다.
  • 국가의 공휴일을 미국이었던가, 몇몇 국가는 라이브러리에 내장되어 있으나, 한국은 그렇지 않아서 임의로 넣어주면 좋다. 특히 추석이나 설날은 음력을 양력으로 매해 변화해서 쇠고 있기 때문에 필수이다.

Prophet vs Neural Prophet

  • Prophet vs. NeuralProphet 이라는 글에서 가볍게 실험한 결과를 공개했는데, 데이터 사이즈가 작을 때는 Neural Prophet이 데이터가 커지면 Prophet이 앞선다고 한다. RMSE, MAPE로 비교했는데 약간 Case by Case일 것 같기는 하다.
https://towardsdatascience.com/prophet-vs-neuralprophet-fc717ab7a9d8

References

Read more

[책]Reshuffle: Who wins when AI restacks the knowledge economy

[책]Reshuffle: Who wins when AI restacks the knowledge economy

원래는 Amazon에 가서 Personal Knowledge Managment에 관한 책을 사려고 했다. Sketch Your Mind라는 책이었는데, 그 때 이 책 “Reshuffle”을 발견하였다. AI가 어떻게 Knowledge Economy를 흔들 것가? 라는 부제를 훑어보면서 저자가 쓴 다른 책을 보게 되었는데 거기에 내가 좋아했던 책을쓴 저자라는 것을 알게 되었다. 그래서 크게 고민하지 않고 구매를 하고

By Bongho, Lee
[책]올라운드투자, 누군가의 투자일기

[책]올라운드투자, 누군가의 투자일기

“올라운드 투자”라는 제목을 보았을 때는, “올라운드 플레이어”가 생각이 났다. “올라운드”라는 표현을 오랜만에 들어본 까닭이었다. 그럼에도 불구하고 이 책을 고른 것은 저자가 그간 보여준 컨텐츠에 대한 신뢰가 있던 까닭이었다. 컨텐츠를 다양하게 보는 편이지만 깊이가 아주 있지는 않았다. 여기서 깊이라 함은 기존 전문적인 정량적 분석의 내용의 수준을 말하는 것이다.

By Bongho, Lee
내가 놓치고 있던 미래, 먼저 온 미래를 읽고

내가 놓치고 있던 미래, 먼저 온 미래를 읽고

장강명 작가의 책은, 유학시절 읽고 처음이었다. 유학시절 "한국이 싫어서"라는 책은 동기부여가 상당히 되는 책이었다. 한국을 떠나 새로운 정채성을 학생으로서 Build up 해나가고 있던 상황에서 이 책은 제목부터 꽤 솔깃하였다. 물론 결말이 기억날 정도로 인상깊은 책은 아니었지만 말이다. 그렇게 시간이 흘러 장강명 작가의 책은 더 이상 읽지 않던

By Bongho, Lee