1. 시계열 예측이란?

Time Series Forecasting이란? "기존에 다루던 분류(Classification)와는 다르게 출력값을 예측하는 회귀(Regression)의 일종"이다.

- 가격이나 확률 같이 연속된 출력 값을 예측하는 것이 목적이며, 이를 위해서 시간에 따라 연속된 데이터를 사용

- 대체로 csv와 같은 정형화된 데이터를 주요 사용하기에, 데이터 전처리 방식이 다른 분류(Classfication) 문제들과는 차이가 존재

ex) 고속도로 통행량에 따른 피서객 예측?

ex) 6시간의 기록이 주어졌을 때, 앞으로 1시간의 미래를 예측하는 모델
- Time Series Forecasting의 구성
Dense -> Conv1D -> RNN 3가지 Layer로 구성됨

- 마지막에 RNN이 사용되는 이유는 시계열 예측의 입력 데이터가 시기별로 데이터가 존재하는데, 다음 시기의 데이터는 이전 데이터에 일정 정도 영향을 받기 때문이다.

 

1-1. 시계열 예측 데이터 구성

시계열 예측에서는 데이터의 연속된 값들을 기반으로 일련된 예측을 수행

- 연속된 값들을 Input Data로 사용하는 것이 가장 큰 특징이다.

- windowed data를 구성하는 것으로 학습 데이터를 생성함

- 데이터의 경우, 전처리 과정을 통해 작업 및 모델 유형에 맞춰서 생성하게 된다.

 

2. 시계열 예측의 구조

시계열 계측에는 두가지 유형이 존재

- 단일 스텝 모델 : 시계열 예측에는 현재 조건을 기반으로 미래의 1 타임스텝을 예측

- 다중 스텝 모델 : 현재 조건을 기반으로 미래의 일정 범위의 값을 예측

 

단일 스텝 모델의 처리 프로세스

1) Dense 

2) Conv1D : 

3) RNN : RNN Layer의 경우 , 여러 타임 스텝의 값들을 입력으로 사용하여 예측을 수행

 

# Tensorflow에서 모델 구현하기
multi_step_dense = tf.keras.Sequential([
 tf.keras.layers.Dense(units=32, activation='relu'),
 tf.keras.layers.Dense(units=32, activation='relu'),
 tf.keras.layers.Dense(units=1)
])

conv_model = tf.keras.Sequential([
 tf.keras.layers.Conv1d(filter=32, kernal_size=(CONV_WIDTH,), activation='relu'),
 tf.keras.layers.Dense(units=32, activation='relu'),
 tf.keras.layers.Dense(units=1),
])

lstm_model = tf.keras.models.Sequential([
 tf.keras.layers.LSTM(32,return_sequences=True),
 tf.keras.layers.Dense(units=1)
])

# return_sequences를 True로 지정하여, 여러 타입스텝에서 동시에 모델 훈련을 가능케 하는게 중요하다.
t=0 부터 t=24까지의 값을 가지고 있다고 한다면, input은 t=0에서 t=23의 값이 되고,
각 input의 예측값은 t=1에서 t=24의 값으로 여기고, 모델을 학습한다.

 

3. MAE(Mean Absolute Error)란?

시계열 예측은 분류문제들과 다르게 평가 Metric으로 "accuracy(분류 정확성)"이 아니라, MAE(평균 절대 오차, 모든 절대 오차값의 평균)을 채점의 척도로 삼는다.

*** 분류 문제가 아니라, 회귀<즉, 예측하는 문제> 이다보니, 얼마나 정답치에 근사하게 예측했는지를 측정하고자 해당 Metric를 사용한다고 보면 된다.

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기