추천시스템 모델링

in #recommender7 years ago (edited)

추천시스템의 모델은 ‘선호도 행렬’을 주로 사용합니다. 그리고 온라인 판매에서 중요한 역할을 하는 ‘롱테일’의 법칙을 다루어 보겠습니다.

선호도 행렬

추천 시스템에서 ‘사용자’와 ‘아이템’이 가장 중요한 요소라고 볼 수 있습니다. 사용자는 특정한 아이템에 대한 선호를 가지고 있고, 이들 두 요소는 행과 열로 하는 행렬로 표현됩니다. 각 엔트리를 이루는 값들은 순서집합(ordered set)으로 주어지는데요. 값이 사용자가 평가한 아이템의 평점의 크기를 의미하기 때문입니다.

선호도 행렬은 대체로 희소행렬(sparse matrix)라는 가정이 주어집니다. 희소행렬은 대부분 행렬의 값이 ‘알 수 없음'(unknown) 상태인 것을 의미합니다. 사용자가 매우 많고, 사용자가 좋아하는 아이템은 임의의 그룹별로 정해져 있기 때문입니다. 저희 시스템에서도 수없이 많은 논문이 언급되지만, 생물정보학을 전공하는 사람이 물리학의 논문을 평가했을 가능성이 매우 희박합니다. 희소행렬 속 ‘알 수 없음’ 값은 추천 시스템이 특정 사용자의 특정 아이템에 대한 선호를 명시적으로 알 수 없을 때를 가리킵니다.

교재의 예시를 살펴보겠습니다.

선호도 행렬입니다. A~D의 사용자가 HP1~HP3, TW, SW1~SW3까지 영화에 1~5점까지 점수를 주었습니다. 다수의 빈 칸을 발견할 수 있는 희소행렬입니다.

추천 시스템의 목적은 바로 이 빈 칸의 값을 예측하여 채워 넣는 것입니다. 아마 영화의 제작사, 배급사, 출연자나 이름의 비슷한 정도 등으로 대강의 유사성을 알 수 있습니다. 예측컨대, A 사용자는 SW2나 SW3을 좋아하지 않을 것입니다. SW1을 한 번 봤는데 1점 줬다면, 그 시리즈물을 좋아할 리 없습니다. C 사용자가 SW1, SW2에 비슷한 점수를 준 것을 보면 알 수 있지요.

아마 추천 시스템마다 조금씩 사용목적은 다르겠지만, 선호도 행렬의 모든 빈칸을 채워넣는 과정이 필수입니다. 그리고 한 행 안에서 예측된 점수 중 가장 높은 점수를 찾아봐야합니다. 사용자마다 개인화된 추천을 해 줄 예정이니까요. 대부분 응용 시스템에서는 모든 아이템에 대한 사용자별 선호도를 제시하기보다 좋아할 몇몇 개의 아이템을 제시합니다. 따라서 높은 점수가 예상되는 모든 아이템에 대한 계산을 수행하기보다 적절한 부분집합을 먼저 찾는 것이 합리적일 것입니다.

선호도 행렬을 만드는 방법은 두 가지 입니다.

  • 첫째, 개별 사용자가 평점을 매기도록 유도하는 것.
  • 둘째, 사용자의 행위를 저장하는 것입니다.

첫번째 방법은 효율성에 문제가 있습니다. 대부분의 사용자는 평점 매기기를 귀찮아할테지요. 넷플릭스, 유튜브 등이 평점 시스템을 도입하고 있습니다. 반면 아마존과 유튜브는 사용자가 ‘like’를 누르는 행위를 1로 지정해 저장합니다. 이럴 경우 0과 1만 존재해 아이템의 선호도를 평가하기가 어렵게 됩니다. 적합한 상황을 선택하여 선호도 행렬 만드는 방법을 결정해야할 것입니다.

롱테일 법칙

추천 시스템을 만들기 전에 ‘롱테일 법칙'(long-tail phenomenon)을 알아보도록 합니다. 오프라인 배달이나 상점에서는 자원이나 공간의 한계로 ‘사용자가 가장 좋아할 것 같은’ 물건을 진열하고 서비스합니다. 하지만 온라인에서는 상황이 다릅니다. 모든 아이템의 진열과 서비스가 가능합니다. 신문지면상 인쇄되는 기사는 한정적이지만, 온라인 기사는 무제한으로 업로드가 가능합니다.

오프라인 매장에서 추천은 아주 간단합니다. 모든 고객에게 맞출 수 없으므로, 오직 추천은 총합 얼마만큼의 아이템을 전시할 수 있느냐에 의해 결정됩니다. 대체로 오프라인 서점에서는 가장 인기 많은 책을 진열하면 되고, 신문은 사람들이 좋아할 만한 기사를 선별해 인쇄하면 됩니다. 이럴수록 전시품목과 기사배열을 결정하는 큐레이터와 데스크의 역할이 중요하겠지요.

온라인 매장이 오프라인과 가장 다른 점은 바로 롱테일 법칙에 있습니다.

x축을 각 아이템, y축을 인기도로 봤을 때 나타나는 현상입니다. 보통은 ‘페레토 법칙’이라 하여 상위 20%의 아이템이 매출의 80%를 차지한다는 논리가 오프라인 매장의 아이템 선별에 중요한 척도가 되었죠. 하지만 온라인 매장에서는 긴 꼬리 모양의 하위 80% 아이템에 주목합니다. 개인별 선호에 따른 특수한 아이템이 존재하고, 이 부분에서 상당한 매출이 발생한다는 의미입니다.

롱테일 법칙을 설명하는 대표적인 예로 크리스 앤더슨의 ‘공허감과의 조우'(Touching the Void)라는 책이 자주 언급됩니다. 등산에 관한 이 책은 출판당시에는 판매량이 많지 않았지만, 수 년이 지난 후 ‘증발'(Into Thin Air)이라는 작품이 같은 주제에서 출판되자 아마존 추천 시스템이 몇몇의 사용자에게 크리스 앤더슨의 작품을 추천해 주었고 인기를 끌었답니다. 오프라인 매장에서는 있을 수 없는 일이지요.

추천 시스템의 응용

추천 시스템은 잘 알려진대로,

  • 온라인 상품 추천(아마존)
  • 영화 추천(넷플릭스)
  • 기타 콘텐츠 추천(유튜브)

등이 있습니다. 저는 콘텐츠 추천의 하나로 기사 및 상품 추천 시스템을 설계하고 있습니다. 사람이 직접 추천한 논문 목록과 과학분야 기반 사용자 클러스터링, 하이브리드 협업 필터링 등의 방법을 조합하여 구현하고 있습니다. 논문은 하루에 수 만개씩 쏟아질 정도로 빅데이터입니다. 최근 네이처-스프링거에서 Recommended R이라는 서비스를 통해 논문 추천에 나서고 있습니다. 흔히 독자가 최근 본 100개의 논문을 토대로 여러 DB를 검색해 추천 점수를 만든 뒤 추천을 해주는 방식입니다.

Reference

Stanford InfoLab – Recommendation Systems