Forecasting principlaes and practice을 참조하여 작성하였다.
한 줄로 설명해보기
- exponential smoothing: 미래 시계열 값을 이전 시계열 값들의 exponential weighted sum으로 표현하는 알고리즘이다.
- simple exponential smoothing: 트랜드와 계절성이 없는 시계열에 대해, 미래 시점의 모든 시계열을 현재 시점의 추정된 level로 동일하게 예측하는 알고리즘이다.
- holt's linear trend method: 계절성은 없고 트랜드가 있는 시계열에 대해, 미래 시점의 시계열을 시점이 멀어짐에 따라서 선형적으로 증가하는 형태로 예측하는 알고리즘이다.
- holt's saeasonal method: 계절성과 트랜드가 모두 있는 시계열에 대해, 이를 고려하여 예측하는 알고리즘이다.
Exponential Smoothing이란?
1950년대에 처음 Brown, Holt라는 학자에 의해 제안되었다. 핵심은 과거의 데이터를 가중평균하여 새로운 예측값을 만드는 것이다. 최근의 데이터가 더 많은 가중치를 받을 수도 있고, 그렇지 않을 수도 있다. 시계열 데이터에 대해 빠르게 예측값을 만들어야 하는 상황에서 많이 사용된다.
크게 네가지 방법을 다루고자 한다.
- Simple exponential smoothing
- Holt's linear trend method (Double exponential smoothing)
- Damped trend method
- Holt winters' seasonal method
Simple exponential smoothing
notation을 정의하자
- $\hat{y}_{T+h | T}$: short-hand for the estimate of $y_{T+h}$ based on the data $y_1, \cdots, y_{T}$
T+h 시점의 시계열 자료에 대한 미래 예측값을 만들고자할 때 크게 두가지 극단적인 방향이 있다.
- $\hat{y}_{T+h | T} = y_{T}$: 이전 모든 데이터는 반영하지 않고 가장 최근의 데이터만 반영한다.
- $\hat{y}_{T+h | T} = \dfrac{1}{T}\sum^T_{t=1}y_t$: 이전 모든 데이터에 동일한 가중치를 줘서 반영한다.
이 극단적인 두 방법의 중간에 있는 방법이 SES이다. 즉,
- T+h 시점 기준, 이전 시계열 자료에 서로 다른 가중치를 준다.
- $\alpha$라는 hyper-parameter에 따라서 가장 최근 자료에 많은 가중치를 줄 수도 있고, 그렇지 않을 수도 있다.
식의 형태는 아래와 같다.
\[ \hat{y}_{T+1 | T} = \alpha y_{T} + \alpha(1 - \alpha)y_{T-1} + \alpha(1 - \alpha)^2 y_{T-2} + \cdots + \alpha(1-\alpha)^{T-1}y_1 + \alpha(1-\alpha)^T \]
$0 \leq \alpha \leq 1$는 smoothing parameter로, 값이 크면 클수록 가장 최근 시계열 자료에 가중치를 많이 준다. 극단적으로 1이라면, naive 방법과 동일해진다. SES의 exponential 이라는 이름은, 위 식에서 가중치를 지수적으로 주기 때문에 붙여진 것이다.
simple exponential smoothing은 위와 같이 가중치를 지수적으로 주는 방법이라 생각하면 된다. 이제, 위의 forecast equation을 이끌어내는 두 가지 동일한 형태의 SES을 살펴보자.
Weighted average form
T+1 시점의 예측값은 가장 최근 시점 시계열 자료인 $y_T$와 이전 예측값인 $\hat{y}_{T | T-1}$의 가중 평균으로 표현된다.
\[ \hat{y}_{T+1 | T} = \alpha y_{T} + (1 - \alpha) \hat{y}_{T | T-1} \]
이를 다시 쓰면 아래와 같다.
\[ \hat{y}_{t+1 | t} = \alpha y_{t} + (1 - \alpha) \hat{y}_{t | t-1}, t=1,\cdots,T \]
starting point을 $\ell_0$라고 하면,
\[ \hat{y}_{2|1} = \alpha y_1 + (1-\alpha) \ell_0 \\ \hat{y}_{3|2} = \alpha y_2 + (1-\alpha) \hat{y}_{2|1} \\ \hat{y}_{4|3} = \alpha y_3 + (1-\alpha) \hat{y}_{3|2} \\ \cdots \\ \hat{y}_{T+1 | T} = \alpha y_{T} + (1 - \alpha) \hat{y}_{T | T-1} \]
일반화하면 아래와 같다.
T가 충분히 커지면 마지막 항은 무시할 수 있고 그러면 simple exponential smoothing 식이랑 동일해 진다.
Component form
simple exponential smoothing에서 유일하게 포함되는 component는 level, $\ell_t$이다. component form은 forecast equation, smoothing equation으로 구성된다.
- Forecast equation: $\hat{y}_{t+h | t} = \ell_t$
- t+1 시점의 예측값은 t 시점의 estimated level 값이다.
- Smoothing equation: $\ell_t = \alpha y_t + (1-\alpha) \ell_{t-1}$
- 이를 통해 t 시점의 level을 estimate 할 수 있다.
여기서 $\ell_t$는 t 시점의 level (smoothed value) 이다. $\ell_t$을 $\hat{y}_{t+1 | t}$로 바꾸고 $\ell_{t-1}$을 $\hat{y}_{t | t-1}$로 바꾸면 ses의 가중평균 식이 나온다.
Interpretation: Flat prediction
simple exponential smoothing의 forecasting equation은 아래와 같다.
\[ \hat{y}_{t+h | t} = \ell_t \]
이 식을 째려보면, 좌변의 $h$에 어떤 값이 들어가도 우변의 $\ell_t$는 변하지 않음을 알 수 있다. 즉, 이 식을 해석해보면, $t$시점까지의 시계열 데이터가 주어졌다고 가졍했을 때, 그 이후 1, 2, 3... step의 prediction 값은 모두 동일하게 $t$시점의 level인 $\ell_t$인 것이다.
이를 통해 simple exponential smoothing은 시계열이 linear trend나 seasonal trend가 없을 때 사용해야하는 방법임을 알 수 있다. 두 trend 중 하나라도 있다면, 아래 방법을 고려해야한다.
Trend methods: Holt's linear trend method
앞선 SES 방법은 트랜드가 있는 시계열 데이터에 적합하지 않다. 이를 보완하기 위해 Holt linear trend method가 연구되었다. (Double exponential smoothing: DES)
- Forecast equation: $\hat{y}_{t+h | t} = \ell_t + h b_t$
- $\ell_t$: t 시점 시계열 자료의 level에 대한 추정치
- $b_t$: t 시점 시계열 자료의 trend (slope)에 대한 추정치
- Level equation: $\ell_t = \alpha y_t + (1-\alpha) (\ell_{t-1} + b_{t-1})$
- $\alpha$: level에 대한 smoothing parameter
- Trend equation: $b_t = \beta^{*} (\ell_t - \ell_{t-1}) + (1-\beta^{*})b_{t-1}$
- $\beta^*$: trend에 대한 smoothing parameter
Interpretation
forecast equation은 아래와 같다.
\[ \hat{y}_{t+h | t} = \ell_t + h b_t \]
$t$시점 기준, $h$시점 이후의 예측 값은 $t$ 시점 시계열 자료의 level에 대한 추정치인 $\ell_t$에다가 $b_t$에 $h$를 곱한 값으로 계산된다. 즉, 시점이 멀어지면 멀어질수록 $h b_t$는 커질 것이고, linear trend가 반영되는 것이다. 다시 말해, forecast equation은 더이상 flat이 아니고, $h$에 대한 linear function 이다.
또한 $\ell_t$를 자세히 살펴보자.
\[ \ell_t = \alpha y_t + (1-\alpha) (\ell_{t-1} + b_{t-1}) \]
simple exponential smoothing에서는 $\hat{y}_{t+h} = \alpha y_t + (1-\alpha) \ell_{t-1}$이었다. 이를 다시 풀어보면, $t$시점기준, 미래 예측값들은 현재 값인 $y_t$와 이전 시점 $t-1$ 기준 예측값 ($\ell_{t-1}$)의 가중 평균이다.
double exponential smoothing도 비슷하게 해석할 수 있다. forecasting equation은 $y_t, \ell_{t-1}+b_{t-1}$의 가중합이고 $\hat{y}_{(t-1) + h} = \ell_{t-1} + b_{t-1}$ 으로 다시 쓸 수 있다. 이는 곧, $t-1$ 시점 기준, 예측값이기 때문에 ses와 맥락이 비슷해지는 것이다.
Damped trend methods
DES 방법이 멀리 있는 미래 시점에 대한 예측값을 over-forecast하는 경향이 있다는 연구 결과가 발표되면서, 기울기의 영향을 줄이는 모형이 개발되었다.
- Forecast equation: $\hat{y}_{t+h | t} = \ell_t + (\phi + \phi^2 + \cdots + \phi^h)b_t$
- $\ell_t$: t 시점 시계열 자료의 level에 대한 추정치
- $b_t$: t 시점 시계열 자료의 trend (slope)에 대한 추정치
- Level equation: $\ell_t = \alpha y_t + (1-\alpha) (\ell_{t-1} + \phi b_{t-1})$
- $\alpha$: level에 대한 smoothing parameter
- Trend equation: $b_t = \beta^{*} (\ell_t - \ell_{t-1}) + (1-\beta^{*})\phi b_{t-1}$
- $\beta^*$: trend에 대한 smoothing parameter
만약 $\phi = 1$이라면, DES와 동일한 모형이다. $\phi$는 기울기를 dampen하는 역할을 한다. 만약, h가 무한대에 가까워진다면 forecasts 값은 $\ell_T + \phi b_{T} / (1-\phi)$라는 상수에 수렴할 것이고 기울기의 영향이 축소될 것이기 대문이다.
Holt-winters' seasonal method
trend뿐만 아니라 계절성까지 존재하는 시계열을 모델링하기 위해 holt-winters' seasonal method가 개발되었다.
when to use additive or multiplicative method
holt-winters' method는 크게 additive, multiplicative method로 두 종류가 있다. additive는 계절성 효과가 additive하다고 판단되면 사용한다. additive하다는 기준은 계절성 효과가 일정한지를 살펴보면 된다. 위 그림에서 왼쪽 그래프를 보면, 계절적으로 반복되는 그래프의 모양이 일정하다. 이런 경우에 additive 계절성 효과를 사용하면 된다. multiplicative는 계절성 효과가 시간에 따라서 변하는 경우에 사용한다. 위 그림에서 오른쪽 그래프를 보면, 계절적으로 반복되는 그래프의 모양이 점점 커지고 있다. 이런 경우에 multiplicative 계절성 효과를 사용하면 된다.
additive method
- Forecast equation: $\hat{y}_{t+h | t} = \ell_t + h b_t + s_{t+h-m(k+1)}$
- $\ell_t$: t 시점 시계열 자료의 level에 대한 추정치
- $b_t$: t 시점 시계열 자료의 trend (slope)에 대한 추정치
- $s_{t+h-m(k+1)}$: seasonal component
- $k$: integer part of $(h-1)/m$
$s_{t+h-m(k+1)}$을 예시를 통해 이해해보자. $h=13, m=12$인, 월 시계열을 생각해보자. $k$를 계산해보면 $(13-1)/12$의 integer part이므로 1이다. 따라서 $s_{t+h-m(k+1)} = s_{t + 13 - 12 \times 2} = s_{t-11}$이다. 잘 생각해보면, $\hat{y}_{t+13 | t}$을 얻고자하는 시점에는 $t$시점까지의 시계열만 알고 있다. $t+13$ 시점에 걸리는 계절성 주기는 $t+25, t+1, t-11, t-23$ 인데, 이 중 $t$시점까지의 시계열만 알고 있는 상태에서 고를 수 있는 가장 가까운 꼐절성 주기는 $t-11$이다. 즉, $s_{t+h-m(k+1)}$은 우리가 가지고 있는 시계열 내에서 예측하고자 하는 미래 시계열과 가장 가까운 계절성 값을 나타낸다고 해석할 수 있다.
- Level equation: $\ell_t = \alpha (y_t - s_{t-m}) + (1-\alpha)(\ell_{t-1} + b_{t-1})$
- $\alpha$: level에 대한 smoothing parameter
- seasonally 조정된 관측값과 non-seasonal forecast과의 가중 평균
level equation에서는 seasonal effect가 조정되어 가중평균 된다.
- Trend equation: $b_t = \beta^{*} (\ell_t - \ell_{t-1}) + (1-\beta^{*})b_{t-1}$
- $\beta^*$: trend에 대한 smoothing parameter
- holt's linear method와 동일
- seasonal equation: $s_t = \gamma(y_t - \ell_{t-1} - b_{t-1}) + (1-\gamma)s_{t-m}$
- 현재 seasonal index($y_t - \ell_{t-1} - b_{t-1}$)와 이전 season의 seasonal index($s_{t-m}$)와의 가중 평균
seasonal equation에서는 level, trend effect가 조정되어 가중평균 된다.
multiplicative method
- Forecast equation: $\hat{y}_{t+h | t} = (\ell_t + hb_t) s_{t+h-m(k+1)}$
- Level equation: $\ell_t = \alpha \dfrac{y_t}{s_{t-m}} + (1-\alpha)(\ell_{t-1} + b_{t-1})$
- Trend equation: $b_t = \beta^* (\ell_t - \ell_{t-1}) + (1-\beta^*)b_{t-1}$
- seasonal equation: $s_t = \gamma \dfrac{y_t}{\ell_{t-1} + b_{t-1}} + (1-\gamma) s_{t-m}$
additive method을 이해했으면 multiplicative method을 이해하는데는 큰 어려움이 없다. seasonal effect인 $s_{t+h-m(k+1)}$가 곱해지는 형태로 equation이 정의되기 때문이다. additive method에서는 seasonal effect을 제거하기 위해 이를 빼줬다면 multiplicative method에서는 이를 제거하기 위해 나눠주면 된다.
python statsmodels에서 exponential smoothing을 사용하는 방법은 다음 포스팅에서 이어나가겠다!
댓글