Content based Recommender

#Content-based-Recommender
  • 상품에 대한 정보를 이용해 상품을 추천하는 방법
  • 상품 간에 유사성을 계산하여 비슷한 상품을 추천
  • 예를들어 특정 장르의 영화를 봤을 때 그 장르의 영화 중에 영화 제목, 개봉 연도, 감독 등의 정보를 고려해 비슷한 영화를 추천하는 방법

목차

#목차
  • Content based Recommender 방법
  • 비슷한 장르의 영화를 추천하려면?
  • 비슷한 제목의 영화를 추천하려면?
  • 데이터에 적용: Moive Lens Data

1. Content based Recommender 방법

#1.-Content-based-Recommender-방법

방법1. 별점을 활용하는 경우

사용자 A가 봤던 영화 중 평점이 좋았던 영화와 비슷한 장르의 영화 추천

예)인터스텔라 영화에 대해 좋은 평점을 매겼으면 같은 장르인 과학 영화 중에 평점이 제일 좋았던 인셉션 추천

장점

:상품에 대한 사용자의 리뷰가 없을 때도 사용 가능

단점

:상품에 대한 상세적인 정보가 필요

방법 2. 상품의 세부적 정보로 추천

영화의 제목, 요약, 테그, 장르와 같은 상품의 세부적인 정보를 기반으로 비슷한 상품을 추천

Loading output library...

데이터 소개

  • 9,274개의 영화에 제목과 장르가 표시
  • 영화의 장르는 여러 가지일 수 있음
  • 예를들어 주만지는 모험, 어린이, 판타지 등 여러 가지 장르로 포함

2. 비슷한 장르의 영화를 추천하려면?

#2.-비슷한-장르의-영화를-추천하려면?

공포 영화를 좋아하는 사용자는 공포 영화 관련 영화를 더 찾지 않을까요?

Tf-idf를 이용한 비슷한 장르 추천 방법에 대해 알아보겠습니다.

TF-IDF (Term Frequency-Inverse Document Frequency)

: 문서 집합에서 특정 문서에 특정 단어가 얼마나 중요한지를 측정하는 방법

@@0@@

특정 문서에서 특정 단어가 자주 나올 수록 높아짐

@@1@@

특정 단어를 포함하고 있는 문서가 적을 수록 높아짐

@@2@@

예) 백 만개의 문서가 있을 때

문서 1에는 총 100개의 단어가 있고 '오딧세이'라는 단어 3 번 나옴

@@3@@

문서 백만 개 중에 '오딧세이'가 나오는 문서는 1,000개

@@4@@

@@5@@

따라서 '오딧세이'라는 단어의 중요도는 0.09로 측정

반대로 '심슨'이라는 단어가 모든 문서에 나온다면 @@6@@이 되어 @@7@@ 역시 0이 되어 중요하지 않은 단어가 됨

=>모든 문서에서 흔하게 나타나지 않으면서 특정 문서에서만 많이 나오는 단어가 중요한 단어가 됨

Loading output library...
  • 장르를 단어로 보고 영화 하나 하나를 문서로 보고 Tf-Idf 적용
  • 문서와는 달리 영화 장르는 한 영화에서 최대 한번만 나타남
  • 예를 들어, 주만지는 3개의 장르가 있고 각각의 장르는 한번만 나타나기 때문에 동일하게 3분의 1의 Tf를 갖게 됨
  • 모든 영화에서 흔하지 않은 장르이면서, 특정 영화의 표시된 장르가 적을 수록 높게 높은 점수
Loading output library...
  • Cosine Similiarity를 통해 Tf-idf가 비슷한 영화 계산
Loading output library...
Loading output library...

=> 영화 다크나이트와 유사한 장르의 영화 20개를 추천

3. 비슷한 제목의 영화를 추천하려면?

#3.-비슷한-제목의-영화를-추천하려면?

반지의 제왕 1을 봤으면 반지의 제왕 2를 보고 싶지 않을까요?

Tf-idf를 이용하여 유사한 제목의 영화 추천 방법에 대해 알아보겠습니다.

Loading output library...
Loading output library...
Loading output library...

=> Dark나, Knight라는 단어가 담긴 제목이 비슷한 영화들이 추천 됨

4. 데이터에 적용: Moive Lens Data

#4.-데이터에-적용:-Moive-Lens-Data

영화의 줄거리, 출연진, 평점 등을 고려하여 추천하는 방법에 대해 알아보겠습니다

1.영화 줄거리와 태그라인을 이용해 추천하기

Loading output library...
Loading output library...

메모리 부족으로 데이터 축소

Loading output library...
Loading output library...

Bat Man이라는 이름이 들어간 영화들이 많이 추천 됨

2. Credit, Genre,keyword를 이용한 추천

Loading output library...
  • credits: 출연진이 누군지, 감독, 작가 등이 누군지에 대한 데이터
  • 여기서는 감독과 주연 배우만 추출
  • keywords: 영화를 함축하는 단어
Loading output library...

"stringified" lists를 변환

Loading output library...

Vectorizer하기 위해 string으로 변환

Loading output library...
  • 영화 줄거리나 테그만 사용했을 때 보다 더 다양한 영화를 추천한 결과를 볼 수 있음
  • Prestige 같은 놀란 감독의 다른 영화도 추천해 줌

3. 인기나 평점까지 반영

  • Credit, 장르, 키워드로 영화간의 유사도가 가장 높은 영화 중 상위 30개 선택
  • 영화 중에 투표 수가 하위 60%인 영화 제거하여 계산 된 평점과 투표 수의 가중 평균으로 점수 계산
  • 점수가 가장 높은 순으로 다시 정렬
Loading output library...