추천시스템의 컨텐츠 기반 추천

ReadyMadeLife·2022년 3월 31일
0

컨텐츠 기반 추천 (Content-based Recommendation)이란 유저 X가 과거 선호한 아이템과 비슷한 아이템을 유저 X에게 추천해주는 것을 말한다.

우선 컨텐츠 기반 추천의 장단점을 살펴보자면,

장점

  1. 유저에게 추천을 할 때 다른 유저 데이터 필요 X
  2. 인기있는 아이템이 아닌 새로운 아이템, 인기도 낮은 아이템 추천 가능
  3. 추천한 이유 설명 가능

!! 개인화에 초점이 맞춰져 있다

단점

  1. 아이템의 적합한 피쳐를 찾는게 어려움
  2. 한 분야/장르의 추천 결과만 계속 나옴 (overspecialization)
  3. 다른 유저 데이터 활용 불가 (장점이자 단점)

여기까지 컨텐츠 기반 추천에 대해서 알아봤는데 그럼 어떤 방식으로 추천해주는 걸까?

컨텐츠 기반 추천 방법

Item Profile 생성

우선 아이템 프로파일을 생성해야 한다.

추천 대상 아이템 feature들로 구성된 item profile을 생성한다.
예시를 들자면,
1. 영화 : 작가, 제목, 배우, 장르, 감독
2. 이미지, 동영상 : 메타데이터, 태그, 업로드한 사람
3. SNS: 친구, 팔로잉/팔로워

이렇게 item profile을 생성한다고 했을 때, 이러한 feature를 Vector 형태로 표현해야 한다.
(하나의 feature가 1개 이상의 vector dimension에 표현됨)

예시를 들자면,


요런식으로 Vector화 시키면 된다.

User Profile 생성

위에서 아이템 프로파일을 생성했으면, 이번엔 유저 프로파일을 생성해야한다.

유저가 과거에 선호했던 item list가 있고 각각 아이템은 아이템 프로파일을 통해 벡터로 표현되어있는 상태이다.

이때 유저 item list 안에 있는 아이템 Vector를 통합하면 User Profile이 된다.
(통합하는 방법은 그냥 평균값을 사용하거나, 선호도 (Rating)에 따른 nomalize한 평균값을 사용한다)

추천 아이템 찾기

이렇게 아이템, 유저 프로파일을 vector 형태로 만들었다.

그러면 이제 어떤 아이템을 추천해줄지 찾아야한다.

이때 사용하는 방법이 유저 프로파일과 제일 유사한 아이템 프로파일을 찾는 것이다.

찾는 방법은 유저와 아이템 사이의 거리를 계산해야 한다.

여기선 거리를 계산하는 방법은 Cosine Similarity를 이용해서 구한다. (두 vector의 방향이 얼마나 유사한지 의미)

모든 아이템의 유사도를 계산한 후, 유사도가 제일 높은 순으로 추천한다.

(번외) 평점 예측

그렇다면 번외로 평점 예측은 어떻게 할까?

유저가 평점을 매긴 아이템 프로파일이 있고, 예측하려는 아이템이 있다면,

우선 평점을 매긴 아이템들과 예측하려는 아이템 사이의 유사도를 계산한 후,

해당 유사도를 가중치로 해서 평점을 추론하면 된다.

profile
레디메이드인생

0개의 댓글