프로젝트 마무리! 랩업 작성 마치고 내일 발표만 하면 기나긴 여정의 끝이다. 내일 발표 잘 마무리하자!!!
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의 특성 반영으로 인해, 타 모델 대비 우수한 성능 | 높은 계산 비용 및 지나치게 긴 학습 및 추론 시간 |
SASRec
BERT4Rec
성능이 좋지만, 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 정리 |