본문 바로가기
Computer Science/Data Science

[딥러닝 개인 프로젝트] 프로젝트1: 취향에 따른 영화 및 드라마 추천 알고리즘 구현(작성 중)

by ra._.nie 2023. 1. 12.

딥러닝 개인 프로젝트 구현을 위해 그 과정 및 구현 방식, 결과 등을 적을 예정임. 현재로선 다양한 기술 구현을 많이 해보고 다양한 프로젝트를 구현하는 것이 목적이기 때문에 실제 수요가 높으며 필요성이 높은 프로젝트는 아닐 수 있음.

 

📗 TODO 및 그 대략적인 과정

  1. 구체적인 구현 방향 고민(230112 목)
  2. 사용자가 시청한 기록들이 dataset으로서 필요함 = dataset 조사 및 획득(230112 목)
  3. 구현하려는 알고리즘의 목적에 맞게 데이터 전처리 필요(230113 금)
  4. 추천에 적합한 알고리즘 조사 및 고민(230114 토)
  5. 알고리즘 실제 구현(230115 일)
  6. 모델 평가 및 검증(230116 월)
  7. (추가적인 과정)사용자 편리성을 고려한 UI/UX 보장된 웹 또는 앱으로 완성(시간이 된다면 구현)

📗 추천 시스템의 기본 알고리즘[2,3]

출처: [3]

  1. Content-Based Recommender System 콘텐츠 기반 필터링
    • 사용자가 선정한 아이템을 기준으로 비슷한 아이템을 추천하는 방식
      • 즉, 사용자가 이전에 높게 평가했던 콘텐츠와 가장 유사한 콘텐츠를 추천해주는 방식
  2. Collaborativ Filtering 협업 필터링
    •  
    • 종류 
      1. Memory-Based Algorithm 최근접 이웃 협업 필터링
        • 많은 사용자로부터 수집한 사용 패턴이나 평점 등을 기반으로 하여 다른 사용자에게 콘텐츠를 추천해주는 방식
        • "많은 사용자로부터 얻은 취향 정보를 토대로 하였을 때 나와 비슷한 취향을 가진 사람들이 선호하는 콘텐츠를 나도 좋아할 가능성이 크다"라는 전제를 가짐
          • BUT 비슷한 영화를 좋아한다고 취향이 비슷하다고 판단하기는 어려우므로 한계를 가짐
        • 사용자 기반(User-Based)(사용자와 유사한 취향 가진 사용자가 선호하는 콘텐츠 추천) / 아이템 기반(Item-Based)(사용자가 높게 평가한 콘텐츠와 유사한 콘텐츠 추천)으로 나뉨
      2. Model-Based Algorithm 잠재 요인 협업 필터링
        • 사용자-아이템 평점 행렬 테이터를 이용해서 잠재요인 도출하는 방식
        • 잠재요인에 대해 행렬분해, 그리고 다시 행렬곱을 통해 평점을 부여받지 않은 콘텐츠에 대한 예측 평점을 생성
        • 즉, 사용자가 평가하지 않은 항목들에 대한 평점까지 예측하여 추천하는 방법임

잠재 요인 협업 필터링 방식 / 출처: [3]

 

📗 구체적인 구현 방향 고민

지금까지 구현된 많은 추천 알고리즘에 대해서 보완되거나 추가적인 기능이 추가되었으면 함. 그렇지 않으면 이미 구현된 것들을 똑같이 재생성하는 것과 다를바 없게 됨. 대단한 건 아니더라도 내 프로젝트만의 이점이 있어야 함. 결국 영화나 드라마를 볼 수 있는 OTT의 목표는 사용자들이 조금이라도 해당 OTT에서 다양한 영상을 보고 더 관심을 가질 수 있도록 하는 것. 즉, 해당 OTT에 그 고객을 더 오래 잡아둘 수 있어야 함[1].

사용자들의 id가 고유번호로 주어지며 여러 사용자들이 시청한 영화 제목, 해당 영화의 장르 등이 존재하는 dataset에 대해서 특정 사용자를 임의로 지정하여 이 사용자의 시청기록(평점)과 이 사용자와 유사하게 시청한 다른 사용자의 시청기록을 바탕으로 새로운 영화 등을 추천하는 방식을 고민하고 있음. 즉, 협업 필터링 기반 방식 중 사용자 기반이라고 볼 수 있을 듯.

다만 위와 같은 데이터를 반영한 dataset이 없다면 그냥 tmdb dataset 사용하여 사용자의 시청 기록이 아니라 사용자가 영화 시청 후 매긴 평점을 기준으로 유사한 영화를 추천하는 콘테츠 기반 필터링에 기반한 방식으로 진행해야 할 듯.

아니면 dataset에 존재하는 임의 영화를 하나 선정한 뒤 해당 영화와 유사한 영화들을 최대한 추천하는 방식(협업 필터링 중 아이템 기반 방식) 사용할 수도.

기존 추천 방식들에 대해 알고리즘 구분해서 파악해보기(넷플릭스를 예시로)

  • "--과 비슷한 콘텐츠"
    • 협업 필터링 중 아이템 기반
  • "--님의 취향저격 베스트 콘텐츠"
    • 콘텐츠 기반 필터링
  • 영화 선택 시 그 밑에 뜨는 유사한 영화 추천 - "함께 시청된 콘텐츠"
    • 협업 필터링 중 사용자 기반
    • 동일한 영화를 높게 평가했던 다른 사용자들이 시청했으며 선호했던 영화 추천이기 때문

추가적인 기능 고민

  • 사용자가 관심 없어 하는 장르에 대해서도 볼 수 있게 하여 해당 OTT에 좀 더 오래 잡아둘 수 있도록 취향과 겹치면서도 조금은 다른 장르에 대해서도 추천하는 방식 고민해보기
    • 사용자의 취향을 크게 벗어나는 장르를 추천할 경우 오히려 해당 OTT 이탈이라는 큰 문제를 일으킬 수 있으니 사용자의 취향에 적합하면서도 새로운 장르로서의 추천이 되어야 함. → 이걸 어떤 식으로 표현할지에 대한 고민이 중요할 듯.
    • 계속 유사한 콘텐츠만 추천하게 되면 사용자가 과거 시청한 콘텐츠 또는 이미 경험한 것과 유사한 콘텐츠만 추천되어 이탈을 유발할 수 있으므로.
  • 평점을 기준으로 하여 사용자가 높게 매긴 영화들과 유사한 영화 추천
    • 유사함의 척도를 무엇으로 매길 것인지 고민.

 

📗 사용 dataset

kaggle의 TMDB(The Movie DataBase) 5000 Movie Dataset.

 

TMDB 5000 Movie Dataset

Metadata on ~5,000 movies from TMDb

www.kaggle.com

또는 kaggle의 Movie Recommender Systems의 data.

 

Movie Recommender Systems

Explore and run machine learning code with Kaggle Notebooks | Using data from The Movies Dataset

www.kaggle.com


<reference>

[1] 참고 글1

 

넷플릭스의 영화 추천 알고리즘

다양한 알고리즘을 복합적으로 사용합니다. | <넷플릭스 인사이트>에 소개된 내용을 바탕으로 정리했습니다. 넷플릭스 회원은 10~20개 타이틀 검토 후 영화를 결정하지 못하면 60~90초 후에 흥미를

brunch.co.kr

[2] 참고 글2

 

인공지능 기반 추천 시스템의 모든 것! From A to Z

추천 시스템이란? 추천 시스템이란 사용자가 관심을 가질만한 콘텐츠(상품, 영화, 이미지, 뉴스 등)를 추천하는 것으로 사용자의 선호도 및 과거 행동을 토대로 사용자에 적합한 콘텐츠를 제공

blog.insilicogen.com

[3] 참고 글3

 

영화데이터로 해보는 추천 시스템(Recommendations)

1. 추천 시스템 1.1 추천 시스템

hmkim312.github.io

 

댓글