D037

3 minute read

Extrapolating Utilities

이전 포스팅에서 언급했던 것과 같이
실제로 사용자는 일부의 아이템에만 레이팅을 하므로
유틸리티 행렬 U 은 희소(sparse) 합니다.

그래서 추천시스템에는 레이팅 정보가 적은 상황에서
사용자의 레이팅을 추정하는 것이 큰 이슈입니다.

또한 Cold start 문제가 있습니다.
새로운 아이템이 추가되는 경우 레이팅이 없고,
새로운 사용자가 가입하는 경우 관련 정보가 없기 때문에 추천에 어려움이 있습니다.

이러한 문제들을 다루기 위한 방식으로
다음과 같은 3가지 접근법이 존재합니다.

  1. Content-based Recommendation
  2. Collaborative Filtering
  3. Latent factor based Recommendation

위 순서대로 다뤄보겠습니다.

 

Content Based Recommendations

콘텐츠 기반 추천은
사용자가 이전에 높게 레이팅한 아이템과 유사한 아이템을 추천하는 방식입니다.
아이템의 특성(feature)를 기반으로 유사한 아이템을 찾으면
높은 평가를 받은 아이템과 유사한 아이템도 높은 평가를 받을 것이라는 추론(infer)을 기반으로 합니다.

예를들어 영화를 추천할 때
감독이나 배우, 장르를 기반으로 유사한 영화를 찾아 추천해 줍니다.

아이템 각각에 대해 아이템 프로필(item profile) 을 만듭니다.
프로필은 feature 의 집합입니다.

아이템 프로필을 예로 들자면
영화에서는 감독, 배우 등을 feature로 볼 수 있고
책에서는 ‘important’ 단어의 집합으로 볼 수 있습니다. (TF-IDF)

이 아이템 프로필은 하나의 벡터로 볼 수 있습니다.
하나의 feature 를 entry 로 보고,
불린이나 실수 값을 사용해 벡터로 사용할 수 있습니다.

프로필은 아이템도 있지만 사용자 관점에서도 사용될 수 있습니다.

User Profiles

사용자는 그 사용자가 레이팅한 아이템들의 프로필 $i_1,i_2,\dots, i_n$ 을 갖고 있습니다.
그 프로필들에서 각 feature 마다 평균을 내서 하나의 프로필을 만들 수 있고
이 프로필을 user profile 이라고 합니다.
상황에 따라 프로필을 생성할 때
평균에서 가중치를 주고 정규화하는 방식을 사용하거나
그외 다른 방식들을 적용할 수 있습니다.

example (Normalize)

1~5 개의 별점을 줄 수 있는 상황을 가정해 봅시다.
한 사용자가 배우 A 의 두편의 영화에 대해 3과 5점 주었고
배우 B의 세편의 영화에 대해 1,2,4 점을 주었습니다.

이 경우 A 라는 feature 에 대해서는 (3+5)/2 =4,
B 라는 feature 에 대해서는 (1+2+4)/3 = 7/3 의 user profile 을 얻습니다.

실제 별점에서 3점 이하의 점수는 부정적인 평가로 볼 수 있지만
위와 같이 평균만 사용하는 경우 이러한 특성을 반영하지 못합니다.

이 특성을 반영하기 위해선 정규화가 필요합니다.
3점을 기준으로 하여, 모든 평가 점수에 3을 빼줍니다.
A는 0,2 가 되고, B 는 -2,-1,1 로 점수가 정규화 되고,
user profile 은 A feature 는 1, B feature 는 -2/3 이 됩니다.

이제 이 user profile 과 유사한 프로필을 가진 아이템을 추천하면 됩니다.

이전 포스팅에서 다룬 distance metric(similarity) 을 적용하여
‘유사한’ 프로필을 찾을 찾을 수 있습니다.
이 상황에서는 벡터의 크기보다는 방향이 중요합니다.
사용자마다 선호의 점수 기준(크기)이 다르기 때문에
방향, 벡터 간 각도의 유사도를 나타내는 Cosine similarity 를 사용합니다.

콘텐츠 기반 추천을 정리하자면,

  1. 사용자 x 가 주어지면, x 의 user profile 을 생성합니다.
  2. 아이템 카탈로그의 모든 항목과 x의 user profile 의 Cosine similarity를 계산합니다.
  3. 전체 중 Cosine similarity 가 가장 높은 아이템을 선택하고 사용자에게 추천합니다.

Pros & Cons : Content-based Approach

이 방식의 장점은 다음과 같습니다.

  • 다른 사용자의 정보가 필요없습니다.
    CF(collaborative Filtering) 에서는 다른 유사한 사용자, 아이템의 정보를 찾아야합니다.
  • 사용자의 독특한 취향에 따라 추천해 줄 수 있습니다.
    사용자 개인의 취향을 반영한 프로필을 사용합니다.
  • 새로운 아이템을 추천할 수 있습니다.
    프로필만 유사하다면, 인기가 없거나 새롭게 추가된 아이템도 추천될 수 있습니다.
  • 아이템의 추천 이유를 설명할 수 있습니다.
    feature 에 따라 추천되는 것 이므로 추천이 왜 되었는지 알 수 있습니다.

그러나 콘텐츠 기반 기법은 다음과 같은 문제들이 발생할 수 있습니다.

  • feature 를 찾기가 어렵습니다.
    item 의 feature 는 사람이 직접 설정해야하고 아이템의 특성을 잘 반영해야합니다.
    이 작업이 어렵습니다.
    영화 같은 경우는 비교적 쉽지만, 이미지나 영상 같은 경우는 찾기 어렵습니다.
  • Overspecialization
    사용자에 프로필이 정해지고 그에 따라 유사한 아이템만 추천이 된다면
    유사하다고 간주되는 아이템 범위만 추천을 받게 됩니다.
    여러 분야에 관심을 가진 사람이 있다면, 현재 프로필 관련된 아이템만 추천을 받고 다른 분야의 아이템은 추천되지 않습니다.
  • Cold start
    사용자가 새로 가입한 경우, 사용자 프로필이 없습니다.
    프로필을 구성하기 위해서는 여러 feature 에 대한 정보를 수집해야합니다.
    적절한 프로필이 만들어지기 전까지는 추천의 성능이 떨어집니다.
    실제 상황에서는 일반적으로 평균 user profile 을 주고 새로 발생하는 feature 에 따라 업데이트하는 방식을 사용합니다.

이와 같은 문제들로 인해 CF와 같이 다른 방식의 추천 방식도 사용됩니다.

Updated:

Comments