고영민mandu05.com

둘러보기

  • 홈
  • 글
  • 프로젝트
  • 지식 그래프
  • 이력서
본문으로 건너뛰기
  1. 고영민
  2. /
  3. 글
고영민/글
© 2023-2026 Youngmin. All rights reserved.
rhdudals0505@naver.comGitHubLinkedIn
이 사이트는 Next.js로 만들었습니다.갱신 2026.09.26
글/프로젝트 · 해커톤 · 대회 · ML · 데이터 대회

LG Aimers 수요 예측 해커톤: 체계적인 실험으로 앙상블 전략 최적화하기

2025-08-27·3분 읽기
Time SeriesForecastingMachine LearningEnsembleLG Aimers
← 이전 글 SQL 학습 다음 글 →SoftBank Hackathon 2025: 슬랙 한 줄로 끝나는 무중단 배포를 48시간에 만들다

댓글 불러오는 중…

← 글

목차

  • 초기 전략의 실패와 피봇
  • 체계적인 실험과 핵심 발견
  • 실패한 가설: 모델 내부 수정
  • 성공한 가설: 외부 결합 방식 최적화
  • 최종 제출 모델 코드(simplified ver.)
  • 회고

'식음업장 메뉴 수요 예측'을 주제로 한 LG Aimers 해커톤에 참여했다. 최종 Private Score 0.48718로 1,500명 중 61위(상위 4.2%)를 기록하며 본선 진출에는 실패했지만, 체계적인 실험을 통해 유의미한 앙상블 전략을 발견했던 과정을 회고해보려 한다.

초기 전략의 실패와 피봇

처음엔 정교한 피처 엔지니어링에 트리 모델과 딥러닝을 섞은 복잡한 구조를 구상했다. 그런데 이론을 코드로 옮기는 동안 디버깅은 끝이 없었고 성능은 기대보다 낮았다. 시간 소모가 크고 개선 방향도 잡기 어려웠다.

전략 수정: 복잡한 단일 모델을 처음부터 만드는 대신, 이미 검증된 내 코드(V44)를 베이스라인으로 삼았다. 이 베이스라인은 각기 다른 강점을 가진 세 모델의 예측을 단순 평균하는 앙상블 구조였다.

  • V19: 피처 기반 전문가 (LGBM, XGBoost, CatBoost)
  • V31: 개별 메뉴 시계열 패턴 전문가 (PatchTST)
  • V34.2: 글로벌 시계열 패턴 전문가 (N-BEATS)

목표가 분명해졌다. 이 베이스라인을 '어떻게 더 똑똑하게 결합할 것인가'였다.

체계적인 실험과 핵심 발견

가장 중요한 실험 원칙을 세웠다. 베이스라인을 구성하는 개별 모델은 그대로 두고, 오직 예측 결과를 결합하는 외부 로직만 수정해서 성능 변화를 관찰한다.

실패한 가설: 모델 내부 수정

가장 먼저 시도한 건 V19 모델에 새로운 피처를 추가하는 것이었다.

결과: 예측 성능 하락 (Public Score 0.5030 → 0.5092)

분석: V19 모델이 더 복잡해지면서 다른 딥러닝 모델(V31, V34.2)들과의 예측 유사도가 높아졌다. 앙상블의 핵심인 모델 간 다양성이 무너진 것이다. 각 모델이 적당히 잘하면서도 서로 다른 예측을 내놓는 게 앙상블에서 얼마나 중요한지 직접 확인한 순간이었다.

성공한 가설: 외부 결합 방식 최적화

실패 분석을 바탕으로, 모델 내부는 그대로 두고 외부 결합 방식에만 집중했다.

가설 1: 모델별 중요도가 다를 것이다 → 가중 평균 실험 결과 피처 기반 트리 모델(V19)이 앙상블의 중심추 역할을 한다는 걸 발견했다. 단순 평균 대신 V19에 더 높은 가중치를 주니 점수가 크게 올랐다.

가설 2: 평가지표(SMAPE)의 허점을 공략할 수 있다 → 후처리 SMAPE 지표는 실제 값이 0일 때 페널티가 없지만, 예측값이 0일 때 페널티가 매우 크다. 최종 예측값이 0인 경우를 1로 바꿔주는 후처리를 적용했고, 이게 점수를 0.4점대로 끌어올리는 결정적인 한 수가 됐다.

최종 결과: 가중 앙상블 + 후처리 조합으로 베이스라인 대비 RMSE 15% 감소 달성.

버전핵심 전략Public Score분석 및 교훈
V44베이스라인 (단순 평균)0.5030모든 것의 기준점.
V45V19 모델 내부 수정0.5092 (하락)[실패] 앙상블의 다양성 붕괴.
V49_BV19 가중치 상향 (0.4)0.5017 (신기록)[성공] V19가 앙상블의 중심임을 발견.
V50V49_B + 0→1 후처리0.4921 (신기록)[성공] 가중치와 후처리 조합의 효과 증명.

이 과정에서 얻은 가장 분명한 결론은 이렇다. 잘 만들어진 여러 모델이 있다면, 그 내부를 건드리기보다 외부 결합 방식을 정교하게 다듬는 것이 더 효과적이다.

최종 제출 모델 코드(simplified ver.)

최종 모델은 가중 평균과 후처리를 적용한 단순한 Python 코드로 구현됐다.

python
1import pandas as pd
2import numpy as np
3
4# 각 베이스라인 모델의 예측 결과 로드
5pred_v19 = pd.read_csv('submission_v19.csv')['answer']
6pred_v31 = pd.read_csv('submission_v31.csv')['answer']
7pred_v34_2 = pd.read_csv('submission_v34_2.csv')['answer']
8
9# V19에 0.5, 나머지 모델에 0.25의 가중치를 부여한 가중 평균
10weighted_pred = 0.5 * pred_v19 + 0.25 * pred_v31 + 0.25 * pred_v34_2
11
12# SMAPE 지표 방어를 위한 0 -> 1 후처리
13final_pred = np.where(weighted_pred == 0, 1, weighted_pred)
14
15# 제출 파일 생성
16submission = pd.read_csv('sample_submission.csv')
17submission['answer'] = final_pred
18submission.to_csv('final_submission.csv', index=False)

회고

최종 Private Score 1,500명 중 61위 (상위 4.2%). 본선에 진출하지 못한 건 아쉽지만, 이번 대회에서 가장 큰 배움은 완벽한 단일 모델을 향한 집착을 버리고 검증된 모델들을 잘 섞는 것에 집중했을 때 비로소 성능이 오르기 시작했다는 점이다.

다음 대회에서는 Temporal Fusion Transformer(TFT) 같은 새로운 아키텍처를 앙상블에 추가해서 다양성을 더 확보하는 전략을 써볼 계획이다.