이번 포스팅에서는 시계열 데이터를 분석과 미래의 값을 예측하기 위해 사용하는 구체적인 방법들에 대해서 소개하겠다. 필자는 어떤 주제를 공부하기 전에 큰 숲이라는 개괄적인 부분보고 세부적인 부분으로 들어가는 이상한(?)습관이 있어서 우선 예측방법의 큰 틀이 어떻게 되어있는지 보고 넘어가자.
위 그림과 같이 예측방법이 여러가지로 분류된다. 우리는 앞으로 소개할 방법들은 위 그림에서 '고전적 방법-평활법-이동평균과 지수평활법' 의 여러가지 방법들에 대해서 소개하려 한다. 목차는 다음과 같다.
1. 단순이동평균법
2. 선형이동평균법
3. 가중이동평균법
4. 단순지수평활법
5. Holt 선형지수평활법
6. Holt winters 계절지수평활법
1. 단순이동평균법
단순이동평균법은 추세가 있는 경우의 데이터에 적합하다. 즉, 계절성, 불규칙성을 제거하여 전반적인 추세를 파악하는 데 용이하다. 하지만 예측 용도로는 자주 사용되진 않는다. 사용하는 방법은 다음 그림을 참고하자.
위 그림처럼 m=5이라는 값은 기존의 데이터 중 가장 앞에 있는 시계열을 기준으로 5개의 데이터를 평균내어 예측을 하는 방법이다.
2. 선형이동평균법
선형이동평균법은 선형추세성을 갖는 데이터에 적합하다. 단순이동평균법과의 차이를 말한다면 단순이동평균법에서 사용했던 방법을 한번 더 사용하는 이중이동평균을 이용하게 된다.
위 그림과 같이 이중이동평균을 사용하게 된다. 하지만 미래의 값을 예측할 때는 따로 공식을 사용해서 예측을 하는데 밑의 공식을 보자. m값에 따라 달라지는 부분은 밑의 그림에서 노란색으로 칠해두었다.
3. 가중이동평균
가중이동평균은 간단하다. 우선은 사용자가 가중치를 얼마나 줄 것인지를 설정한다. 만약 m=3으로 설정하고 가중치를 50%, 30%, 20% 로 설정했다면 가장 최근의 데이터에 가장 큰 가중치를 주는 순으로 가중치를 부여한다. 그리고 단순이동평균방법에서 사용했던 방법 그대로 미래의 값을 예측한다.
4. 단순지수평활법
단순지수평활법은 평활값 즉, 시계열 관측값들에 대한 가중평균으로 미래의 값을 예측한다. 다시 말해 최근의 자료에 더 많은 가중치를 부여한다는 것이다. 단순지수평활법은 기본적으로 비계절모형에 적합하다. R을 이용할 때는 forecast패키지를 필수로 이용해야 한다. 밑의 그림을 보자. 참고로 알파값은 평활상수로, 0~1 사이의 값을 설정한다.
단순지수평활법은 R의 ses함수를 이용해서 분석해볼 수 있다. 이에 대한 구체적인 코드는 하단 Github 링크에 있다.
(Github link : https://github.com/young-hun-jo/TimeSeries_Unstructured_data/tree/master/Time_Series)
5. Holt 선형지수평활법
Holt 선형지수평활법은 자료의 평활(Level Equation)과 추세의 평활(Trend Equation)으로 구성하여 미래의 값을 예측하게 된다. 다음 자료를 보면서 Holt 선형지수평활법을 어떻게 사용하는지 살펴보자.
Holt 선형지수평활법을 R code로 시행할 때 'damped=TRUE' 라는 인자를 추가해서 감쇠추세법을 적용해줄 수 있다. 감쇠 추세법이란, 미래의 값을 과하게 예측하는 것을 파라미터(phi값) 조정을 통해 방지하는 기법이다. 파라미터(phi)값이 1이면 Holt 선형지수평활법과 동일해지고, 일반적으로 0.8 < phi < 1 범위 사이의 값들을 사용한다. Holt 선형지수평활법을 R code로 이용해보는 실습코드는 하단 링크를 참고하자.
(Github link : https://github.com/young-hun-jo/TimeSeries_Unstructured_data/tree/master/Time_Series)
6. Holt winters 계절지수평활법
홀트윈터스 계절지수평활법은 두 가지로 나누어서 분석을 진행할 수 있다.
-
승법적 모형 : 추세변동, 계절변동, 자료변동을 서로 곱하는 방식이다. 주로 계절적 진폭이 점차 증가하거나 감소하는 특성시에 사용한다.
-
가법적 모형 : 추세변동, 계절변동, 자료변동을 서로 더해주는 방식이다. 주로 계절적 진폭이 시간의 흐름에 따라 일정할 때 사용한다.
따라서 분석시에 주어진 데이터의 진폭을 관찰하고 애매모호 하다면 두 개 방법 모두 실행해보고 RMSE값을 비교하는 등 결과비교를 통해서 적합한 모형을 선택해주면 된다.
'Data Science > 시계열(Time-Series) 분석' 카테고리의 다른 글
AR(AutoRegressive), MA(Moving Average), ARMA Models (0) | 2020.07.14 |
---|---|
Box-Jenkins 방법론과 ARIMA 모델의 기초 (0) | 2020.07.14 |
시계열의 분해법(Time-series decomposition) (0) | 2020.05.28 |
ETS 모델과 벤치마크로 미래의 값 예측하기 (0) | 2020.05.28 |
시계열 데이터(Time-Series Data)의 특징과 모형 (0) | 2020.04.27 |