2025 Electricity Consumption Prediction AI Competition

Algorithm | Tabular | Time-Series | Energe | SMAPE

  • moneyIcon Prize : 20,000,000 KRW
  • 1,595 Users Completed

 

[private 6등] XGBoost + LGBM 앙상블(일조일사 예측 + 태양광 유무에 모델 분리)

2025.08.28 21:45 359 Views language

먼저 모든 참가자분들 고생하셨습니다.
이전 1,2회 대회의 모든 수상자 분들과 코드 공유를 해주신 분들, 이번 대회에 토크 및 코드 공유 올려주신 모든 분들께 감사의 인사를 올립니다.
감사한 마음을 담아 코드 내부에 하나 하나 설명을 써놨습니다.
저희의 코드가 다른 많은 분들의 공부에 큰 도움이 되기를 간절히 바랍니다.

코드가 길기 때문에 STEP 별로 하나씩 설명드리겠습니다.
1. import 부분
1) numpy==1.26.4 / pandas==2.1.4 / tqdm==4.67.1 / scikit-learn==1.4.2 / xgboost==3.0.2 / lightgbm==4.6.0 / optuna==4.4.0
2) SEED 고정 : 코드 전체에서 모든 random state는 seed로 고정
3) 전역변수 정의

2. STEP 1 - preprocessing
1) 시간 파생피처 제작(주기성 피처는 sin, cos으로 제작)
2) 풍속, 습도는 0이 불가능하여 선형 보간
3) 데이터 증폭(분 단위 시간 간격 추가)
4) 기타 파생피처 제작(PT, CDH, DI 등)

3. STEP 2 - interpolation
1) train의 일사량이 기간전체에 0인 몇개 건물을 xgb, lgbm으로 예측하여 보간
2) test의 일조시간을 예측하여 보간
3) test의 일사량을 예측하여 보간
4) 일조시간과 일사량으로 파생피처 추가 제작

4. STEP 3 - model
1) 모델은 xgb, lgbm 앙상블, optuna 하이퍼 파라미터 튜닝(sampling)
2) segmented model(pcs가 있는 건물, pcs는 없지만 태양광은 있는 건물, 태양광이 없는 건물로 구분해서 피처를 다르게 학습 예측)
3) building_type model(유형별로 학습 예측)
4) building_num model(건물 번호별로 학습 예측)

5. STEP 4 - ensemble, save
1) 3개 모델은 1/3씩 동등 가중치 앙상블
2) submission 파일 제작

PDF
Code