Problem
기상 예보 데이터를 이용해 24시간 뒤 풍력 발전량을 예측했다. 발전량의 변동성이 크고, 동일한 풍속에서도 계절과 설비 상태에 따라 출력이 달라지는 것이 핵심 난점이었다.
Context
평가 지표는 NMAE였다. 공개 리더보드 점수보다 시간에 따른 분포 변화에 견디는 검증 구조를 만드는 것을 우선했다.
Data
풍속, 풍향, 기온, 습도, 기압과 과거 발전량을 사용했다. 관측 데이터와 예보 데이터의 생성 시점이 달라 사용할 수 있는 변수를 예측 시점 기준으로 다시 정리했다.
Approach
- expanding window validation
- 풍향의 sine/cosine 변환
- 풍속 구간별 발전 곡선 특징
- lag와 rolling feature
- LightGBM 기반 앙상블
What failed
전체 기간에서 계산한 target encoding은 validation 성능을 과대평가했다. random split에서는 개선처럼 보였지만 마지막 달 holdout에서 성능이 크게 하락했다.
Results
시간 기반 검증으로 전환한 뒤 오프라인 점수와 리더보드 점수의 차이가 줄었다. 단일 모델보다 서로 다른 lookback window를 사용한 모델 평균이 극단적인 기상 조건에서 안정적이었다.
What I learned
시계열 대회에서는 모델 종류보다 “예측 시점에 실제로 알 수 있는 정보”를 엄격히 정의하는 일이 더 중요했다.