TimeSeries Analysis 2 – Exponential Smoothing and Holt-Winters

2019년 12월 25일   |   by Admin

전체 소스 코드 : https://github.com/Joohyoung/R-usages/blob/master/TimeSeriesAnalysisCase2/TutorialCode02.R

1. 분석 소개

[실험1 : 추세가 존재하는 시계열 데이터를 분석하기]

구글 트렌드를 이용하여 Trend가 존재하는 시계열 데이터를 찾고 Simple Exponential SmoothingDouble Exponential Smoothing 방법을 적용, 예측력 비교한다.

 

[실험2 : 계절 변동성을 갖는 시계열 데이터를 분석하기]

시계열 데이터 중 Seasonal Variational을 갖는 데이터를 찾는다. 해당 데이터에 대하여 Holt-Winters의 가법(Additive), 승법(Multiplicative), Dummy variable, Trigonometric models 등의 예측 모형을 생성하고 정확도를 평가 하시오. 특히 Holt-Winters의 Weighting parameter인 alpha, gamma, delta 를 변경하면서 예측력을 비교한다.

 

  • 참고) 시계열 데이터 분석 프로세스
https://i1.wp.com/joohyoung.net/wp-content/uploads/2019/12/timeSeriesProc.png?w=640&ssl=1

시계열 데이터 분석에는 다음과 같은 프로세스로 이뤄집니다.

 

(1) 데이터 전처리 (변환 및 차분)

분석할 시계열 데이터가 정상(Stationary) 시계열 데이터인지, 아닌지 확인합니다. Stationary Time Series 데이터란 시간 흐름에 관계없이 평균과 분산이 일정한 데이터를 말합니다. 각각의 데이터가 시간에 Independent 하기 때문에 우리는 매 시점의 데이터들이 I.I.D(Independent and Identically Distributed) 에 의해 만들어 졌음을 가정하게 됩니다. 데이터가 I.I.D를 따르게 되면 가질 수 있는 장점은 대부분의 분석 알고리즘에 적용 가능하다는 것 입니다.

반면 비정상 시계열 데이터(Nonstationary Time Series)는 시간 흐름에 따라 데이터의 평균과 분산이 의존적인 데이터를 말합니다. 시간이 갈 수록 꾸준히 증가하는 Trend가 있는 그래프, 혹은 특정 주기(Cyclic)가 있는 데이터, 계절적(Seasonally Variant)으로 변화하는 데이터 등이 해당 됩니다. 우리가 만나는 대부분의 데이터는 추세, 주기, 계절적 성분이 있습니다. 다시 말해, 대부분의 분석 대상 데이터는 비정상 시계열 데이터 이며 이를 해결하기 위해 전처리가 필요하다는 것 입니다.

데이터가 정상인지 비정상인지 확인하는 방법으로는 첫째, ADF-Test(Augmented Dickey–Fuller, 또는 단위근 검정 테스트)가 있습니다. 또한 Correlogram중 ACF, PACF 그래프를 통해 확인하는 방법이 있습니다. 두 방법들에 대해서는 차후 ARIMA 검정에서 다룰 예정입니다.

(2) 임시 모델 선정

위의 전처리를 통해, 시계열 데이터를 정상 데이터 혹은 어쩔 수 없이 비정상 데이터로 두었다면, 그 다음은 해당 데이터에 적합한 예측 모델을 선정하는 것 입니다. 시계열 데이터 예측을 위해 고전적으로 많이 활용하는 모델들은 이동평균법(가중이동평균법), 지수평활법(가중지수평활법), 홀트 윈터스 가법 및 승법, 크로스톤, 회귀분석(또는 최소자승법), ARIMA, SARIMA 등이 존재합니다. 또한 Machine Learning 기법 에서는 수량 예측이 가능한 ML모델 들이 해당됩니다. 해당 모델로는 Regressions(Lasso, Ridge, Elastic Net), Decision Trees(Random Forest, XGBoost), SVR, RNN(LSTM) 등이 해당됩니다.

(3) 파라메터 추정

위에서 언급한 모델 중 하나를 선정했다면, 해당 모델이 요구하는 파라메터를 최적화 해야 합니다. 예를 들면, 가중이동평균법이나 가중지수평활법에는 최신 데이터에 대한 가중치(Weight)를 선정해야 하는데, 이를 튜닝해야 합니다. 반면, ARIMA, SARIMA 같은 모델에는 p,d,q 라는 가중치가 필요한데 이는 ARIMA 모델이 갖는 특성에 기인합니다. ARIMA 모델에 대해서는 다음에 다루도록 하겠습니다. 이렇듯 각 모델에 맞는 파라메터를 탐색하는 과정이 필요합니다.

(4) 정확도 진단

위 과정에서 파라메터를 탐색했다면 각 파라메터를 통해 나오는 예측값을 평가하며 해당 예측 모델이 쓸만한 지 확인해야 합니다. 수량기준 예측모델의 정확도 평가는 MAE, MAD, RMSE, NRMSE, MAPE 등이 존재합니다. 각각의 평가 방법이 가지는 특성 및 데이터 특성을 함께 고려하여 가장 객관적으로 평가할 수 있는 지표를 선정하고, 이를 기준으로 평가해야 합니다.

(5) 예측 활용

앞선 과정에서 예측 정확도가 가장 좋은 모델이 나왔다면 이를 실제 데이터 예측에 활용하면 됩니다.

2. 실험1 (Exponential Smoothing)

2.1 데이터 소개

구글 트렌드에서 "Deep Learning" 이라는 단어를 검색한 횟수를 스케일링한 자료입니다. (발생된 데이터 중 가장 max 값을 100, min 값을 0으로 변환하였습니다)

본 데이터는 2014년 10월 5일 부터 2019년 9월 29일까지 총 261주간의 검색 횟수 데이터입니다. 데이터를 살펴보면 2015년 이후 검색 빈도는 꾸준히 증가하고 있으며, 2016년 중순 이래로 증가 폭이 많이 커짐을 확인할 수 있습니다.

https://i0.wp.com/joohyoung.net/wp-content/uploads/2019/12/newplot_3.png?w=640&ssl=1

2.2 학습 및 검증 데이터 분할

전체 데이터는 261주의 관측치로 이뤄 져 있습니다. 데이터가 261개 입니다. 전체 데이터의 80%는 훈련, 20%는 검증용 데이터로 나눕니다.

학습데이터는 2014년 10월 1주차 부터 2018년 9월 마지막주차까지, 검증 데이터는 2018년 10월 1주차 부터 2019년 9월 마지막주차 까지이다. 즉, 4년치 데이터를 학습하고 1년치를 예측하기로 합니다.

다음은 데이터를 읽고 학습 및 검증 데이터로 나누는 과정입니다.

 

2.3 Simple Exponential smoothing 모델 생성 및 평가

2.3.1 Simple Exponential Smoothing (단순지수평활법) 개요

단순 지수 평활법은 일반 평균법이 아닌 가중 평균을 활용합니다. 계산 방법은 다음과 같습니다.

단순지수평활법에서는 '수준(Level)'을 구합니다. 이 수준의 초기 값은 전체 데이터의 평균으로 계산됩니다. 그 후, 각 시점에서 실제로 발생한 값과 수준값의 가중 합을 통해 새로운 '수준'을 구하며 예측을 진행합니다. Level 이라고 부르는 '수준'은 표현이 다소 어색할 수 있지만, 데이터 전체에서 믿고 싶은 정도(수준)라고 생각하면 될 것 같습니다.

1. 계산 (초기 수준값)

위에서 D는 실제 발생한 데이터들을 말한다. 즉, 초기 수준인 는 전체 데이터의 평균값으로 주어집니다.

2.차기 수준값 계산 ()

즉, 값을 구해보면, 다음과 같습니다.

실제 발생한 값인 과 전체 데이터 평균인 의 가중합을 구함에 있어 alpha 값을 크게 부여한다면 미래 수준을 구함에 있어 최신값에 많은 영향을 부여 하겠다는 것 입니다. 반대로, alpha를 작게 부여한다면 데이터 전체 평균값인 초기 수준을 더 많이 반영하겠다는 것을 말합니다. 이러한 alpha는 사용자가 지정해야 하는 Hyperparameter 입니다. 이는 데이터를 여러번 예측 하면서 찾아가야 합니다.

3.예측(, , )

예측은 마지막 시점(t)에서 구한 수준값 입니다. n 시점을 예측하는 과업이라면 예측작업은 시점과 관계없이 모두 동일하게 예측됩니다. 만약 이를 방지하기 위해서는 매번 새로운 alpha를 통해 전체 데이터셋을 다시 계산하면 됩니다.

다음 간략한 R코드를 통해 Simple Exponential Smoothing을 확인 해보겠습니다.

(동일한 Simple Exponential Smoothing에 대하여 2.3.2는 해당 로직대로 반복문을 구현한 코드이며, 2.3.3은 R에서 제공하는 stats 패키지 안에 존재하는 HoltWinters 함수를 이용한 방법입니다.)

 

2.3.2 Simple Exponential Smoothing 코드 (방법1, 반복문 활용)

단순 지수 평활법을 R에서 별도 패키지를 사용하지 않고 수동으로 작성했을 때는 다음과 같습니다.

위의 코드를 통해 나온 Level 의 마지막 값은 89.31527 입니다. 따라서, 미래의 모든 예측값은 89.31527 입니다. 해당 코드가 제대로 작성되었는지 R의 stats 패키지에 있는 HoltWinters 함수를 통해 다시 확인 해보겠습니다.

 

2.3.3 Simple Exponential Smoothing 코드 (방법2, stats::HoltWinters 활용)

R의 stats 패키지 안에 있는 HoltWinters를 사용하기 위해서는 입력되는 데이터가 ts(timeSeries) 객체여야 합니다. 일반 데이터를 R에서 제공하는 TimeSeries Object로 전환하기 위해서는 데이터의 기준일(시작일)주기를 알면 됩니다. 훈련 데이터의 경우 시작일이 2014년 10월 05일 부터 52번째 되는 날이 2015년 9월 27일 이므로, Frequency = 52 로 입력하였습니다.

훈련 데이터와 검증용 데이터를 아래 코드와 같이 ts 객체로 변환하고, 단순지수평활법 모델을 생성합니다. HoltWinters는 추후 다룰 내용인데, 삼중지수평활법 이라고도 합니다. 3개의 가중치를 활용해 수준, 추세, 계절성을 구합니다. HoltWinters 함수를 활용하여 단순 지수 평활법을 구하고자 할 때에는 함수 인자로 alpha에만 값을 부여하고, 나머지는 FALSE 를 입력하면 됩니다.

즉, HoltWinters 함수를 활용하면 단순지수평활, 이중지수평활, 삼중지수평활 모두를 활용할 수 있으며, 삼중지수평활법은 추후에 알아보겠지만 Holt-Winters 모형이라고도 합니다.

  • 참고 (ts 데이터를 만들 때 정확한 년 주차(week of year) 단위를 부여하는 방법)

1년이 보통 52주차, 53주차 정도 되는데 엄밀하게 따지면 365.25/7로 나눈 것과 같습니다.

매우 정확한 주차 데이터를 활용하기 위해서 다음과 같은 방법을 활용하기도 합니다.

(참조 : https://stackoverflow.com/questions/22188660/r-time-series-modeling-on-weekly-data-using-ts-object)

위의 2.3.3 에서 생성한 모델 정보는 다음과 같습니다.

마지막 Coefficients 값이 89.31527로 반복문으로 계산한 수준 값과 일치함을 확인하였습니다.

 

2.3.4 모델의 검증, 예측, 평가에 대하여

  • 검증(Validation), 예측 (Prediction), 그리고 평가 (Evaluation) 에 대하여

ML및 AI등 예측모델을 생성함에 있어 중요한 과정인 모델 검증, 예측, 그리고 평가에 대하여 실생활의 사례를 들어 설명을 하고자 합니다.

모델 검증 (Validation)

토익 공부라는 간단한 실생활의 예를 들어보겠습니다. 토익을 처음 공부하는 사람이라면 기본서를 읽을 것 입니다. 이 과정에서 온라인 강의를 듣고 기초적인 이론과 문제 유형들을 익힙니다. 중간 중간 모의고사와 같은 팝업 퀴즈를 통해 문제 풀이 감각을 키워 나갑니다. 어느 수준에 도달했다고 생각하면 '1000제' 또는 '모의고사 5회집' 등등의 실전 문제가 가득 담긴 책들을 사서 풉니다. 이때 시간을 재면서 실제 시험과 같은 긴장감을 유지하여 푸는데 이 과정의 경우가 모델을 검증(Validation) 하는 과정이라고 생각하면 됩니다. 더 간단하게 말해, '정답지'가 지금 내 손에 있으면 '검증' 입니다.

예측 (Prediction)

예측이란 모델이 학습 시 활용하지 않았던 데이터를 기준으로 새로운 값을 만들어내는 것 입니다.

우리가 정답지를 보지 않고 모의고사 문제를 푸는 과정 자체를 예측이라고 보면 됩니다. 학습한 내용을 기반으로 문제가 주어졌을 때 해결하는 것 입니다. 정답지는 내 손에 있지만 정답지를 바로 확인하진 않습니다. 일단 문제를 다 풀고 정답을 나중에 확인합니다. 이 과정을 위해 문제를 해결하는 과정 자체를 예측입니다. 예측은 검증 과정에서도 할 수 있고, 평가를 위해서도 할 수 있습니다.

데이터의 분포, 유사성 등을 통해 학습한 내용을 기반으로 미래 정보를 만들어내는 행위를 '예측한다' 라고 합니다.

(통계학에서 말하는 통계적 추정(Estimation) 과는 다릅니다. 예측이 오차 범위가 더욱 큰데, 이는 나중에 설명 하도록 하고 일단 예측은 오차의 범위가 통계적 추정보다 조금 더 크다는 것을 알아두세요.)

평가 (Evaluation)

A, B, C, D 네 사람중 누가 토익 점수가 높은지 실전 토익고사를 치룬 이후에 점수로서 평가하는 것이 간단한 예입니다. 여기서 말하는 A, B, C, D는 하나의 예측 모델들이지요. 같은 데이터에 대하여 단일지수평활, 이중지수평활, 홀트-윈터 가법, 승법, ARIMA, LSTM 등 시계열 데이터를 예측하는 다양한 모델들을 만들고 각각의 모델의 정확도를 같은 기준으로 측정하는 것이 '평가' 라고 합니다. 이 평가를 위해서도 우리의 모델이 '예측'을 수행합니다.

다시 본문으로 들어갑니다.

 

모델 검증

우리는 앞서 2.3.3 에서 원본 데이터를 train과 valid로 나누었습니다.

train데이터로 모델을 학습했으면, valid는 모의고사로 남겨두고 나중에 풀어보게 시킬 것 입니다.

검증 데이터(valid)는 제가 이미 가지고 있지만 모델에는 보여주지 않았습니다. 일종의 정답지가 제 손에 있는 모의고사와 같은 격 이지요. 검증 데이터는 앞에서 쪼갠 바와 같이 2018년 10월 부터 2019년 9월 마지막 주까지의 데이터 입니다. 해당 길이만큼 모델이 예측을 수행하여, 제가 가지고 있는 검증 데이터와 비교 해보도록 합니다.

미래 길이와 상관없이 모든 예측값이 마지막 수준값인 89.31527로 동일함을 확인할 수 있습니다.

 

예측된 데이터를 평가

본 과정에서는 alpha 0.1 부터 alpha가 0.9 까지의 Simple Exponential Smoothing 모델들을 생성하고, 각 모델에서 예측값을 추출한 후 제가 가지고 있는 검증 데이터와 모델 예측 데이터가 얼마나 비슷한지 평가합니다. 그리고 각 모델들에 대한 평가를 통해 성능이 우수한 모델을 선택 할 것 입니다.

아래는 해당 로직을 위한 코드입니다. alphas는 0.1부터 0.9까지의 값이 들어 있는 리스트입니다. 해당 리스트 값을 하나씩 순회하며 모델을 생성합니다.

MAE 기준으로 alpha가 0.9 일때 예측력이 우수함을 확인 할 수 있습니다.

 

3.4 Double Exponential smoothing 모델 생성 및 평가

Double Exponential Smoothing(이중지수평활법)은 위의 Simple Exponential Smoothing과 유사하나 파라메터로 gamma 값이 추가된 모형입니다.

 

3.4.1 이중지수평활법 예측

  1. 결정

이중지수평활법에서는 두 개의 변수를 활용합니다. 입니다. 의 경우는 위의 단순지수평활법 처럼 전체 데이터의 수준을 말합니다. 또한 의 경우에는 추세(성장률) 을 표현합니다. 초기 값인 는 전체 학습데이터를 선형회귀(Least Square) 방법으로 적합시켜 계산합니다. 이때 선형회귀 모델에서 독립변수는 시간 인덱스이며 종속 변수는 관측값이 됩니다. 선형회귀 결과 도출되는 절편(Intercept)와 계수값(Coefficient)가 각각 가 됩니다.

  1. 의 계산

다음 수식에서 은 새롭게 관측된 변수입니다. 그리고 뒤에 보이는 는 t-1 시점에서 계산된 값 입니다.

1번 과정에서 보았듯, 전체 데이터의 회귀식을 활용하여 를 계산 하였고, 의 경우 기존 데이터의 첫 번째 관측값입니다. 이 과정으로 순차적으로 L을 구하며 최종적으로 을 계산하면 됩니다.

  1. 의 계산

B 또한 마찬가지로 , 그리고 위에서 계산된 을 통해 계산되어 집니다.

  1. 예측

예측 과정은 다음과 같습니다. 계산된 수준과 추세가 더해집니다.

 

3.4.2 이중지수평활법 모형 예측

stats 패키지의 HoltWinters 함수에서 파라메터를 2개를 부여하면 이중지수평활법이 됩니다. 모형 생성, 검증, 예측 과정은 모두 2.3.4 과 동일합니다.

MAE기준으로 alpha = 0.6 gamma = 0.8 일 때 가장 예측력이 우수합니다. (MAE = 4.732972)

 

3.5 예측 결과 시각화

  • 최적 파라메터로 최종 모델 및 예측값 생성

 

  • Simple Exponential smoothing

단순지수 평활법은 추세와 관계없이 일정한 예측값을 출력함을 확인할 수 있습니다.

https://i1.wp.com/joohyoung.net/wp-content/uploads/2019/12/newplot_4.png?w=640&ssl=1
  • Double Exponential smoothing

이중지수평활법의 경우 매 시점마다 값이 다르며, 전반적으로 하향 추세를 예측하고 있습니다.

https://i0.wp.com/joohyoung.net/wp-content/uploads/2019/12/newplot_5.png?w=640&ssl=1

 

4. 실험2 (HoltWinters)

4.1 데이터 소개

본 데이터는 '구글 트렌드'(https://www.google.com/trends/?hl=ko) 에서 검색어 '토익(toeic)'에 대한 주차별 검색횟수에 대한 자료입니다. 데이터는 2014년 10월 5일부터 2019년 9월 29일까지 각 주차별 합계를 나타내며, 가장 높은 값은 100 가장 낮은 값은 0을 갖게 scaling 되었습니다. 본 자료를 그래프로 나타내면 다음과 같습니다.

https://i2.wp.com/joohyoung.net/wp-content/uploads/2019/12/newplot.png?w=640&ssl=1

토익이라는 주제가 취업과 연관되어 있음을 반영하듯 상반기(3~4월) 및 하반기(8~9월) 취업 시즌에 맞물려 검색 빈도수가 증가하고 있음을 알 수 있습니다. 이러한 주기가 2년 이상 반복적으로 나타나고 있으므로 본 데이터는 Seasonal Variational 하다고 할 수 있습니다.

 

4.2 학습 및 검증 데이터의 분할

  • 개요

앞서 3장에서 설명했던 것 처럼 학습과 검증 데이터를 분할합니다. 데이터 관측치는 261개 입니다. 2014년 10월부터 2019년 9월까지 주차별로 집계된 데이터 입니다. 전체 데이터의 80%를 학습데이터로, 나머지 20%를 검증데이터로 분할합니다.

전체 데이터 수 : 261

학습용 데이터 수 : 209

검증용 데이터 수 : 52

학습 데이터로 모형을 생성하고, 검증 데이터를 통해 모형 예측력을 평가합니다. 이러한 분류 기준은 앞으로 만들고 비교할 4개 모델에 모두 동일하게 적용되었습니다.

  • 데이터 분할 R 코드

 

4.3 Holt-Winters 모형 생성

  • 홀트 윈터스 예측모형 개요

홀트-윈터스 모형은 데이터의 계절변동이 존재할 때 사용하는 방법입니다. 가법과 승법 모형이 존재합니다. 가법(Additive) 모형의 경우에는 계절변동의 산포가 일정할 경우 활용되며, 승법(Multiplicative)의 경우에는 계절변동의 산포가 증가할 경우에 활용합니다. 수식으로 비교를 해보겠습니다.

 

4.3.1 홀트 윈터스 가법모형

  • 예측식

 

  • 평활식

 

위는 홀트 윈터스 가법모형을 구성하는 1개의 예측식과 3개 평활식을 나타낸 것 입니다. 예측식은 우리가 예측하고자 하는 값을 만들어 내는 식이며, 평활식은 예측에 필요한 변수들을 계산하는 식이라고 할 수 있습니다. 평활식 부분을 살펴보면 위에서부터 수준, 추세, 계설성분 순 입니다. 각각의 평활식이 가중합으로 구성되어 있음을 알 수 있습니다. 가중치는 alpha, gamma, delta 순이며, 가중치는 실험자가 부여하는 것 입니다. 값이 클 수록 최신성을 반영합니다.

※ 주의사항

분석을 위해 R의 stats 패키지 안에 존재하는 HoltWinters 함수를 활용합니다. 해당 함수에서는 각각의 인자값을 alpha, beta, gamma로 부여하게 되어있습니다. 수식과 실제 함수에서 선언하는 변수명이 다름에 유의하세요. 위의 수식에서 gamma가 HoltWinters 함수에서 beta 이며, 위 수식의 delta가 HoltWinters 함수에서 gamma 입니다.

 

4.3.2 홀트 윈터스 승법모형

  • 예측식

 

  • 평활식

 

홀트 윈터스 승법모형의 예측식과 평활식이 가법 모형과 다소 다름을 알 수 있습니다. 승법모형에서는 예측식에서 계절성분이 곱으로 반영됩니다. 반대로 가법모형에서는 더해지죠. 바로 여기에서 두 모델의 이름의 차이를 알 수 있습니다. 예측식에서 계설성분을 곱하다 보니, 계절적 변동성이 큰 경우라면 곱절로 많은 반영을 하게 될 것이라 기대할 수 있습니다.

평활식에서 첫 번째 줄의 수준을 구하는 식에서 가법 모형과 다른 부분을 살펴보겠습니다. 가법 모형은 과거 값(, 혹은 예측 값이 되겠지요. 우리가 학습하고자 하는 대상임과 동시에 예측하고자 하는 값 입니다)을 계절 성분으로 빼주었습니다. 하지만, 승법모형에서는 계절 성분으로 과거 값을 나눠주고 있습니다. 이는 곧, 실제값을 계절 성분의 상대적인 값으로 나타낸다는 것 입니다.

 

4.3.3 홀트 윈터스 가법 및 승법모형 구현

  • 실험절차

(1) 평가함수 설정 MAE, MSE, RMSE, MAPE

(2) Weight Parameter (alpha, gamma, delta)의 범위 설정

(3) train, valid 데이터셋을 R의 ts 객체로 생성 (ts : TimeSeries)

(4) 각 Weight 별로 Holt-Winter 모형 생성 (가법 seasonal ="additive" , 승법 seasonal = "multiplicative")

(5) 생성된 Holt-Winter 모형에 대하여 valid 데이터로 평가 (MAE, MSE, RMSE, MAPE)

(6) 결과 리포팅

 

  • 절차에 따른 R 코드

 

  • 가법모형 결과

 

  • 위와 같은 오차테이블이 만들어 지는데, 위의 오차 Table에서 가장 낮은 오차를 구해보면 다음과 같다. (MAE기준)

MAE를 기준으로 오차가 가장 낮은 홀트 윈터 가법 모형Weight parameter는 alpha = 0.1 gamma = 0.3 delta = 0.3 임을 확인합니다.

 

  • 승법모형 결과

MAE를 기준으로 오차가 가장 낮은 홀트 윈터 승법 모형의 Weight parameter는 alpha = 0.1, gamma = 0.3, delta = 0.4 임을 확인하였습니다. 다만, 승법모형의 MAE, MSE, MAPE, RMSE가 전체적으로 가법 모형보다는 높네요.

 

4.4 Trigonometric, Binary Model 과의 비교

4.4.1 Trigonometric 모델 생성

Trigonometric, Binary Model의 설명은 1편을 참고해주시기 바랍니다.

  • R 코드

 

  • 모델 생성 결과

 

4.4.2 Binary Model 생성

  • R 코드

위의 str(bin_toeic_data)를 실행시켜보면 다음과 같은 데이터 구조가 나옵니다.

Binary Model의 데이터셋은 다음과 같이 구성됩니다.

 

  • 모델 생성 결과

 

4.5 전체 모델의 예측력 평가

우리는 위의 과정을 통해 Holt-Winter 가법, 승법, Trigonometric Model1, Model2, 그리고 Binary 모델까지 총 5개의 예측 모델을 생성했습니다. Holt-Winter 가법 모형의 경우 파라메터 탐색을 통해 alpha = 0.1, beta = 0.3, gamma = 0.3 에서 예측 오차가 가장 낮았으며, 승법 모형의 경우 alpha = 0.1, beta = 0.3, gamma = 0.4 에서 예측 오차가 가장 낮았습니다. 다음 코드는 각각 모델의 예측값을 한번에 비교하는 과정입니다.

결과 확인

MAE, MSE, RMSE 기준으로는 홀트 윈터 승법 모형이 가장 예측력이 우수하고, MAPE에서는 홀트 윈터 가법 모형이 가장 우수합니다.

 

4.6 예측 결과 시각화

Holt-Winters의 예측 결과는 파란색으로, 실제 값은 검정색으로 표현하였습니다.

예측기간은 2018-10-07 ~ 2019-09-29까지 거의 1년에 해당되는 값이며, 이는 학습에 전혀 활용되지 않은 부분입니다. 저만 알고 있었고 모델에는 가르쳐 주지 않았습니다. 모델이 예측한 결과가 실제 값을 어느 정도 잘 따라라고 있음을 확인하였습니다.

https://i2.wp.com/joohyoung.net/wp-content/uploads/2019/12/newplot_2.png?w=640&ssl=1

 

 

[End of Documents]

 

Leave Your Comment