머신러닝이나 딥러닝, 통계 모델을 다루다 보면 모델의 예측 성능 및 적합도를 판단하기 위해 혹은 과적합(Over-fitting)을 방지하기 위해 교차검증을 사용한다. 교차검증은 LOOCV(Leave-One-Out Cross Validation) 혹은 k-fold Cross Validation을 주로 사용하지만 시계열 데이터의 경우 이와 같은 방식을 사용하게 되면 문제가 발생한다. 시계열 데이터는 시간의 순서를 고려해야하기에 이같은 방식을 사용하면 시간의 흐름이 뒤바뀌어 제대로된 성능을 발휘할 수 없기 때문이다. 그렇다면 시계열 데이터에서 교차검증은 어떤 식으로 수행 해야할까?
Nested Cross-Validation은 Rolling이라고도 부르며 Rolling basis로 교차 검증을 수행하는 것이다. 이와 같은 방식을 사용하게 되면, 각 Loop 마다 모델의 input Shape가 달라진다. 만약 input Shape가 달라도 큰 문제가 되지 않는 데이터인 경우에는 이와 같은 방식을 사용하면 된다. 그러나, input Shape가 다른 값을 입력으로 받는 경우는 실제 필드에서는 자주 접할 수 없다. 따라서 Blocking 방식을 통해 데이터를 블록화해서 실험을 진행한다.
Blocking을 할 때 slide를 얼마나 지정해야 하는지에 대한 issue는 연구자가 정하기 나름이다. 일반적으로는 sliding을 1로 설정해 1 step씩 이동하면서 예측하는 경우가 많다. slide를 얼마로 지정해야하고 하는 것에 대한 정해진 정답은 없으니 학습 결과를 확인하면서 정하면 된다. 다만, sliding을 1로 지정하는 경우 데이터가 overlap되어 과적합이 발생할 수 있으니 주의하여야 한다.
'Time-Series' 카테고리의 다른 글
[Time-Series] Time-Series with Machine Learning (0) | 2022.06.01 |
---|---|
시계열 데이터에서 전처리하는 방법 (0) | 2022.05.24 |
Time-Series 시계열 입문하기. (0) | 2022.05.14 |