Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modeling

식음업장 메뉴 수요 예측 — 모델링 (LG AIMERS 7기 / Dacon)

LG AIMERS 7기 해커톤 출품작으로, 여러 식음업장의 메뉴별 일일 수요를 예측하는 프로젝트입니다. 본 저장소는 그중 모델링 및 앙상블 파트를 담당합니다. 데이터 전처리·파생변수 파트는 DataProcessing 저장소에서 관리했습니다.

  • 주최/플랫폼: LG AIMERS 7기 · Dacon
  • 기간: 2025.07 ~ 2025.08
  • 팀 구성: 5인
  • 최종 성적: 800팀 중 12위
  • 평가지표: SMAPE

문제 정의

메뉴·영업장마다 수요 분포가 크게 다르고, 팔리지 않는 날(0 수요)이 많은 희소(zero-inflated) 시계열이라 단일 모델로는 안정적인 예측이 어려웠습니다. 특히 범주형 변수가 많아 트리 기반 모델과 딥러닝 모델의 장단점이 뚜렷하게 갈렸습니다.

접근 방법

1. 트리 + 딥러닝 하이브리드 앙상블

그래디언트 부스팅 계열(XGBoost · LightGBM · CatBoost)과 시계열 딥러닝(CNN-LSTM)을 결합해, 트리 모델의 범주형·비선형 처리 강점과 딥러닝의 시계열 패턴 학습 강점을 함께 활용했습니다.

2. Transformer 계열 시계열 모델 도입

범주형 변수가 제대로 학습되지 않아 순위가 정체되는 문제를 개선하기 위해, Transformer 기반 시계열 모델 (Dozerformer) 을 도입했습니다. 범주형 변수를 컬럼별 임베딩으로 토큰화하고 최근 시점에 더 큰 가중치를 두는 어텐션 구조를 활용했습니다. (TensorFlow 구현)

3. 희소 수요(zero-inflated) 대응 및 지표 최적화

0 수요가 많은 데이터 특성에 맞춰 zero-inflated 처리를 적용하고, 대회 평가지표인 SMAPE를 직접 손실/평가에 반영해 최적화했습니다.

4. 메뉴별 개별 모델 학습

수요 패턴이 크게 다른 메뉴에 대해 개별 모델을 학습하는 방식을 실험해 성능 향상을 검증했습니다.

사용 기술

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 모델 앙상블 구현)

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages