LG AIMERS 7기 해커톤 출품작으로, 여러 식음업장의 메뉴별 일일 수요를 예측하는 프로젝트입니다. 본 저장소는 그중 모델링 및 앙상블 파트를 담당합니다. 데이터 전처리·파생변수 파트는 DataProcessing 저장소에서 관리했습니다.
- 주최/플랫폼: LG AIMERS 7기 · Dacon
- 기간: 2025.07 ~ 2025.08
- 팀 구성: 5인
- 최종 성적: 800팀 중 12위
- 평가지표: SMAPE
메뉴·영업장마다 수요 분포가 크게 다르고, 팔리지 않는 날(0 수요)이 많은 희소(zero-inflated) 시계열이라 단일 모델로는 안정적인 예측이 어려웠습니다. 특히 범주형 변수가 많아 트리 기반 모델과 딥러닝 모델의 장단점이 뚜렷하게 갈렸습니다.
그래디언트 부스팅 계열(XGBoost · LightGBM · CatBoost)과 시계열 딥러닝(CNN-LSTM)을 결합해, 트리 모델의 범주형·비선형 처리 강점과 딥러닝의 시계열 패턴 학습 강점을 함께 활용했습니다.
범주형 변수가 제대로 학습되지 않아 순위가 정체되는 문제를 개선하기 위해, Transformer 기반 시계열 모델 (Dozerformer) 을 도입했습니다. 범주형 변수를 컬럼별 임베딩으로 토큰화하고 최근 시점에 더 큰 가중치를 두는 어텐션 구조를 활용했습니다. (TensorFlow 구현)
0 수요가 많은 데이터 특성에 맞춰 zero-inflated 처리를 적용하고, 대회 평가지표인 SMAPE를 직접 손실/평가에 반영해 최적화했습니다.
수요 패턴이 크게 다른 메뉴에 대해 개별 모델을 학습하는 방식을 실험해 성능 향상을 검증했습니다.
Python · PyTorch · TensorFlow · XGBoost · LightGBM · CatBoost · CNN-LSTM · Transformer
Modeling/
├── CNN-LSTM+XGBoost+LightGBM.py # 트리 + 딥러닝 하이브리드 앙상블
├── CNN-LSTM_code_주석.py # CNN-LSTM 주석 버전
├── cnn-lstm+xgb+lgbm(8.20ver.).py # 앙상블 개선 버전
├── cnn-lstm+xgb+lgbm_W_DL_change(0.47 score).py # 딥러닝 구조 변경 실험
├── lgbm_xgboost_lstm.py # LGBM + XGBoost + LSTM
├── xgb+lgbm+catboost_01.ipynb # 부스팅 3종 앙상블
├── lightGBM1.ipynb # LightGBM 단일 모델 실험
├── TF_Dozerformer.py # Transformer 계열(Dozerformer) 모델
├── TF_dozer_after_featuring.py # 파생변수 적용 후 Dozerformer
├── hybrid_xgb_zi_smape.py # zero-inflated + SMAPE 최적화
├── 메뉴별 다른 모델 학습.py # 메뉴별 개별 모델 학습
├── 0.5score.py · 0.68score.py # 점수별 실험 스냅샷
└── submission_menudifferent.csv # 제출 파일
파일명 뒤 점수(0.47 / 0.5 / 0.68 등)는 각 실험 시점의 검증 점수를 기록한 것입니다.
- CNN-LSTM + 부스팅 하이브리드 앙상블 설계 및 튜닝
- Dozerformer 기반 Transformer 시계열 모델 실험 (논문 기반 범주형 변수를 컬럼별 임베딩으로 토큰화하는 방식과 가까운 시점에 더 큰 가중치를 두는 어텐션 구조를 결합한 Transformer 모델 앙상블 구현)