- 일반적인 영화 추천 대회의 경우, 사용자의 영화 시청 이력을 바탕으로 해당 사용자가 다음에 시청할 영화를 예측합니다.
- 그러나 실제 상황에서는 서버 불량 등 여러가지 이유로 데이터가 Sequential하게 적재되지 않을 가능성이 존재합니다.
- 따라서 본 대회에서는 사용자의 영화 시청 이력을 바탕으로 당므에 시청할 영화 뿐 아니라 누락되었을 수 있는 영화 또한 예측하는 것을 목표로 합니다.
- MovieLens 데이터를 전처리 하여 만든 Implicit Feedback 기반의 Sequential Recommendation 시나리오를 바탕으로 사용자의 Time-ordered Sequence에서 일부 Item이 누락된 상황을 상정합니다.
- 이와 함께 영화와 관련된 Side Imformation으로 영화별 감독, 장르, 제목, 작가, 개봉 년도를 제공합니다.
- 31,360명의 User, 6,807개의 Item, 5,154,471개의 Interaction으로 구성되어 있으며 Sparsity는 97.6%입니다.
- 평가 Metric: Recall@10
- 제공된 Baseline 코드 및 RecBole을 사용해 모델 구축
- Sequential, General, Context-aware 모델 수십여 개를 학습하여 성능 실험
- 앙상블을 활용한 성능 개선
- 최종 결과
- Public LB 0.1662 (5위) -> Private LB 0.1622 (8위)
- GPU: V100 5대
- 운영체제: Ubuntu 18.04.5 LTS
- 협업툴: Github, Notion, Weight & Bias
Movie Recommendation/
│
├── dataset/
│ ├── datasets.py
│ └── preprocess.py
│
├── ensembles/
│ └── ensembles.py
│
├── layer/
│ └── layers.py
├── model/
│ └── SASRecD.py
│
├── yaml/
│ ├── default.yaml
│ ├── model1.yaml
│ ├── model2.yaml
│ ├── ...
│ └── inference.yaml
│
├── recbole_inference.py
├── recbole_train.py
└── topkensemble.py
- Sequential한 특징이 약화된 Sequence 데이터를 잘 표현하는 모델 구현
- 제한된 시간 내에 다양한 모델을 학습 시킬 수 있는 역량 배양
- 해당 경험을 극대화 하기 위한 RecBole 라이브러리 사용
- 모델 유형(Sequential, Context-aware 등)에 따른 특징 파악
류명현 | 이수경 | 김은혜 | 정준환 | 장원준 |
General Model, Sequential Model 학습 | RecBole 튜토리얼 제작, Sequential Model 학습 | 모델 앙상블, Sequential Model 학습 | Context-aware Model, Sequential Model 학습 | 모델 앙상블, Context-aware Model, Sequential Model 학습 |
- Boostcourse 강의 자료