본문 바로가기

데이터 분석/프로젝트

[논문] Encoder Decoder 알고리즘을 이용한 시계열 자료 예측

반응형

대학원을 다닐 때 작성한 학위논문입니다.

다시 읽어보니 급하게 작성한 티가 나기도 하고 서술이 불친절한거 같아 부족한 내용을 추가하고 정리하는 의미에서 작성합니다.

(Notion에 정리한 내용을 그대로 복사한 거라 어체가 다른 점 양해 부탁드립니다. 추후에 수정하겠습니다.)

 


<Encoder Decoder 알고리즘을 이용한 시계열 자료 예측>

 

  • Encoder Decoder 알고리즘을 이용하여 5일 후의 시계열 자료 예측을 진행하였다.
  • 여기서 인코더 디코더란 두 종류의 시퀀스 데이터 간의 관계를 학습하는 알고리즘 중 대표적인 알고리즘이라고 할 수 있다.
  • (시퀀스란 순서가 있는 데이터로 독립적이지 않고 서로 연결되어 있는 데이터 구조를 의미. 예를 들면 주식, 언어 등이 이에 해당한다 할 수 있다.)
  • 본 연구에서 사용한 시계열 데이터는 경남 소재 가스 생산설비에서 관측된 바이오가스 데이터이다.
  • 바이오가스 데이터는 대체 자원으로 활용 가능하여 각광을 받는 추세이나, 생성과정에서 여러 복합적인 상호작용이           발생하고 생성 원료인 유기물 또한 구성 성분이 다양하여 바이오가스 생산량을 예측하기 어렵다는 문제점이 존재한다.
  • 바이오가스의 생성과정은 소화조에 유기물이 유입이 되면 처리 과정에서 중간 산물이 생성되고, 생성된 중간 산물의 양에  따라 최종적으로 바이오가스가 생성된다.
  • 여기서 중간 산물을 소화조에 들어가는 유기물에 의해 생성되지만 안정적인 바이오가스 생성을 위해 사람이 인위적으로    화학물질을 투입해주는 부분도 필요하게 된다. 지금까지는 이 투입하는 양을 관리자의 경험에 의해 임의적으로 조절했지만, 해당 알고리즘을 통해 중간산물의 양이 파악이 된다면 효율적인 바이오가스 플랜트 운영이 가능해진다.
  • 따라서 위와 같은 이유에 의해 유기물 부하량에 따른 5일 후의 중간 산물과 바이오가스 생산량 예측을 진행하였다.

 

 

 

연구모형의 구조

제안한 Encoder Decoder 구조

  • 본 연구에서 제안한 연구모형은 위와 같다.
  • 기존의 인디코더 모형과 가장 큰 차이점은 디코더 내부에 인코더를 추가한 새로운 형태의 Attention 기반의 Encoder Decoder인 것이다.
  • 디코더 내부에 인코더를 추가함으로써, 디코더 입력 또한 시퀀스이므로 자기 상관을 학습시켜 예측력을 높이는데 기여한다.

 

바이오가스 데이터에 적합시킨 모형구조

  • 연구에 사용한 자료는 입력 변수 값에 영향을 받아 중간 산물이 생성되고, 생성된 중간 산물의 영향을 받아 출력 변수가 생성되는 특징을 지닌다.
  • 이때 생성되는 중간 산물을 편의상 주요인자 keyfactor라고 명명하였다.
  • 연구에 사용된 변수는 아래와 같다. 순서대로 입력변수, 주요인자, 출력변수에 해당한다.

  • 본 연구의 목적은 입력변수에 다른 5일 후의 주요인자와 출력변수 예측이며, 이를 위해 입력변수, 주요인자, 출력변수 사이의 관계 학습 과정이 필요하다.
  • 이를 자세히 설명하면
    • 입력변수의 경우 입력변수와 주요인자 간의 관계를 학습시키기 위한 Input-Keyfactor 계층이 필요하게 된다.
    • 출력변수의 경우 출력변수와 주요인자의 관계를 학습하는 Keyfactor-Output 계층이 필요함과 동시에, 입력변수 값에도 영향을 받음으로 Input-Output 계층이 필요하게 된다. 따라서 이 두 계층을 합쳐 Input-Keyfactor-Output 계층으로 표현하였다.
  • 위의 그림에서 Keyfactor의 예측의 경우 Input-Keyfactor 계층에 의해 생성된다. 해당 계층에서의 학습이 종료된 후 출력된 값은 Keyfactor의 예측값에 해당한다.
  • Output 예측의 경우 Keyfactor-Output 계층과 Input-Output 계층의 연산 결과를 결합하여 이루어진다. 이때, Output 예측을 위해 사용되는 Keyfactor의 경우 Input-Keyfactor 계층에서 설명한 Keyfactor 데이터와 5일의 날짜 차이가 존재하기 때문에 서로 다르다. 이를 표현하기 위해 Output 예측에서 사용한 Keyfactor를 Keyfactor’이라 표현하였다. (어떻게 다른지는 아래에서 설명한다.)

 

 

학습데이터와 예측데이터의 구성

  • 본 연구의 핵심은 연구를 진행하는 데 사용하는 학습 데이터와 예측 데이터의 구성에 차이가 존재한다는 것이다.
  • 본 연구는 예측 기간을 30일로 설정하여 원 자료의 2020년 8월 1일부터 2020년 8월 30일에 해당하는 값 예측을 진행하였다.
  • 데이터는 19.11.01 ~ 20.08.31까지 하루 간격으로 관측되었으며 그중 84건의 결측이 존재한다.
  • 결측값의 경우 Nadaraya-Watson 추정량을 통해 보간하였다.
  • 8월 1일의 예측값을 구하기 위해서는 학습단계와 예측 단계를 구분하여야 한다.
  • 데이터를 구분하는 이유를 이해하기 위해서는 제안한 모형 구조를 살펴볼 필요가 있다. 
    • 제안한 모형에서 Input-Keyfactor layer를 예를 들어 설명하면 Encoder와 Decoder input으로 각각 입력변수와 주요인자가 들어가게 된다. 이때 각 변수들은 하루 가격이 있는 일련의 시퀀스에 해당한다. 여기서, ‘오늘’까지 관측된 입력변수에 해당하는 5일 후의 주요인자 예측을 진행하기 위해서는 ‘오늘’부터 5일 이후의 Decoder input값을 임의로 대체하는 과정이 필요하게 된다.
    • 즉, 이를 정리하면 아래와 같이 관측된 데이터와 대체값을 찾아줘야 하는 미래 데이터로 구분할 수 있다.
      1. 관측된 데이터: 19.11.01 ~ 20.07.27
      2. 미래 데이터: 20.07.28 ~ 20.08.01

 

  • 학습단계에서 사용하는 데이터는 다음과 같다.
  • (단, 연구에서는 아래의 데이터를 통으로 사용하는 것이 아닌 설정한 window size에 맞게 각 데이터를 rolling후 분할, shuffle을 진행하여 사용하였다.)

 

  • window size를 적용시킨 학습데이터의 구성을 그림으로 표한다면 아래와 같다.  
    • ‘오늘’의 입력변수의 값이 관측됐을 때, 5일 후의 주요인자의 값에 대한 예측을 위해 학습데이터를 구성하는 경우, 위와 같이 5일 차이가 나는 시퀀스 쌍으로 데이터를 구성할 수 있다.
    • window size = 20일때 8월 1일의 예측값을 구하는 경우를 생각해 보면, 데이터가 관측된 19.11.01부터 ‘오늘’까지 파란색 박스와 빨간색 박스처럼 하루씩 미뤄지는 데이터 쌍을 생각할 수 있다.

 

  • 예측단계에서 사용하는 데이터는 다음과 같다.
    • 예측에서는 위해서 학습한 가중치를 가지고 Encoder Decoder input만 변경하여 예측값을 구한다. 이때 학습과는 달리 여러 개의 데이터 쌍이 구성되는 것이 아닌 가장 최근의 window만 사용하게 된다.
    • 예측에 사용되는 데이터는 앞서 언급한 것과 같이 미래 데이터를 대체하는 과정이 요구된다.
    • 미래 데이터를 구하는 과정은 크게 2가지 방법으로 제안하였다.

 

 

결과

연구 모형의 예측 정확도(1): 5일의 값을 특정한 값으로 대체
연구 모형의 예측 정확도(2): 하루의 값을 특정한 값으로 대체

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형