본문 바로가기

머신러닝/[기타]

비유동적 데이터(Stationary data)

 우리가 시계열 데이터를 받아들면 대개 RNN 계열의 모델들을 구성합니다. 좋은 예시로 주식 데이터가 그러하고, 주식을 예측하면 떼돈을 벌 수 있지 않을까 하는 생각으로 많은 시도가 있었습니다. 물론 결과는 실패였습니다. 그 이유가 바로 Stationary라는 특성때문입니다. 생각해보면 당연한데도, 대개 시계열 데이터만 보면 RNN으로 가려는 습관이 아직도 남아 있는 것 같습니다.

Stationary?

 어떤 데이터가 Stationary 하다-라는 것은, 과거에 존재하는 패턴이 미래에도 존재한다-라는 것입니다.  그러니까, 어떤 원소의 화학적 반응을 시계열 데이터화시킨다면, 학습이 유의미합니다. 화학반응은 시간이 지남에 따라 변화하는 개념이 아니니까요. 그런데 주식은 조금 다릅니다. 주식의 흐름에서 패턴을 찾아내면, 그것을 찾아낸 수많은 투자자들은 그것을 이용하기 위해 적극적으로 개입하고, 현상을 부셔버립니다. 과거의 패턴이 누군가에 의해 강제로 깨지는거죠. 그러면 과거의 데이터로 학습을 시켜봐야, 미래에도 똑같은 현상이 일어날지는 전혀 알 수 없습니다. 학습이 무의미해지는거죠.  

 때문에 시계열의 특성을 살리고자 하는, 과거에서 미래를 배우고자하는, RNN 계열의 모델을 학습시키기 위해서는 반드시 데이터가 Stationary 한지를 판단해야합니다. Non Stationary 한 데이터라면, 또는 데이터셋이 적다면 전통적인 통계 방법론이나 단순한 ML 알고리즘이 더 좋은 결과를 낼 것입니다.