1. 대회 설명
- 목표: 사용자 행동 로그를 바탕으로 다음에 일어날 가능성이 높은 행동(Click, Cart, Order)을 예측하여 추천하는 것
- 문제 유형: 세션 기반 추천 시스템 (Session-based Recommendation), Multi-class ranking
- 데이터 배경: 대규모 사용자 행동 로그 데이터 (event_type, aid, timestamp 포함)
2. 성능 평가 방식 이해
- Recall@20 weighted average
-> Clicks, Carts, Orders 각각에 대해 Recall@20을 구한 후, 가중합 (0.10, 0.30, 0.60)으로 최종 점수를 계산
3. 데이터 전처리
3-1) EDA
- 데이터가 크기 때문에, debug 모드에서는 일부 세션만 활용해 빠르게 확인 가능
- aid(상품 ID)의 분포, 이벤트 수량, 세션 길이 등을 통해 인기 아이템 기반의 초기 후보군 설정이 가능
3-2) Data Cleansing
- 이벤트 타입 type이 숫자 형태로 매핑되어 있음
- 각 세션별로 aid, timestamp, type 컬럼을 기준으로 정렬
3-3) Feature Engineering
- 별도 feature engineering 없이 후보군 생성(candidates) 자체가 모델 전 단계의 핵심 처리
4. 모델링
4-1) 모델
- 모델 학습이 아닌 Candidate Generation(최근 발생한 aid, 인기 아이템, co-visitation matrix 기반) + Evaluation Framework 중심
- 모델 훈련 없이 baseline 평가를 빠르게 수행할 수 있도록 구성
4-2) 데이터 분할
- train 파일을 로딩 후 세션을 기준으로 분리
4-3) 하이퍼파라미터 튜닝
- 하이퍼파라미터 튜닝보다는 데이터 준비 및 후보군 생성의 효율화가 중심
4-4) 최종 성능
- Public LB 기준 약 0.574 성능을 기록한 코드로 빠른 평가용 코드임에도 준수한 성능 확보
5. 정리(Lesson & Learned)
- 추천 대회에서는 모델 성능보다도 후보군 생성 및 평가 프레임워크 구성이 중요할 수 있음
- 대용량 데이터를 다룰 때는 부분 실행(Debug 모드)이 필수적이며, 평가 로직과 데이터 포맷을 명확히 이해하는 것이 중요
- 단순한 규칙 기반 추천만으로도 baseline 이상의 성능을 낼 수 있으며, 이후에는 해당 후보군을 기반으로 학습 모델을 붙여 성능 향상이 가능함
OTTO – Multi-Objective Recommender System