Yamarae 2019. 1. 12. 20:42


시계열 분석은 크게 규칙적 시계열 분석과 불규칙적 시계열 분석으로 나뉜다. 여기서 규칙적 시계열이란 트렌드와 분산이 불변하는 시계열 데이터를 말하고, 불규칙적 시계열이란 트렌드 혹은 분산이 변화하는 시계열 데이터를 말하는 것이다. 시계열 데이터를 잘 분석한다는 것은, 불규칙성을 가지는 시계열 데이터에 특정한 기법이나 모델을 적용하여 규칙적 패턴을 적용하거나, 혹은 예측할 수 있도록 하는 것을 의미한다. 아래의 이미지를 보면 직관적으로 이해할 수 있다. (출처 : https://www.analyticsvidhya.com/)




불규칙성을 띠는 시계열 데이터에 규칙성을 부여하는 방법으로는 AR, MA, ARMA, ARIMA 모델 등의 분석 방법을 적용하는 것이 가장 널리 알려져 있다. 이러한 모델을 기반으로 도메인과 데이터의 특성에 맞게 발전시킨 모델들이 주로 사용되고 있으며, 최근에는 딥러닝을 이용하여 시계열 데이터의 연속성을 기계 스스로 찾아내도록 하는 방법이 더 좋은 성능을 내고 있다. 가장 대표적인 것이 LSTM이라는 RNN 종류의 네트워크인데, 이전 상태를 꽤나 오랫동안 기억하면서 순환적인 네트워크의 파라미터를 자동적으로 학습하는 기특한 녀석이다. 사실 개인적으로는 시계열 모델에 대해 제대로 공부하기 위해서 딥 러닝이나 머신 러닝에 관한 이론보다는, 통계적 모델링 기법이나 마르코프 기법을 이해하는 것이 더욱 도움이 된다고 생각한다. 이에 대한 내용이 학습 된 후에 딥 러닝을 제대로 이해할 수 있을 것 같다.


그래서 LSTM과 같은 최신 기법에 가까운 모델을 이해하기에 앞서, 통계적인 방법을 사용하는 ARIMA 모델링 방법과 오픈 패키지로 널리 사용되고 있는 Facebook의 Prophet 모델을 살펴보았다.






1. ARIMA 모델



- AR(Autoregression) 모델


자기 회귀모델이라고 불리는 모델이다. 자기 자신의 과거를 사용하기 때문에 이러한 이름이 붙은 것이다. 이전의 자신의 관측값이 이후의 자신의 관측값에 영향을 준다는 아이디어의 모형이다 (RNN의 아이디어와 매우 유사하다). 이를 간단한 수식으로 살펴보자.





이 수식이 의미하는 바는, 이전의 자기 상태에 w를 곱하고 b를 더한 것에 (e(t) * u)라는 특수한 값을 더한 것을 의미한다. 여기서 e(t)는 white-noise(백색 잡음) 라고 불리는데, 일반적인 정규분포(평균이 0, 분산이 1인 정규분포)에서 도출된 random noise 값이다. 불규칙 데이터를 정상화 시키는 가장 효율적인 방법은 시계열 변수들을 Whitening 시키는 것이다. white-noise로 구성된 항들의 평균과 분산은 일정하며, 변수들간 공분산과 자기상관은 정상성 조건을 만족하게 된다. 즉, Whitening이란 일종의 정규화라고 할 수 있다. 


AR 모델에서는 시계열 데이터로 회귀 분석을 할 때의 불확실성(예를 들자면 주식 데이터)을 포함하기 위해, 혹은 불규칙 시계열 데이터를 잡아주기 위해 이러한 노이즈를 사용한다. 따라서 위 식은, (X(t-1) * w) + b을 평균으로 가지며 u만큼을 분산으로 가지는 정규분포를 따른다고도 해석이 가능하다. 이를 통해 불규칙성을 가지는 시계열 데이터에 아주 약간의 규칙성이 부여된다. 만약 n 이전의 시점부터 자기 회귀를 하고싶다면, 아래의 수식을 사용한다. 지금까지의 방법을 AR(n) 방법이라고 표기한다.





자기 회귀모델은 자신의 최신 과거에 기반한 변동 루틴을 파악하기에 적합한 방식이다. 하지만 과거를 들여다보는 윈도우 밖에서 트렌드가 위아래로 변동하는 경우는 매우 부적합한 방식이다. 이 경우는 MA(Moving Average) 모델이 적합하다.




- MA(Moving Average) 모델


이동 평균 모델은 트렌드(평균 혹은 시계열 그래프에서의 y값)가 변화하는 상황에서 적합한 회귀모델이다. 위에서 설명한 AR과 수식적으로 아주 작은 차이만을 보이지만, 의미는 전혀 다르다. 아래의 수식을 보자.





AR의 수식과 비교해보면, 단지 X(t-1)이 e(t-1)로 바뀌었을 뿐이다. 이는 이전 항에서의 상태(X(t-1))를 이용하여 새로운 상태를 추론하는 것이 아니라, 이전 항에서의 오차(e(t-1)) 혹은 변동값을 이용하여 현재 항의 상태를 추론하겠다는 것이다. 즉, 변화하는 트렌드에 발맞추겠다는 (마치 허황된 국회의원의 말처럼) 의미이다.




- ARMA(Autoregressive Moving Average) 모델


아마 ARMA라는 모델을 접하기 전에 예상이 될 지도 모르지만, 위 둘을 섞은 모델이 등장하는데 그것이 바로 ARMA이다. 손오공과 베지터의 퓨전처럼 강력하게 파워가 업그레이드 되는 결합이다. 분석의 정확도는 많이 올라가지만, 수식은 너무나도 쉽게 결합된다. AR, MA 두 가지 관점에서 1 윈도우 이전만큼의 과거를 참고하는 것을 ARMA(1,1) 이라고 표기하며, 아래의 수식과 같다.





마찬가지의 방법으로 ARMA(2,2)의 경우는 아래와 같이 표기된다.






- ARIMA(Autoregressive Integrated Moving Average)


ARMA에서 Integrated라는 개념을 추가한 모델이다. ARMA을 한 줄로 요약하면 다음과 같이 표현할 수 있었다. “과거의 상태와 오차값을 사용해 현재의 상태를 예측하는 모델”. 하지만 이 모델 역시 불규칙적 시계열 데이터를 제대로 예측하지 못한다는 한계가 있다. 


그래서 ARMA에서는 한걸음 더 나아가, 불규칙적 시계열 데이터를 조금 더 잘 분석할 수 있는 방법을 적용한다. ARIMA 모델은 관측치 사이의 차분(Difference)이라는 개념을 사용하여 불규칙적 시계열 데이터를 규칙적 시계열 데이터로 활용할 수 있도록 하는 과정을 거친다. 현재 상태의 변수에서 바로 전 상태의 변수를 빼주는 것을 차분이라고 하며, 차분을 거친 결과 변수들이 Whitening 되는 효과를 가져온다. 


위의 내용들과 비교해서 요약해보자. AR의 경우, 현재와 과거의 자신과의 관계를 정의한 것이다. 그리고 MA의 경우, 현재와 과거 자신의 오차와의 관계를 정의한 것이다. ARMA은 현재와 과거의 자신 그리고 자신과의 오차를 동시에 고려하여 정의한 것이다. ARIMA는 현재와 추세(트렌드 변화)간의 관계를 정의한 것이라고 볼 수 있다. 이제 이를 수식으로 살펴보자. 먼저 차분을 통해 현재 상태 X를 변환한다.







소문자 x는 변환된 새로운 현재 상태를 나타낸 것이고, 대문자 X는 변환 전 원래의 현재 상태를 나타내는 값이다. 이제 이 X 값을 활용하여 예측 모델을 다음과 같이 ARIMA(p, d, q)로 구성할 수 있다. 만약 ARIMA(1,2,1) 이라면 AR과 MA를 1개만큼의 과거를 window로 활용하고, 차분은 2 만큼을 활용하는 것이다.





이제 ARIMA(p,q,r)의 차수를 결정하는 것이 중요해 진다. 최적의 파라미터를 찾아내는 방법으로 ACF(Autocorrelation Function), PACF(Partial autocorrelation Function)를 흔히 활용하게 된다. 해석에 대한 내용은 직관적 그래프로 설명한 아래의 링크를 참고하자. 


ACF(자기 상관 함수) : https://support.minitab.com/ko-kr/minitab/18/help-and-how-to/modeling-statistics/time-series/how-to/autocorrelation/interpret-the-results/autocorrelation-function-acf/

PACF(편 자기 상관 함수) : https://support.minitab.com/ko-kr/minitab/18/help-and-how-to/modeling-statistics/time-series/how-to/partial-autocorrelation/interpret-the-results/partial-autocorrelation-function-pacf/








2. Facebook Prophet 모델



Additive 모델이라는 모델링 방법에 기반하여 개량한 패키지로, 선형적이지 않은 시계열 데이터의 트렌드성을 (연간/월간/일간) 단위로 쉽게 찾아내도록 해주는 것에 초점이 맞추어져 있다. 여기서 Additive 모델(가법적 모델)이란 비선형적 회귀분석을 의미한다.


잠시 Additive 모델에 대한 설명을 하겠다. Additive 모델은 선형회귀에서의 단점을 극복하기 위해 개량된 방법이라고 볼 수 있다. 일반적인 선형회귀는 다음과 같은 수식에서 부터 베타값들을 학습하는 것이었다. 





하지만 대부분의 real world 모델은, 선형성을 띠는 경우가 드물다. 따라서 회귀 분석에 비선형적 성질을 학습시키기 위해 polynomial regression(다차항 회귀 분석)방법을 도입하기도 하고, Smoothing 방법으로 과적합을 피하는 비선형 모델을 도입하기도 한다. 그외에도 다양한 회귀분석의 변형적 방법들이 존재한다. 하지만 Additive model은 각 변수마다 비선형적 적합을 가능하게 하는 함수들을 적용하는 것이다. 수식을 살펴보면 다음과 같다.





위 식에서 각 변수 X_ij를 각각의 함수 f_j에 부여하고 있는 것을 볼 수 있고, 이것을 가법적인(Additive model) 모델이라고 한다. 단순히 이러한 가법적인 모델을 적용하는 것을 넘어서, 일반적으로는 함수 f_j 마다 1차원의 Smoother를 적용한다. 이를 통해 제한된 클래스의 비모수 회귀를 적용하는 것이다. 다른 말로 하면, 함수들이 overfit 되지 않게 리미터를 걸어주는 역할이라고 볼수 있다.


가법적인 회귀모델은 기존 선형회귀 모델의 장점인 변수에 대한 높은 설명력이라는 부분을 고스란히 가져오면서도, 예측력이 매우 높은 비선형적 결합 모델이라는 장점도 포함한다. 하지만 이 모델의 단점은 변수간의 상호작용, 즉 regression에서의 cross-production 피처를 잡아내기 힘들다는 것이다. 물론 이에 대한 극복 방법이 충분히 연구되긴 했지만, 일반적으로 변수간의 상호작용이 중요한 경우에는 이 기본 모델을 적용하지는 않는 것 같다.


다시 돌아와서, Facebook의 Prophet 모델은 Additive 방식의 regression을 Facebook의 데이터 사이언스들이 시계열 예측에 최적화된 형태로 개량한 모델이라고 정의내릴 수 있다. 동시에 ARIMA와 같은 Generative 모델의 장점도 활용하고 있다고 설명되어 있다. 즉, GAM(Generative Additive Model) 모델(일반적으로 GAM 모델은 Generalized Additive Model을 의미한다)의 시계열 최적화 응용 모델이라는 것이다. 자세한 내용은 https://peerj.com/preprints/3190/ 의 논문을 참고하자.