7.1 단순 지수평활

지수적으로 평활하는 기법 중에서 가장 단순한 방법을 “단순 지수평활”(simple exponential smoothing, SES)14이라고 부릅니다. 이 방법은 추세나 계절성 패턴이 없는 데이터를 예측할 때 쓰기 좋습니다. 예를 들면, 그림 7.1에 있는 데이터를 보면 평균값이 시간에 따라 느리게 변하는 것 같긴 하지만, 분명한 추세나 계절성이 보이지 않습니다. (마지막 몇 년 동안 증가하는 사실이 추세가 있다는 것을 시사합니다. 이 장의 뒷 부분에서 이 시계열에 추세 기법이 더 나을지 여부를 고려하겠습니다.) 단순(naïve) 기법과 평균기법을 이러한 데이터를 예측하기 위한 가능한 기법으로써 이미 다루었습니다(@ref((simple-methods) 절).

oildata <- window(oil, start=1996)
autoplot(oildata) +
  ylab("원유 (백만 톤)") + xlab("연도")
1996년부터 2013까지 사우디 아라비아의 원유 생산량.

Figure 7.1: 1996년부터 2013까지 사우디 아라비아의 원유 생산량.

단순 기법을 사용할 때는, 모든 미래 예측값은 시계열의 마지막 관측값과 모두 같습니다. 즉, \(h=1,2,\dots\)에 대해, \[ \hat{y}_{T+h|T} = y_{T}, \] 와 같습니다. 단순 기법에서는 가장 최근 관측값만 가장 중요한 유일한 값이고, 이전의 모든 관측값은 미래를 예측할 때 아무 정보도 주지 않는다고 가정합니다. 이 방법을 마지막 관측에만 모든 가중치를 할당하는 가중 평균으로 볼 수도 있습니다.

평균 기법을 사용할 때는, 모든 미래 예측치는 관측된 데이터의 단순 평균과 같습니다. 즉, \(h=1,2,\dots\)에 대해, \[ \hat{y}_{T+h|T} = \frac1T \sum_{t=1}^T y_t, \] 평균 기법에서는 모든 관측값이 똑같이 중요하고, 예측값을 생성할 때 이러한 관측값에 같은 가중치를 부여합니다.

우리는 종종 방금 살펴본 양극단 사이의 무언가가 필요할 때가 있습니다. 예를 들면, 오래된 관측값보다 더 최근 관측값에 더 큰 가중치를 주는 경우 말입니다. 이것이 바로 단순 지수평활(simple exponential smoothing) 기법의 기본 개념입니다. 더 오래될수록 가중치가 지수적으로 감소하는(가장 오래된 관측값에 가장 작은 가중치가 붙는) 방식으로 예측치를 계산합니다: \[\begin{equation} \hat{y}_{T+1|T} = \alpha y_T + \alpha(1-\alpha) y_{T-1} + \alpha(1-\alpha)^2 y_{T-2}+ \cdots, \tag{7.1} \end{equation}\] 여기에서 \(0 \le \alpha \le 1\)은 평활 매개변수입니다. 시간 \(T+1\)에 대한 한 단계 앞 예측치(one-step-ahead forecast)는 시계열 \(y_1,\dots,y_T\) 에서 모든 모든 관측값을 가중 평균하여 얻은 값입니다. 가중치가 감소하는 비율은 매개변수 \(\alpha\)로 조절합니다.

아래의 표는 단순 지수 평활로 예측할 때, 4개의 서로 다른 \(\alpha\) 로 관측값에 가중치를 할당한 것을 나타냅니다. 작은 \(\alpha\) 값이라도 가중치의 합은 어떠한 적절한 표본 크기에 대해서도 근사적으로 1이 될 것입니다.

\(\alpha=0.2\) \(\alpha=0.4\) \(\alpha=0.6\) \(\alpha=0.8\)
\(y_{T}\) 0.2000 0.4000 0.6000 0.8000
\(y_{T-1}\) 0.1600 0.2400 0.2400 0.1600
\(y_{T-2}\) 0.1280 0.1440 0.0960 0.0320
\(y_{T-3}\) 0.1024 0.0864 0.0384 0.0064
\(y_{T-4}\) 0.0819 0.0518 0.0154 0.0013
\(y_{T-5}\) 0.0655 0.0311 0.0061 0.0003

0과 1 사이의 어떤 \(\alpha\)에 대해, 관측값에 붙는 가중치가 과거로 갈 수록 지수적으로 감소합니다. 그래서 “지수평활(exponential smoothing)”이라는 이름이 붙었습니다. 만약에 \(\alpha\)가 가 작다면(즉, 0에 가깝다면), 더 먼 과거 관측값에 붙는 가중치가 늘어납니다. \(\alpha\)가 크면(즉, 1에 가까운 경우), 더 최근 관측값에 붙는 가중치가 늘어납니다. \(\alpha=1\), \(\hat{y}_{T+1|T}=y_T\) 인 극단적인 경우에는 예측값은 단순 기법으로 얻은 예측값과 같습니다.

예측식 (7.1)을 유도하는 2가지 동일한 형태의 단순 지수평활을 살펴봅시다.

가중 평균 형태

시간 \(T+1\)의 예측은 가장 최근 관측값 \(y_T\)와 이전 예측값 \(\hat{y}_{T|T-1}\)의 가중평균과 같습니다: \[ \hat{y}_{T+1|t} = \alpha y_T + (1-\alpha) \hat{y}_{T|T-1} \] 여기에서 \(0 \le \alpha \le 1\)은 평활 매개변수입니다. 비슷하게, \(t=1,\dots,T\)에 대해, 적합값(fitted value)도 다음과 같이 적을 수 있습니다. \[ \hat{y}_{t+1|t} = \alpha y_t + (1-\alpha) \hat{y}_{t|t-1}, \] (여기에서 적합값은 단순히 학습 데이터의 한 단계 예측(one-step forecast)이라는 것을 기억합시다.)

진행 과정을 어디에선가 시작해야만 하니, (우리가 추정해야할) 시간 1에서의 첫 번째 적합값을 \(\ell_0\)로 둡시다. 그러면, \[\begin{align*} \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}\\ \vdots\\ \hat{y}_{T|T-1} &= \alpha y_{T-1} + (1-\alpha) \hat{y}_{T-1|T-2}\\ \hat{y}_{T+1|T} &= \alpha y_T + (1-\alpha) \hat{y}_{T|T-1}. \end{align*}\] 각 식을 다음의 식에 대입하면 아래의 결과를 얻습니다.

\[\begin{align*} \hat{y}_{3|2} & = \alpha y_2 + (1-\alpha) \left[\alpha y_1 + (1-\alpha) \ell_0\right] \\ & = \alpha y_2 + \alpha(1-\alpha) y_1 + (1-\alpha)^2 \ell_0 \\ \hat{y}_{4|3} & = \alpha y_3 + (1-\alpha) [\alpha y_2 + \alpha(1-\alpha) y_1 + (1-\alpha)^2 \ell_0]\\ & = \alpha y_3 + \alpha(1-\alpha) y_2 + \alpha(1-\alpha)^2 y_1 + (1-\alpha)^3 \ell_0 \\ & ~~\vdots \\ \hat{y}_{T+1|T} & = \sum_{j=0}^{T-1} \alpha(1-\alpha)^j y_{T-j} + (1-\alpha)^T \ell_{0}. \end{align*}\] 마지막 항은 \(T\) 값이 클 때 작아집니다. 그래서 가중 평균 형태는 같은 예측식 (7.1)이 됩니다.

성분 형태

또 다른 표현 방식으로는 성분 형태가 있습니다. 단순 지수평활에서 포함된 유일한 성분은 수준값 \(\ell_t\)입니다. (이 장의 뒷 부분에서 다루는 다른 기법에는 추세 \(b_t\)와 계절 성분 \(s_t\)도 포함할 수 있습니다.) 지수 평활 기법의 성분 형태 표현은 기법에 포함된 각 성분에 대한 예측식과 평활식으로 구성됩니다. 단순 지수 평활의 성분 형태는 다음과 같이 주어집니다: \[\begin{align*} \text{Forecast equation} && \hat{y}_{t+h|t} & = \ell_{t}\\ \text{Smoothing equation} && \ell_{t} & = \alpha y_{t} + (1 - \alpha)\ell_{t-1}, \end{align*}\] 여기에서 \(\ell_{t}\)는 시간 \(t\)에서 시계열의 수준값(또는 평활화된 값)입니다. \(h=1\)로 두면 적합값을 얻을 수 있고, \(t=T\)로 두면 학습 데이터 이후의 예측값을 얻을 수 있습니다.

예측식은 시간 \(t+1\)의 예측값은 시간 \(t\)의 추정된 수준값입니다. (종종 수준식이라고 부르는) 수준에 대한 평활식으로 각 시기 \(t\)에서 시계열의 추정된 수준을 얻을 수 있습니다.

평활식에서 \(\ell_t\)\(\hat{y}_{t+1|t}\)\(\ell_{t-1}\)\(\hat{y}_{t|t-1}\)로 바꾸면, 단순 지수평활의 가중 평균 형태를 얻을 수 있을 것입니다.

단순 지수 평활의 성분 형태는 특별히 유용하진 않습니다만, 다른 성분을 추가할 때 가장 쉽게 사용할 수 있는 형태일 것입니다.

평평한 예측값

단순 지수 평활은 “평평(flat)”한 예측 함수를 갖습니다: \[ \hat{y}_{T+h|T} = \hat{y}_{T+1|T}=\ell_T, \qquad h=2,3,\dots. \] 즉, 모든 예측값이 마지막 수준 성분과 같은 값을 갖습니다. 이러한 예측은 시계열에 추세나 계절 성분이 없을 때 사용할 수 있다는 사실을 기억합시다.

최적화

모든 지수 평활법을 응용할 때, 평활 매개변수와 초기값이 필요합니다. 특별히, 단순 지수평활의 경우에는, \(\alpha\)\(\ell_0\)을 선택해야 합니다. 이러한 값을 알면, 데이터로부터 모든 예측치를 계산할 수 있습니다. 다음에 소개하는 기법에는 보통 2개 이상의 매개변수가 있고 2개 이상의 초기 성분이 있습니다.

평활 매개변수를 주관적으로 선택하는 몇몇 경우에는, 예측하는 사람이 이전의 경험에 근거하여 평활 매개변수의 값을 정합니다. 하지만, 알려지지 않은 매개변수 값을 얻는 더욱 안전하고 객관적인 방법은 관측된 데이터에서 이러한 값을 추정하는 것입니다.

5.2 절에서 (흔히 SSE 또는 제곱오차합으로 알려진) 잔차(residual)의 제곱의 합을 최소화하여 회귀 모델의 계수를 추정하였습니다. 비슷하게, SSE를 최소화하여 어떤 지수 평활기법에 대해 알려지지 않은 매개변수와 초기값을 구할 수 있습니다. \(t=1,\dots,T\) 에 대해, 잔차는 \(e_t=y_t - \hat{y}_{t|t-1}\) 로 명시합니다. 이렇게하여, SSE를 최소화하는 알려지지 않은 매개변수와 초기값을 찾습니다. SSE는 다음과 같이 주어집니다. \[\begin{equation} \text{SSE}=\sum_{t=1}^T(y_t - \hat{y}_{t|t-1})^2=\sum_{t=1}^Te_t^2. \tag{7.2} \end{equation}\]

(SSE를 최소화하는 회귀 계수값을 돌려 받는 공식이 있는) 회귀 모델 경우와는 다르게, 이 경우는 비선형 최소화 문제이고 최소화하기 위해 최적화 도구를 사용해야 합니다.

예제: 원유 생산량

이 예제에서는 사우디 아라비아의 원유 생산량을 예측하기 위해 단순 지수평활을 적용하였습니다.

oildata <- window(oil, start=1996)
# Estimate parameters
fc <- ses(oildata, h=5)
# Accuracy of one-step-ahead training errors
round(accuracy(fc),2)
#>               ME  RMSE   MAE MPE MAPE MASE  ACF1
#> Training set 6.4 28.12 22.26 1.1 4.61 0.93 -0.03

SSE(RMSE와 같은 것입니다)를 \(0\le\alpha\le1\)라는 조건에서 시점 \(t=1,2,\dots,18\)에 대해 최소화하여, 매개변수 \(\hat\alpha=0.83\)\(\hat\ell_0=446.6\)을 얻습니다.

7.1는 이러한 매개변수를 사용하여 계산한 결과를 나타냅니다. 마지막에서 두 번째 열은 시간 \(t=0\)부터 \(t=18\)까지에 대해 추정된 수준을 나타내고, 마지막 열의 마지막 몇 행들은 \(h=1,2,3,4,5\)에 대한 예측값을 나타냅니다.

Table 7.1: 단순 지수평활을 이용하여 사우디 아라비아 전체 원유 생산량을 백만 톤 단위로 예측한 것.
연도 시간 관측값 수준 예측값
\(t\) \(y_t\) \(\ell_t\) \(\hat{y}_{t&#124;t-1}\)
1995 0 446.59
1996 1 445.36 445.57 446.59
1997 2 453.20 451.93 445.57
1998 3 454.41 454.00 451.93
1999 4 422.38 427.63 454.00
2000 5 456.04 451.32 427.63
2001 6 440.39 442.20 451.32
2002 7 425.19 428.02 442.20
2003 8 486.21 476.54 428.02
2004 9 500.43 496.46 476.54
2005 10 521.28 517.15 496.46
2006 11 508.95 510.31 517.15
2007 12 488.89 492.45 510.31
2008 13 509.87 506.98 492.45
2009 14 456.72 465.07 506.98
2010 15 473.82 472.36 465.07
2011 16 525.95 517.05 472.36
2012 17 549.83 544.39 517.05
2013 18 542.34 542.68 544.39
\(h\) \(\hat{y}_{T+h&#124;T}\)
2014 1 542.68
2015 2 542.68
2016 3 542.68
2017 4 542.68
2018 5 542.68

그림 7.2에서 검은색 선은 데이터를 그래프로 나타낸 것입니다. 이 그래프는 시간에 따라 수준이 변하는 것을 보여줍니다.

autoplot(fc) +
  autolayer(fitted(fc), series="적합값") +
  ylab("원유 (백만 톤)") + xlab("연도") +
  ggtitle("단순 지수평활로 얻은 예측값")
단순 지수평활을 사우디 아라비아의 원유 생산량에 적용한 것(1996--2013).

Figure 7.2: 단순 지수평활을 사우디 아라비아의 원유 생산량에 적용한 것(1996–2013).

그림 7.2은 2014–2018년에 해당하는 기간에 대한 예측값을 그래프로 나타낸 것입니다. 한 단계 앞 적합값(one-step-ahead fitted value)도 1996년부터 2013년에 해당하는 기간의 데이터와 함께 나타냈습니다. 이 예제에서 큰 \(\alpha\) 값은 각 시간의 추정된 수준 \(\ell_t\)에 맞춰질 때 크게 조정되는 것을 의미합니다. \(\alpha\) 값이 작을 수록 더 작은 시간에 따른 변화로 이어질 것이고, 적합값의 시계열은 매끄러워질 것입니다.

7.7 절에서 다룬 기법을 사용하여 여기에서 나타낸 예측구간(prediction interval)을 계산합니다. 예측구간은 5년의 예측구간에서 원유 생산량의 미래 값에 상당한 불확실성이 있다는 것을 나타냅니다. 따라서 큰 불확실성을 고려하지 않고 점 예측(point forecast)을 해석하면 아주 큰 오해의 소지가 생길 수 있습니다.


  1. 몇몇 책에서는 “단일 지수평활(single exponential smoothing)”↩︎