TL;DR
- 시계열 데이터는 시간 순서가 의미를 갖고, 이전 관측값이 이후 관측값에 정보를 제공하는 데이터다.
- 이 때문에 일반 i.i.d. 데이터처럼 무작위로 섞어 학습·검증하면 시간 leakage가 생길 수 있다.
시계열 데이터
시계열 데이터는 관측치가 시간 순서에 따라 배열되고, 그 순서 자체가 모델링에 필요한 정보를 갖는 데이터다. 판매량, 트래픽, 기온, 주가, 센서 로그처럼 특정 주기나 추세를 따라 변하는 데이터가 대표적이다.
일반적인 tabular ML은 관측치들이 독립이고 동일한 분포에서 왔다고 보는 i.i.d. 가정을 자주 사용한다. 반면 시계열에서는 현재 값이 과거 값과 상관을 가질 수 있다. 이 구조를 자기상관이라고 한다.
시계열 예측에서 가장 중요한 차이는 “언제 알 수 있었는가” 이다. 어떤 값이 모델 학습 시점에는 존재하더라도, 실제 예측 시점에 알 수 없는 미래 정보라면 feature로 쓰면 안 된다. 따라서 시계열 코드를 쓸 때는 데이터 행보다 시간축, 시계열 예측의 기준 시점과 예측 기간, 시계열 예측에서 예측 시점에 알 수 있는 변수와 알 수 없는 변수를 먼저 정해야 한다.
모델링에서의 의미
- random train/test split은 미래 정보가 과거 학습에 섞일 수 있으므로 기본값으로 두면 위험하다.
- feature engineering은 항상 cutoff 기준으로 계산해야 한다.
- 모델 성능은 하나의 임의 날짜가 아니라 여러 forecast origin에서 검증하는 것이 안전하다.
Connections
- 자기상관 — 시계열이 i.i.d. 데이터와 달라지는 핵심 이유.
- 시계열 예측의 기준 시점과 예측 기간 — 예측 시점과 미래 예측 구간을 정의한다.
- 시계열 검증에서 예측 기준일을 이동시키는 방법 — 시간 순서를 보존하는 평가 방식.


Discussion
Comments
댓글은 승인 후 공개됩니다.