본문 바로가기

Data Science/Time series data

[Time Series Forecasting] Multistep 시계열 데이터 예측을 위한 RNN기반 Encoder-Decoder 모델

728x90
해당 글은 아래 Reference의 [Encoder-Decoder Model for Multistep Time Series Forecasting Using PyTorch] 글을 참고했습니다. 

 

Encoder-Decoder 모델은 최근 연구에서 언어 번역 등과 같은 sequence to sequence NLP (자연어 처리) 문제를 효과적으로 해결하는 결과를 보여줬다.

multistep 시계열 데이터 예측 문제도 seq2seq 문제와 같이 다뤄질 수 있기 때문에, encoder-decoder  모델도 사용될 수 있다

 

DATASET(데이터셋)

해당 reference 글에서는 다음 물품 판매량에 대한 Kaggle 데이터셋을 사용했다

 

Store Item Demand Forecasting Challenge

Predict 3 months of item sales at different stores

www.kaggle.com

해당 Kaggle competition의 목적은 지난 5년치의 물품 판매량 데이터를 토대로 이후 3개월의 물품 판매량을 예측하는 것이기 때문에 multi step time series forecasting 문제로 적용된다. 

500개의 물품 (item)이 있으므로, 즉 해당 데이터셋에서는 500개의 각기 다른 물품 판매량 관련 시계열 데이터가 제공된 것이다. 

 

Slaes plot of 10 items chosen at random (Reference Image)

 

Data Preprocessing

  • 제공된 데이터셋의 경우, 그래프(plot)을 그려보면, 주간(weekly), 월간(monthly), 계절성(seasonality), 연간(yearly) 데이터 추세(trend)가 있음을 알 수 있다. 

* 사용되는 데이터셋(물품 데이터셋)과 같이 인간의 행동패턴과 관련된 데이터셋의 경우, 이러한 시간별 추세의 특성을 갖는다.

 

  • 위 reference 글에서는 데이터의 주기성을 반영하기 위해, DateTime 으로 된 타임스탬프를 sine cosine으로 변환시켰다

* 아래 글에서 데이터의 주기성을 반영하기 위해 타임스탬프를 sine cosine 변환시키는 것의 의미에 대해서 설명하고 있다

 

Encoding cyclical continuous features - 24-hour time

Some data is inherently cyclical. Time is a rich example of this: minutes, hours, seconds, day of week, week of month, month, season, and so on all follow cycles. Ecological features like tide, astrological features like position in orbit, spatial features

ianlondon.github.io

 

 

Sequence Building

  • encoder-decoder 모델은 input과 output으로 sequence를 사용하기 때문에, 데이터셋을 seqeunce들로 나누는 작업이 필요하다
  • reference의 글은 Kaggle competetion을 위한 것이었으므로, 이후 3달의 판매량을 예측하는 규칙에 맞게 output은 90일의 데이터로 설정하였으며, input은 임의적으로 180일(개)의 데이터를 사용하도록 설정했다

 

 

Model Architecture

  • encoder-decoder 모델은 seq2seq 문제를 해결하기 위해 사용되는 RNN 모델의 한 종류이다 
  • encoder-decoder 모델은 2가지의 네트워크(encoder와 decoder)로 구성되어 있다
  • encoder 네트워크는 input sequence의 특징을 학습하고, 학습의 결과로 context vector를 전달한다
  • decoder 네트워크는 encoder가 전달한 context vector를 받아 output sequence를 추출하기 위해 학습한다
  • encoder와 decoder에서 모두 sequence 데이터는 recurrent cell에 의해 처리된다

해당 글에서는 단기 문제를 잘처리하기 위해 Gate Recurrent Unit(GRU)을 recurrent cell로 사용했다

Encoder

  • encoder network의 input shape은 (sequence의 길이, n_values(사용되는 feature(value)의 개수)로 구성되어 있다
  • 즉, 각자 다른 feature(value)들은 sequence 길이만큼 나누어져 input에 들어가는 것이다. 

 

  • 해당 reference 글에서 이러한 value들은 각각 input으로 구성될 때, 각자의 종류에 따라 다르게 취급되었다. 

1) Time dependant features : 시간에 따라 값이 달라지는 특성을 가진 feature (ex) Datetime, 판매량정보), encoder에서 seqeunce 길이큼의 해당 데이터들은 각각 RNN cell로 들어간다

2) Numerical feature : 시간에 따라 달라지지 않는 정적인 숫자로 된 feature, sequence의 길이만큼 반복되어 RNN cell로 들어간다.(해당 value를 반복하고 병합하는 과정은 Dataset에서 처리하게 구현됨)

3) Catrgorical feature : 상점의 ID, 물품의 ID와 같이 카테고리로 다루어지는 feature, categorical feature를 다루는 방법은 여러가지(one-hot encoding 등)가 될 수 있지만, 해당 글에서는 one-hot encoding을 한 후, numerical feature과 동일하게 sequence의 길이만큼 반복되어 RNN cell로 들어간다.

- 이러한 input sequence는 GRU 네트워크로 들어가게 된다

 

 

Reference 

 

Encoder-Decoder Model for Multistep time series forecasting using Pytorch

Learn how to use encoder-decoder model for multi-step time series forecasting

towardsdatascience.com

 

반응형