Skip to content

boostcampaitech3/level2-movie-recommendation-level2-recsys-01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Movie Recommendation

👋 팀원 소개

김동현 임지원 이수연 진상우 심재정
그림1 그림2 그림3 그림4 그림5

✨Contribution


About Project

image

사용자의 영화 시청 이력 데이터를 바탕으로 사용자가 다음에 시청할 영화 및 좋아할 영화를 예측할 수 있는가?

  • Timestamp를 고려한 사용자의 순차적인 이력을 고려하고 Implicit feedback을 고려.
  • Implicit feedback 기반의 Sequential recommendation 시나리오를 바탕으로 사용자의 Time-ordered sequence에서 일부 item이 누락된 (dropout) 된 상황을 상정.
  • 여러 가지 아이템(영화)과 관련된 content(side-information)를 효과적으로 활용.

평가 지표

스크린샷 2022-06-07 오후 2 53 09

  • submisison 파일(csv 형태)에 Training Data에 존재하는 전체 유저들에 대해서 각각 10개의 아이템을 추천.
  • 사전에 MovieLens 데이터에서 추출해놓은 ground-truth 아이템들을 고려하여 위의 수식과 같이 Recall@10을 계산.

데이터

파일 내용
train_ratings.csv 주 학습 데이터, userid, itemid, timestamp(초)로 구성(5,154,471행)
Ml_item2attributes.json 전처리에 의해 생성된 데이터(itemgenre의 mapping 데이터)
titles.tsv 영화 제목(6,807행)
years.tsv 영화 개봉년도(6,799행)
directors.tsv 영화별 감독(5,905행)
genres.tsv 영화 장르 (한 영화에 여러 장르가 포함될 수 있다, 15,934행)
writers.tsv 영화 작가 (11,307행)

EDA & Feature Engineering & 학습데이터 소개

  1. user11의 예시를 통한 데이터 이해
    스크린샷 2022-06-07 오후 3 09 26
  • 376개의 리뷰 작성. (375개의 서로 다른 영화 리뷰 작성)
  • 리뷰 작성 날짜 5일 : 주어진 데이터가 Sequential 데이터인지 의문?
    '2009-01-01' (248개), '2009-01-02' (66개), '2009-08-24' (13개), '2009-08-25' (36개), '2011-01-12’ (13개).
  1. user별로 남긴 영화의 개수와 리뷰를 남긴 날짜 사이의 관계 확인을 통한 Sequential data 판단
    스크린샷 2022-06-07 오후 3 15 27
  • 1일 평균 최소 1개, 최대 1,795개, 평균 54개의 영화 리뷰를 남김.
  • user가 영화를 볼 때마다 리뷰를 남긴 것이 아니라 하루에 몰아서 리뷰를 남겼다는 판단.
  • 실제로 Sequential 모델을 사용할 때보다 Static 모델을 사용할 때 성능이 높게 나옴.

Model

  • RecVAE :
    • 기존 Multi-VAE에 몇 가지 테크닉을 더한 collaborative filtering기반 모델.
    • 제목에 implicit data 기반 top-n recommendation 문제에 적합.
    • 실제 대회에서도 단일 모델로 가장 높은 성능인 0.1499를 보임.
  • lightFM :
    • implicit feedbackexplicit feedback에 모두 사용할 수 있는 알고리즘.
    • useritem의 메타데이터(side information)를 기존의 MF 알고리즘에 결합하여 새로운 항목과 새로운 사용자로 일반화할 수 있다는 장점.
    • 실제로 side information을 사용했을 때 성능이 낮아졌기 때문에 메타데이터를 사용하지 않음.
  • SASRec :
    • Markov chain(MC)Recurrent Neural Network(RNN)의 장점을 반영한 모델.
    • self-attentive를 활용한 sequential recommender모델에서 하이퍼파라미터를 조정하여 일부 sequential한 특징을 가진 데이터를 모델링 하는 데에 사용.

Ensemble

  • 모델 각각이 가지고 있는 장점을 살려서 좋은 결과를 내기 위해 hard voting 방식을 통한 ensemble을 시도.
  • 방식 : recall@10 결과에 3-4가지 모델을 활용하여 많이 겹치는 것을 우선적으로 추출한 뒤, 성능이 좋은 모델 순으로 가중치를 부여하여 나머지를 채움.
  • 가장 성능이 잘 나온 ensemblelightFM에서 recall@30, recVAE에서 recall@30, SASRec에서 recall@10을 뽑아 recVAE>lightFM>SASRec 순으로 가중치를 부여한 방식.

Result

스크린샷 2022-06-07 오후 3 29 22

  • [lightFM 30개, RecVAE 30개, SASRec 10개]를 뽑아 많이 겹치는 것을 우선적으로 추출하여 RecVAE, lightFM, SASRec 순으로 가중치를 부여하여 Hard voting : 0.1536 → 0.1533.
  • [lightFM, RecVAE, SASRec, MultiVAE 10개씩] 으로 구성된 4개의 모델을 RecVAE, lightFM, MultiVAE, SASRec 순으로 가중치를 부여하여 Hard voting : 0.1515 → 0.1532.
  • [lightFM, MultiVAE, RecVAE, SASRec 30개씩]을 뽑아 Soft-voting : 0.1526 → 0.1528.

About

level2-movie-recommendation-level2-recsys-01 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published