1. 대회 설명
- 목표: 에너지 소비자이자 생산자인 prosumer들의 향후 에너지 소비 행동을 예측
- 문제 유형: 시계열 기반 회귀(Time Series Regression)
- 데이터 배경: 에너핏(Enefit)의 실사용 데이터를 기반으로 하며, 각 prosumer의 하루 단위 소비 전력량 및 날씨 정보 등을 포함
2. 성능 평가 방식 이해
- RMSE(Root Mean Squared Error)
-> 예측값과 실제값 사이의 차이를 제곱 평균한 뒤 제곱근을 취한 값으로, 오차가 클수록 RMSE 값이 커지며 모델 성능이 낮아짐
3. 데이터 전처리
3-1) EDA
- 각 features의 분포와 상관관계 시각화
- 'consumption', 'solar_production', 'wind_production' 등의 target이 될 수 있는 열 확인
- 시간 변수와 날씨 정보('cloud coverage', 'temperature', 'wind speed')의 계절성 탐색
3-2) Data Cleansing
- 이상치 제거(음수 소비량)
- 결측값 처리(평균값 또는 이전 시점 보간으로 대체)
3-3) Feature Engineering
- 날짜 및 시간 정보를 활용하여 새로운 파생 변수 생성
- 범주형 변수에 대해 one-hot encoding 적용
- 수치형 변수에 대해 로그 변환을 적용하여 분포를 정규화
4. 모델링
4-1) 모델
- CatBoostRegressor
-> 범주형 변수 자동 처리: 별도의 인코딩 없이도 범주형 변수 직접 처리 가능
-> Ordered Boosting: 과적합 방지, 일반화 성능을 향상시키는 부스팅 방식
-> 빠른 학습 속도: 효율적인 알고리즘으로 빠른 모델 학습 가능
4-2) 데이터 분할
- TimeSeriesSplit: 시계열 데이터의 특성을 고려한 분할 방식
- 시간의 흐름을 유지하면서 train/val 데이터를 나누며 예측하는데 적합한 방식
4-3) 하이퍼파라미터 튜닝
Optuna
- iterations: 부스팅 반복 횟수
- learning_rate: 학습률
- depth: 트리의 깊이
- l2_leaf_reg: L2 정규화 계수
- random_strength: 랜덤성 강도
4-4) 최종 성능
5. 정리(Lesson & Learned)
- CatBoost의 효율성: 범주형 변수 처리를 자동화하고, 시계열 데이터에서도 우수한 성능을 보임
- 시계열 데이터 분할의 중요성: TimeSeriesSplit을 활용하여 시간 순서를 유지한 데이터 분할이 모델의 일반화 성능 향상에 기여
- 하이퍼파라미터 튜닝의 효과: Optuna를 사용한 자동화된 하이퍼파라미터 최적화로 모델 성능 개선
- Feature Engineering의 필요성: 시간 및 날씨와 관련된 파생 변수를 생성하여 모델의 예측력을 높임
Enefit - Predict Energy Behavior of Prosumers