본문 바로가기
ML&DL/Recommender System

[Recommender System / Paper review] #13 Content-Based Book Recommending Using Learning for Text Categorization

by 거북이주인장 2023. 4. 11.

Summary

  • 이전의 유저가 남긴 행동에 기반하는 것이 아니라, 컨텐츠 자체에 집중하여 추천을 진행한다.
  • 컨텐츠에 대한 점수를 예측하는 것이 아니라 컨텐츠 a가 컨텐츠 b에 비해 더 선호되는지, 랭킹을 모델링한다.
  • 본 논문에서는 책에 대한 추천 문제를 해결하는데, 이때 책의 제목, 내용 등의 자연어를 추천 시스템 입력값으로 사용한다. 다만, 이미 말했듯이 유저가 어떤 책을 이전에 좋아했는지 등은 모형에 포함하지 않는다.

Motivation

  • 기존의 추천 시스템에서는 많은 유저에 의해 소비된 아이템이 주로 추천되는 경향이 있었다.
  • 이는, 유저의 취향에는 맞지만 예상하지 못한 아이템을 추천해주기보다 인기있는 아이템이 주로 추천되어 cold start의 문제가 제기되었다.
  • 또한 다른 유저의 행동 패턴도 분석해야하므로, 데이터 관련 보안 이슈가 대두되었다.
  • 이런 문제점 때문에, 다른 유저의 행동 패턴에 기반해서 추천을 하는 것이 아니라 컨텐츠 자체를 분석하여 추천하는 content-based 추천 기술을 본 논문에서 소개한다.

Approach

LIBRA

Learning Intelligent Book Recommending Agent의 약어다. LIBRA는 먼저 아마존에서 책에 관련된 데이터베이스를 구축한다. 따라서 책에 관련한 데이터는, 책 내용 자체 보다는 책에 대한 meta data이다. 이후 유저는 선택된 training books에 대해 점수를 매긴다. 그러면 베이지안 학습 알고리즘을 통해서 유저의 프로필을 학습하고 유저에게 랭킹된 추천 리스트를 제공한다. 이제 단계별로 어떤 과정을 수행하는지 알아보자.

Extracting information and building a database

  • 책에 대한 데이터를 추출하기 위해 book-description url을 돌며 정보를 추출하는 과정이다.
  • 하나의 book-url을 문서로 보고, 'slot'에 표현된 'filler'을 찾는다.
    • 현재, rs에 의해 사용되는 slots은 title, authors, synopses, published reviews, customer comments, related authors, related titles, subject terms 이다.
    • 이 fillter을 하나의 책을 구성하는 데이터로 본다.
  • 아마존에서 데이터를 추출했는데, 아마존 웹페이지가 형식에 맞춰 있어서 데이터를 추출하는데 어려움이 없었다고 한다.
  • 이렇게 slot으로부터 추출한 데이터는 unordered bag of words으로 전처리 된다.

Learning a profile

  • 유저가 training books에 대해 점수를 매긴다.
  • LIBRA는 bag of words을 다루는 베이지안 텍스트 분류기이다. 정확한 확률을 계산하지 않고, 하나의 책을 negative로 평가할 확률에 비해 positive로 평가할 확률이 얼마나 되는지, 그 비율을 계산한다.

문서 $D$가 주어질 때, 클래스에 대한 posterior 확률은 베이즈 룰을 사용하여 아래와 같이 계산된다.

  • $P(D)$: prior로써, constant이기 때문에 정확한 확률을 계산하는게 목적이 아니라면 무시해도 된다.
    • 본 논문에서는 $P(c_1 | D) / P(c_0 | D)$을 계산하는 것이 목적이기 때문에 무시해도 되는 상수이다.
    • $c_1, c_0$: positive / negative class
  • $P(a_i | c_j)$: 클래스 $c_j$가 주어질 때, 단어 $a_i$가 등장할 확률이다.

본 논문에서는 하나의 책에 대한 정보를 수집할 때 아마존 웹페이지에 있는 여러 slot의 데이터(title ,authors, synopses, published reviews 등)을 사용한다. 즉, 하나의 책을 구성하는 여러 벡터 $d_m$이 있는 것이고 이는 하나의 slot을 나타낸다. 이를 반영하여 posterior 확률을 다시 써보면 아래와 같다.

  • $S$: slots의 갯수
  • $a_{mi}$: m번째 slot의 i번째 단어
  • $P(c_j) = \sum^N_{e=1} \alpha_{ej} / N$
    • $0 \geq \alpha_{ej} \geq 1, 1 \geq r \geq 10$
    • $\alpha_{e1} = (r-1)/9, \alpha_{e0} = 1 - \alpha_{e1}$
    • $e$번째 책에서 어떤 단어가 $n$번 나타났다면, positive example에서는 $\alpha_{e1}n$번 나타난 것으로, negative example에서는 $\alpha_{e0}n$번 나타난 것으로 count한다.
  • $P(a_{k} | c_j, s_m) = \sum^N_{e=1} \alpha_{ej} n_{kem} / L(c_j, s_m)$
    • $n_{kem}$: 단어 $a_k$가 책 $B_e$의 slot $s_m$에서 나타난 횟수
    • $L(c_j, s_m)^N_{e=1} \alpha_{ej} |d_m|$: 카테고리 $c_j$와 slot $s_m$에서의 total weighted length

Producing, explaining and revising recommendations

이렇게 모델을 세우고 확률을 추정하면, 하나의 책 안의 slot안에 있는 단어에 대한 strength을 아래와 같이 계산한다.

각 단어의 strength을 사용하여 적절한 책을 아래와 같이 추천한다.

이 책에서 각 slot에 있는 word의 strength가 계산되었다. content-based 추천은 각 단어가 왜 이런 strength을 가지게 되었는지 아래와 같이 보여준다. 예를 들어, universes라는 단어가 25.08이라는 strength을 가지게 된 이유를 유저가 매긴 점수에 기반해서 보여준다.

Results

  • 각 데이터세트와 training samples의 수(N)에 따른 결과이다.
  • content-based 추천은 N이 작아도 꽤나 괜찮은 결과를 냈다.
  • 다른 방법과 비교한 실험은 진행하지 않았다.

  • collaborative filtering과 content-based 추천은 서로 상호보완적이기 때문에 content-based 추천에서 cf의 효과를 제외하면 어떤 결과가 나올지 실험을 진행했다.
  • content-based 추천 모델의 데이터에서 아마존 추천 시스템에 의해 연관된 저자를 추천하는 slot이 있었는데 이를 제외하고 content-based 추천을 학습하여 결과를 비교해본 것이다. 이를 LIBRA-NA라 하자.
  • 결과는 LIBRA-NA가 LIBRA보다 좋지 못한 성능을 보임을 보여준다.
  • 이는 cf와 content-based 추천이 합쳐질 때 더 좋은 성능을 낼 수 있음을 시사한다.

Conclusion

  • cold-start 문제를 해결하는데 실마리를 주는 content-based 추천의 원조 페이퍼를 읽었다.
  • 음.. 수식이나 파라미터를 추정하는 과정이 아직 100% 이해가 가지를 않지만 모델을 세우는 과정에서 다른 유저의 선호도는 반영하지 않는 다는 점은 이해가 됐다.
  • 실험 결과에 cf 등 다른 방법론도 포함하여 결과를 서로 비교했다면 더 좋지 않았을까 싶다.
  • 2000년에 나온 페이퍼지만 이미 cf와의 상호보완성을 시사한 부분이 흥미롭다. 추후에 cold-start 문제를 해결하기 위한 실마리를 제공하는 듯 하다.

댓글