본문 바로가기

반응형

Machine Learning Tasks/Time Series

(13)
파이썬에서 SARIMA 실행하기 - SARIMAX 파이썬의 statsmodels 패키지는 ARIMA, SARIMA 시계열 선형 모델을 지원합니다. 이번 포스트에서는 statsmodels의 SARIMAX 함수를 이용하여 시계열 데이터의 패턴을 학습하고 예측하는 걸 해보도록 하겠습니다. 먼저, SARIMAX 함수를 import 합니다. SARIMAX의 X는 외부 변수를 나타내는 eXogeneous의 줄임말로 자기 자신 (endogeneous) 뿐만 아니라 외부 변수까지 학습과 예측에 포함할 수 있다는 것입니다. from statsmodels.tsa.statespace.sarimax import SARIMAX SARIMAX의 주요 파라미터는 다음과 같습니다. 파라미터 Description endog 관측된 시계열 데이터 (endogeneous 데이터를 말합니..
Augmented Dickey-Fuller Test - Stationary 확인 시계열 데이터를 처리하기 위해서는 데이터를 stationary 하게 만든 이후에 AR, MA, ARMA, ARIMA 모델 등을 적용해야 합니다. 지난 포스트에서 알아봤듯이 stationary 하기 위해서는 시계열 데이터의 평균, 분산이 시간에 따라 일정해야 하고 래그 $h$에 따른 공분산이 일정해야 합니다. Stationary를 그림으로 그려서 판단할 수 있지만 통계적인 정량적 방법으로 검증할 수 있는 방법이 바로 Augmented Dickey-Fuller Test (ADF Test) 입니다. 먼저 Dickey-Fuller Test는 1979년에 David Dickey와 Wayne Fuller에 의해 개발된 autoregressive 모델의 단위근 (unitroot) 통계 검정 방법으로 대표적인 stat..
Deep State Space Models for Time Series Forecasting 시계열 데이터 예측은 각종 산업의 의사 결정 단에서 두루 사용되는 분야로 비용 감소, 재고 관리 등의 업무에 사용됩니다. 기존에는 예측 모델의 구조를 미리 가정하고 추세나 계절성 등의 패턴을 예측하는 state space models (SSM)이 주로 사용되었습니다만, 사용가능한 시계열 데이터의 수와 feature가 많아짐에 따라 적절한 모델과 입력/출력 구조를 정의하는데 오랜 시간이 걸립니다. 또한, 각 시계열 데이터마다 별도로 모델링되다 보니 비슷한 시계열 데이터들의 공통된 패턴을 활용하지 못하는 단점도 있습니다. 이에 반해 deep neural networks를 사용한 예측은 deep neural networks의 강력한 feature extraction에 힘입어 raw 데이터로부터 복잡한 패턴을 ..
Multivariate Time Series (1) - 기본 확률 이번 포스트에서는 다변수 시계열 데이터 분석을 위한 기본 확률 개념을 알아보도록 하겠습니다. Multivariate time series 이전 포스트들에서는 단변수 시계열 데이터를 다뤘습니다. 다변수 시계열 데이터는 한 개가 아닌 여러 개의 feature로 구성된 데이터로 하나의 시점에서 스칼라 값이 아닌 다음과 같이 벡터로 표현됩니다. 여기서 $m$은 데이터의 feature 차원이 되겠죠. 먼저 평균은 다음과 같이 각각의 기대값이 쌓아진 벡터로 표현됩니다. Covariance matrix Covariance는 다변수이기 때문에 값이 아닌 행렬로 주어집니다. 단변수의 경우 1x1 matrix이기 때문에 스칼라 값이 되는 것이죠. Covariance matrix는 $\sum_X=[Cov(X_i,X_j)]_..
Exponential Smoothing, CMA, Winter's Method Exponential smoothing $\hat{X}_{t+1}=\alpha X_t + (1-\alpha)\hat{X}_t$ 식을 생각해 보겠습니다. ($\alpha$는 smoothing 계수입니다) ARIMA(0,1,1) = $X_t=X_{t-1}+a_t-\theta a_{t-1}$ 는 정리하면 $a_t=(1-\theta B)^{-1}(X_t-X_{t-1})$ 로 표현할 수 있습니다. 이를 다시 풀어쓰면 $a_t$=$X_t-(1-\theta)X_{t-1}-\theta(1-\theta)X_{t-2}-...$가 되고 이를 다시 $X_t$에 대해 풀어쓰면 $X_t$=$a_t+(1-\theta)X_{t-1}+\theta (1-\theta)X_{t-2}+\theta^2 (1-\theta)X_{t-3}+...$..
Nonstationary process, ARIMA, SARIMA 일반적인 시계열 데이터는 stationary 하지 않습니다. 대부분 추세를 가지고 있고 따라서 stationary의 가정과 같이 평균이 상수로 일정하지 않습니다. 이전 포스트에서 알아봤듯이 추세를 제거해서 stationary 한 신호를 만들어 분석을 수행하게 됩니다. $X_t = X_{t-1} + a_t$의 데이터는 어떻게 될까요? 노이즈가 껴있긴 하지만 선형으로 증가하는 추세를 가지게 될겁니다. 그렇다면 이를 1차 difference ($\nabla X_t = X_t - X_{t-1}$) 를 수행하면 평균이 일정하게 되므로 stationary 하게 만들 수 있습니다. 추세가 quadratic하게 증가하는 시계열 데이터는 어떻게 다룰 수 있을까요? 이런 상황에는 2차 difference ($\nabla ..
Parameter Estimation, Model Redundancy, Prediction Parameter estimation 이 장에서는 ARMA 모델의 파라미터를 추측하는 일반적인 방법에 대해 설명하고자 합니다. 지금까지 살펴봤던 방법으로는 ordinary least square (OLS) 를 이용한 회귀 분석이나 correlation 을 이용한 Yule-Walker equation 이 있습니다. 각 모델마다 일일히 구하는 것 대신 보다 일반적인 방법은 없을까요? Conditional minimization 이 방법은 error 를 최소화하는 방향으로 파라미터를 찾는 방법입니다. 에러를 최소화한다는 것은 에러가 white noise 로 가정한 정규 분포에 대한 우도가 최대화하는 것과 같은 말이라 생각할 수 있습니다. MA(1) ($X_t = a_t - \theta a_{t-1}$) 에 대..
시계열 모델 building 주어진 시계열 데이터에 대해서 일반적으로 1. AR, MA, ARMA 등 어떠한 모델을 사용할 것인지, 2. 모델을 정했으면 모델의 파라미터를 어떻게 구할 것인지, 3. 구한 모델이 합리적인지, 4. 예측 의 단계로 이루어집니다. (Box-Jenkins approach) 1, 3번에 대해서 ACF와 PACF를 이용하고 모델을 fitting 하고 난 이후의 나머지에 대해 Box-Ljung test, Sign test, Rank test, q-q plot 등을 수행하여 나머지가 white noise $a_t$ 와 비슷한지 테스트를 수행하게 됩니다. 또한, AIC, BIC 등을 이용하여 fitting 한 모델의 예측 스코어를 분석하거나 cross validation 을 하여 여러 모델의 적합성을 검사하게 됩니..

반응형