프로젝트 마무리! 랩업 작성 마치고 내일 발표만 하면 기나긴 여정의 끝이다. 내일 발표 잘 마무리하자!!!
NAVER Connect Foundation Boostcamp AI Tech에서 진행한 TVING 기업 해커톤
MovieLens-20M 데이터셋으로 SASRec 기반 추천시스템을 개발 후 모델에서 발생한 Cold-Start 문제 정의, 개선 전략 고안 및 실험 결과를 담은 프로젝트
- User-Item interaction 존재하는 추천 데이터
- User 수 10만, Item 수 1만 이상
- 저작권 관련 Public한 데이터
- Side Information이 있거나, 없더라도 크롤링해서 구할 수 있어야 함
- Sparsity가 지나치게 높거나 데이터의 크기가 너무 큰 데이터 셋은 제외
| 파일 명 | 행 수 | 주요 내용 |
|---|---|---|
| ratings.csv | 20,000,263 | 사용자 시청 이력 (userId, movieId, rating, timestamp) |
| movies.csv | 27,278 | 영화 정보 (movieId, title, genres) |
| tags.csv | 465,548 | 영화에 대한 태그 정보 (userId, movieId, tag, timestamp) |
| links.csv | 5,905 | 영화 id와 매칭되는 tmdb, imdb의 id(movieId, imdbId, tmdbId) |
| genome-score.csv | 11,307 | 영화-태그 관련성 데이터 (movieId, tagId, relevance) |
| genome-tags.csv | 15,934 | genome tag id에 대한 tag 내용(tagId, tag) |



| 모델 | 특징 | 장점 | 단점 |
|---|---|---|---|
| SASRec | Self-Attention Based | 병렬 처리 가능, 장/단기 패턴 동시 모델링, Item 간 관계 학습 효과적 | 높은 메모리 사용량, 긴 sequence에서 계산 복잡도 증가 |
| BERT4Rec | Bidirectional Transformer | 양방향 문맥 활용, 복잡한 패턴 포착 우수, 마스킹 기반 효과적 학습 | 높은 계산 비용, 긴 학습 시간, 추천 상황과 학습 목적 불일치 |
| GRU4Rec | RNN Based | 구조가 단순하여 구현 용이, 메모리 효율적, 순차 패턴 학습 특화 | 느린 학습 속도, 장기 패턴 포착 한계, 병렬화 어려움 |
| NCF | CF Based | 구조가 단순, 정적 협업 필터링에 효과적, 계산 비용이 상대적으로 낮음 | 부가 정보를 활용하지 못해, 추가 정보를 활용하는 문제에서 제한적 |
| KGAT | GNN Based | 전체적인 Item의 특성 반영으로 인해, 타 모델 대비 우수한 성능 | 높은 계산 비용 및 지나치게 긴 학습 및 추론 시간 |
SASRecBERT4Rec성능이 좋지만, ML-20m에는 적합하지 않음SASRec이 더 효율적이라 판단| 정답 순위 | nDCG@10 | nDCG@20 | MRR@10 |
|---|---|---|---|
| 1 | 1.000000 | 1.000000 | 1.000000 |
| 2 | 0.630930 | 0.630930 | 0.500000 |
| 3 | 0.500000 | 0.500977 | 0.333333 |
| 4 | 0.430677 | 0.420821 | 0.250000 |
| 5 | 0.386853 | 0.365927 | 0.200000 |



Cold User = Count가 16개 이하인 User
Warm User = Count가 17개 이상인 User
| Warm User Metrics | Cold User Metrics | Metrics Drop Rate (%) | |
|---|---|---|---|
| Hitrate@10 | 0.280211 | 0.181410 | -35.26% |
| nDCG@10 | 0.152828 | 0.092474 | -39.49% |
| MRR@10 | 0.114237 | 0.065764 | -42.43% |



| Hitrate@10 | CE | CE 2000 | CE 3000 | CE 5000 |
|---|---|---|---|---|
| Cold User | 0.3268 | 0.3170 | 0.3344 | 0.3298 |
| Warm User | 0.3802 | 0.3939 | 0.4043 | 0.3989 |
| Time/Epoch | 77 | 55 | 59 | 69 |
| nDCG@10 | R.S 3000 | R-Mid | C-P-Mid | R-P-Mid | R-P-Top | R-P-Bot |
|---|---|---|---|---|---|---|
| Cold User | 0.1874 | 0.0048 | 0.1808 | 0.1924 | 0.0880 | 0.0892 |
| Warm User | 0.2460 | 0.0058 | 0.2356 | 0.2487 | 0.1412 | 0.1393 |



본 프로젝트에서는 Cold-Start 문제를 해결하기 위한 다양한 접근법을 실험하였으며, 그 결과 주요 성과를 다음과 같이 정리할 수 있다.
상호작용이 적은 아이템을 거르는 Threshold를 높이면 Metric 지표가 향상
→ 인기없는 아이템을 배제할수록 정확도는 증가
하지만 다양성(coverage, serendipity) 측면에서 trade-off 발생하므로
추천 시스템의 목적에 따라 Threshold 적용 수치를 신중히 고려해야 함

| 이름 | 역할 |
|---|---|
| 김건율 | 팀장, 데이터 분석, 전처리, 프로젝트 실험 및 코드 관리, N.S Pool 생성 |
| 백우성 | SASRec 모델링 및 실험, Augmentation 기법 개발, 실험 결과 분석 |
| 유대선 | GNN 계열 모델 & 샘플링 기법 개발, 실험 관리 및 추적, 프로젝트 구조 및 코드 컨벤션 관리 |
| 이제준 | EDA, 전처리, 기본 추천 모델링 및 테스트, 가설 검토 및 판단 |
| 김성윤 | MultiVAE / SASRec 모델 구현, Side information 추가 실험 |
| 박승우 | BERT4Rec 모델링, Sequential 모델 실험, 프로젝트 협업 환경 구축, 프로젝트 Docs 정리 |