본문 바로가기
논문 리뷰/Time Series

딥러닝 모델로 시계열 데이터 예측하기 - [논문 리뷰] Time Series Forecasting (TSF) Using Various Deep Learning Models (2022)

by inhovation97 2023. 3. 12.

이 포스팅은 딥러닝 모델을 활용하여 시계열 데이터 예측한 논문을 리뷰하는 글입니다. 시계열 데이터의 경험이 적은 분들에게 유용한 논문인 것 같아서 리뷰합니다.읽은 뒤에는 시계열 데이터 핸들링과 실험 설계를 더욱 잘 할 수 있을겁니다. 

이 논문의 main contribution은 Time Series data를 forecasting 할 때에 input data의 window size를 조절할 W, input data로부터 몇 step 만큼의 미래를 예측할 것인지 정하는 K 즉, 하이퍼 파라미터 W와 K를 조절해가며 각 딥러닝 모델마다 어떤 결과를 내는 특성이 있는지 비교 관찰한 것입니다.

쓰인 모델은 RNN, LSTM, GRU, Transformer입니다.

RNN 계열 모델의 성능이 Transformer보다 잘 나왓기에, 제게는 트랜스포머가 더 좋다는 선입견이 깨진 연구였네요.

우선 논문 내 figure를 보고 어떤 실험을 하였는지 먼저 살펴보겠습니다.

 

 

Time Series에서 input 데이터의 크기를 정하기 위해서는 look-back window 사이즈 w를 정할 수 있습니다.

output 데이터의 크기를 정하기 위해서는 k를 정할 수 있습니다. 이는 input data로 부터 얼만큼의 미래(k)의 시점(y_t+k)을 예측할 지 의미합니다. 따라서 해당 논문은 딥러닝 모델에 데이터의 w와 k 사이즈를 조절해가며, 모델의 예측 성능을 비교 실험 합니다. 글이 쓰다보니까 꽤 길어졋는데, 맨 끝에 5. Experiments 부분만 보셔도 괜찮은 것 같습니다. 

 

(1)식을 보고 K가 2 이상일 때, many to one인지 many to many인지 헷갈렸는데, 저자의 코드를 보니 many to many로 w사이즈의 데이터를 입력받아 K개 만큼의 미래 시점을 예측하는 실험이네요.

(하지만 위 논문의 실험에서 데이터 전처리가 잘못된 부분이 있습니다. 아래 5. Data & Experiments에서 설명합니다.)

해당 논문은 특별한 것은 아니고 아카이브에 올라온 논문인데, 그저 여태까지 나온 시계열 딥러닝 모델을 벤치마킹하여 얻은 결과를 정리한 논문입니다. 사실 저는 이런 벤치마킹 논문에 대해 비관적인 의견을 갖고 있었습니다. 저도 이런 논문을 썼거든요... 하지만 막상 Time Series에 대한 경험이 별로 없는 상태에서 이런 논문을 읽으니 생각이 정리되고, 많은 도움이 되었네요 ㅎㅎ...

 

1. Abstract
2. Introduction
3. Metohdology
4. Deep Learning Frameworks
5. Data & Experiments
6. Conclusions

모델 부분에 대한 설명이 필요없으시면, 2와 4부분은 건너띄시면 됩니다.

 

1. Abstract

 

  Time Series Forecasting(TSF)은 이전의 시점으로부터 학습한 것을 기반으로 미래 시점의 예측 변수를 예측하는 것이다. 이를 쉽게 다루기 위해서는 과거 시점의 데이터를 고정된 윈도우 사이즈만큼 입력하여 학습하는 방법이 사용되곤 한다. 해당 논문에서는 input data의 크기를 결정하는 look-back window size와 얼만큼의 미래를 예측할지 output data의 크기를 조절하여 모델의 성능에 어떤 결과를 미치는지 연구하였다. 또한 최근 자연어와 영상쪽에 좋은 성능을 보이는 트랜스포머 기반의 모델도 고려하였다. 전체적으로 RNN, LSTM, GRU, Transformer 4모델을 다룬다. dataset(hourly)은 Beiging Air Quality Dataset from the UCI website를 이용하였다. 5년동안(2010-14) 시간 별로 측정된 다변량 시계열 데이터이다. 각 모델마다 look-back window size와 예측할 output data의 크기의 관계를 조사하였다. 

 

 

2. Introduction

 

도입 부분은 안읽어도 무방한 것 같습니다.

Time Seriese Forecasting(TSF)은 과거의 obsevations로부터 미래 시점의 예측 변수 분포를 예측하는 문제이다. 이때 사용할 수 있는 모델은 크게 3개로 분류할 수 있다. traditional models, Machine Learning models, and deep learning models. traditional models부터 살펴보면, 유명한 통계 모델인 ARMA(stationary일 경우), ARIMA(non stationary일 경우)이 있다. 이 두 모델은 linear model이며, 각각 stationary, non-stationary 시계열 데이터에 이용된다.

시계열 데이터는 어떠한 시점에서도 항상 평균과 분산이 상수라면(일정한 분포를 띈다면), stationary하다고 볼 수 있다. (real world에서 이런 데이터는 매우 드물다..)

이밖에도 여러개가 있지만 이런 전통 통계 모델은 문제점이 있는데, 첫째 가장 최근의 데이터로부터 고정된 요인들만으로 회귀 예측하는 것이 큰 문제이다. 둘째 전통적인 방법은 반복적이며, 종종 프로세스가 어떻게 시작되는지에 씨드에 매우 민감하다. 세번째 정상성이라는 것은 드리프트, 계절성, 자기상관, 이분산성만으로 판단하기에는 조금 어려운 부분이 있다. 따라서 머신러닝 모델이 필요하다.

머신러닝에서는 SVM을 활용한 것과 ANN이 전통 통계 모델보다 성능이 좋았으며, RNN, LSTM, GRU, attention 기반 모델인 트랜스포머까지 해당 task에 아주 잘 맞아 좋은 성능을 내었다. 하지만 문제는 얼만큼의 데이터를 input하는지 얼만큼의 데이터를 forecasting하는지이다. 따라서 3가지를 목표로 연구하였다.

 

1. time series데이터에 대해 RNN, LSTM, GRU, Transformer 4개의 모델들을 학습 및 평가하여 비교한다.

2. 각 모델들의 강점과 약점을 평가한다.

3. w, k의 영향력을 정확도 측면에서 이해해본다. 

 

 

3. Methodology

 

 

Time Series에서 input 데이터의 크기를 정하기 위해서는 look-back window 사이즈 w를 정할 수 있다.

output 데이터의 크기를 정하기 위해서는 k를 정할 수 있다. input data로 부터 얼만큼의 미래를 예측할 지를 의미한다.

데이터는 Min-Max scaling으로 표준화 한뒤, w만큼의 데이터가 input되어 k 시점만큼 예측하도록 전처리 된다.

 

 

4. Deep Learning Frameworks

논문에서 사용한 RNN, LSTM, GRU, Transformer는 따로 정리하여 포스팅하였습니다.

설명이 필요하신 분들은 링크를 참조하시면 됩니다.

 

 

5. Data & Experiments

Data

실험 데이터

table 1

table 1을 봅니다.

해당 데이터는 2010.01 ~ 2014.12.31기간 5년동안 수집된 hourly time series 데이터로 43,824 rows(결측 24 rows 드롭) 13 columns입니다. 

첫번째 컬럼인 인덱스는 지우고, 4개의 시간 관련 컬럼은 1개로 통일하였습니다. PM2.5는 예측변수입니다.

7columns가 추가되었습니다. figure 7이 추가 변수들과 함께 시계열 변수들의 plot입니다. 

 

데이터 전처리

셔플하지 않고 시간의 순서대로 split하여 7:3으로 train/test을 구성하였습니다.

범주형 변수는 원핫 인코딩을 하였으며, 수치형 변수는 min-max 스케일링을 진행했다고 합니다. 

 

저자 코드의 문제점...

해당 논문의 실험 중 데이터 전처리 코드

사실 저는 위 실험의 시계열 데이터의 min-max가 어떻게 진행됐는지 더욱 자세히 알고 싶었습니다. 
시계열 데이터는 그 특성때문에 스케일링을 할 때에 조금 더 신경써야하는 부분이 있습니다.

시계열 데이터는 window size만큼 들어가도록 input을 설계하는데, 이때 w사이즈 만큼의 input data가 train set 전체에 대해서 min-max 스케일링이 된 상태라면, 미래 시점의 데이터까지 같이 고려하여 스케일링이 되기 때문입니다. (절대 알 수 없는 미래 데이터가 개입 됨) trainset은 그렇다쳐도, 적어도!! testset에 대해서는 trainset에서 스케일링했던 통계 값으로 스케일링을 해주었어야 합니다. 
예전에 제가 주식 데이터를 다룰 때, 위 저자처럼 min-max 스케일링을 진행했다가 나중에 잘못됨을 느끼고, 생각보다 시계열 데이터에 대한 스케일링은 섬세해야 함을 깨달아 문제를 정의하게 되었고, 그것에 대해 실험하여 논문을 쓰게 되었습니다. 실험한 논문에 대한 글의 링크를 첨부합니다. 
(당연하지만, 미래 데이터와 같이 스케일링을 한 것과 따로 한 것의 성능은 천지차이더라구요...)

 

Experiments

 

하이퍼 파라미터

각 모델마다 위 table2로 실험을 설계하였으며, loss function은 MSE, metric은 MAE와 RMSE로 하였다. 

Single-step(left) & Multi-step(right)

A.Predict Multiple Timesteps Ahead

(1) Multi-step에서 w=96(4days)를 고정하여 k를 늘려감에 따라 나오는 알고리즘 별 각 성능과 관찰되는 결과를 비교

 

B.Different Look-back Window Sizes

(2) Single-step predictions: w를 각각 조절하여 알고리즘 별 각 성능과 관찰되는 결과를 비교 (k=1)

(3) Multi-step predictions: w를 각각 조절하여 알고리즘 별 각 성능과 관찰되는 결과를 비교 (k=3)

 

(1),(2),(3) 순서대로 봅니다.

 

A.Predict Multiple Timesteps Ahead

w = 4 days(24*4)으로 고정하여 input되어, k시점만큼 예측합니다.

 

1. 트랜스포머 모델이 전체 실험에서 8개의 결과가 best를 찍었습니다.

2. 당연하게도 모든 모델이 k가 늘어남에 따라 예측력이 떨어집니다. 이에 K=4 이상부터는 급격하게 오차가 커지는 결과가 관찰되었습니다. 

3. 하지만 한 시점만 예측하는 1 hour는 LSTM, GRU, Transformer가 비슷한 성능을 기록했네요.

 

B.Different Look-back Window Sizes

(2) Single-step predictions: w를 각각 조절하여 알고리즘 별 각 성능과 관찰되는 결과를 비교 (k=1)

 

1. 트랜스포머 모델이 과반수 이상(6개)의 결과가 bset를 찍었습니다. (w= 4, 8, 16 days)

이는 attention기반의 모델인 트랜스포머의 장점이 부각된 결과입니다.

2. (w = 1, 2 days)에서는 LSTM과 GRU의 성능이 RNN, 트랜스포머보다도 성능이 좋습니다!

해석하자면, LSTM과 GRU는 RNN보다 long term memory 능력도 좋고, 기울기 소실 문제도 잘 다루었다고 볼 수 있습니다. 

 

종합하면, Single step prediction에서 window size를 작게 잡는다면, LSTM이나 GRU가 bset choice 입니다.

Transformer는 확실히 long term memory 능력이 가장 좋지만, w가 작을 때의 GRU와 LSTM의 성능을 이기지 못했습니다.

이는 input data가 크면 클수록, noise가 추가되기 때문으로 해석할 수 있습니다.

따라서 window size를 작게하여, single step으로 LSTM or GRU를 선택하는 것이 베스트라고 볼 수 있습니다.

(input data를 크게할수록 좋고, 트랜스포머 모델이 가장 좋은 성능을 낼 줄 알았는데 이런 결과가 나오네요. 시계열 데이터의 특성때문인 것 같습니다. 아마 Text data이면 결과가 다를 것 같은.. )

 

(3) Multi-step predictions: w를 각각 조절하여 알고리즘 별 각 성능과 관찰되는 결과를 비교 (k=3)

1. Multi-step predictions에서는 w사이즈에 상관없이 트랜스포머의 성능이 전부 좋았습니다. 

2. w = 48, 96인 2days와 4days일 때의 성능이 가장 좋았습니다.

종합하자면, multi-step을 예측하는 문제일 때는 트랜스포머 모델이 가장 좋으며, 최적의 window size가 있다는 것이 인사이트입니다!

전 사실 이것을 t=1, t=2, t=3 일때 각각을 3번씩 실험한 줄 알았는데, 그냥 매 input마다 3개 predictions(k=3)가 나오니까 그것들을 각각 column화하여 나온 결과들을 정리한 표더라구요. t=1, t=2. t=3으로 독립실험할 때는 결과가 다를 수 있을 것 같아 언급합니다.

 

위 실험세팅에 관해서는 T1, T2, T3의 결과를 시각화한 plot도 살펴보겠습니다. (트랜스포머만)

사실 미래의 값을 회귀문제로 forecasting한다는 것이 정말 쉽지 않은 일인데, 이렇게 결과가 잘 나온것은 아마 제가 위에서 언급한 잘못된 scaling때문으로 볼 수 있습니다...

그래도 모델 아키텍쳐적으로 해석해볼 수 있는 결과들이라 인사이트는 가져갈 수 있을 것 같네요.

 

 

6. Conclusions

1. 트랜스포머는 먼 미래를 예측할 때에 유리합니다. LSTM, GRU는 짧은 시점의 예측성능이 RNN보다 우수합니다. 

2. window size w는 성능과 직결된 아주 중요한 변수이며, 최적의 하이퍼 파라미터가 존재합니다. 

3. single-step의 예측에서, w=24가 최적의 값이었습니다. multi-step prediction에서는 트랜스포머가 압도적입니다. single-step prediction에서는 트랜스포머는 w사이즈가 커야 성능이 잘 나옵니다. 하지만 w가 작을 때는 GRU와 LSTM의 성능이 좋습니다.

댓글