본문 바로가기

Machine Learning Tasks/Time Series

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}+...$으로 표현할 수 있습니다.

이때, t+1 시점의 예측치는 어떻게 될까요? $\hat{X}_{t+1}$=$(1-\theta)x_{t}+\theta(1-\theta)x_{t-1}+...$가 됩니다. 이 식 안에서 $(1-\theta)x_{t-1} + \theta(1-\theta)x_{t-2} +... $는 $\hat{X}_t$ 로 생각할 수 있어 $\hat{X}_{t+1}$=$(1-\theta)x_t+\theta\hat{X}_t$ 의 식이 유도됩니다. ($1-\theta$)를 $\alpha$로 생각할 수 있습니다) 즉, ARIMA(0,1,1) 모형이나 1차 difference를 하는 시계열에 대해서는 exponential smoothing 으로 쉽게 예측치를 추정할 수 있다는 것이고 $\alpha$는 현재 관측치에 얼마만큼의 weight를 줄 것인지를 결정합니다.

그렇다면 $\alpha$는 어떻게 찾을까요? 우리는 결국 예측치를 실제값과 가깝게 만들고 싶습니다. $e_t=x_t-\hat{x}_t$ 를 최소화하는 방향으로 $\alpha$를 찾을 수 있습니다. 또한, cross-validation이나 grid search를 이용해서도 찾을 수 있습니다.

Double exponential smoothing

조금 더 복잡한 시계열 데이터에 대해서는 어떻게 될까요? 위에서 살펴본 single exponential smoothing은 간단한 모델에 대해서 잘 동작하지만 추세를 따르는 데이터에 대해서는 잘 동작하지 않습니다. Double exponential smoothing은 $\beta$라는 추가 파라미터 $\gamma$ 를 도입하여 모델링합니다.

단순한 $a+bt$를 따르는 시계열 데이터가 있다고 했을 때, double exponential smoothing은 $\hat{a}_t$=$\alpha x_t+(1-\alpha)(\hat{a}_{t-1}+\hat{b}_{t-1})$ 과 $\hat{b}_t$=$\gamma (\hat{a}_t-\hat{a}_{t-1})+(1-\gamma)\hat{b}_{t-1}$ 로 예측값을 추정합니다. 초기값은 다양하게 설정할 수 있지만 $\hat{x}_1$=$x_1$, $\hat{b}_1=x_2-x_1$, $\hat{a}_0=0$을 통해 점화식을 구성하여 $\hat{a}_t, \hat{b}_t$를 구할 수 있습니다. 

Centered moving average (CMA)

Seasonality를 가지면서 추세를 가진 시계열 데이터는 많이 등장합니다. 이때 사용할 수 있는 방법이 multiplicative seasonal 모형입니다. (Seasonality가 점점 커지는 것이 아니라면 additive 로 모델링이 가능하고 대부분의 소프트웨어에 구현되어 있습니다) 우리는 다음과 같은 수식으로 모델링합니다. 

$X_t = (a+bt)C_{t mod T} + \epsilon$

T는 seasonality의 주기가 되고 위 식에서 알려지지 않은 파라미터 (우리가 구해야할 파라미터)는 $a, b, c_0, c_1, ..., c_{T-1}$이 있습니다. 그리고 주기를 구성하는 각 성분의 영향력을 고정시키기 위해 $c_0+c_1+...+c_{T-1}=T$를 만족하는 제약 조건이 있습니다.

Centered moving average 방법에서는 먼저 사전 지식 등을 이용해서 주기 T를 파악합니다. 그 후 주기가 7이라면 $CMA_t=\frac{x_{t-3}+x_{t-2}+... +x_{t+3}}{7}$ 으로 moving average 값을 계산합니다. 즉, 선형 추세가 있다고 가정하기 때문에 앞의 부분과 뒤의 부분을 평균하면 현재 시점의 예측치라 가정하는 것입니다. 이 때, $CMA_t$는 $a+bt$를 근사하게 됩니다. 

이를 일반화해서 표현하면 $CMA_t$=$1/T \sum_{cycle} (a+bt)c_{t mod T} + \epsilon$과 같이 되고 이를 각 주기 별로 값을 구해 평균 내면 $AVG_t$=$1/k$ $\sum_{i=0}^{k-1} (\frac{x_{t+ik}}{CMA_t})$가 되고 $c_0+c_1+...+c_{T-1}=T$ 에 따라 $c_t$=$AVG_t \times \frac{T}{\sum_k^{T-1} AVG_k}$로 구할 수 있습니다. 이후, $x_t$를 $c_0, ..., c_{T-1}$로 나눈 것은 데이터의 seasonality 곱의 영향력이 사라졌다고 생각할 수 있습니다. ($a+bt$ 로 가는 것이죠) 회귀를 하거나 double exponential smoothing 을 이용하면 $a,b$를 구할 수 있습니다. 

Winter's method

Winter's method는 CMA 부분에서 설명한 시계열 데이터 패턴에 대한 triple exponential smoothing 입니다. 즉, 3개의 파라미터 $\alpha, \beta, \gamma$를 통해 다음과 같이 추정합니다. 

$\hat{a}_t=\alpha x_t/\hat{c}_{t mod T} + (1-\alpha)(\hat{a}_{t-1}+\hat{b}_{t-1})$

$\hat{b}_t=\beta (\hat{a}_{t}-\hat{a}_{t-1}) + (1-\beta)\hat{b}_{t-1}$

$\hat{c}_{t mod T} = \gamma (x_t/\hat{a}_t) + (1-\gamma) \hat{c}_{t mod T}$

Double exponential smoothing 처럼 초기값을 통해 점화식을 구성해서 $\hat{a}_t$, $\hat{b}_t$, $\hat{c}_t$를 구할 수 있고 이를 이용해 미래 시점을 예측할 수 있습니다.

반응형