원본 글 Ben Fredrickson이라는 아조씨가 2013년에 남긴 글인데, 음… 추천 시스템의 실제 적용에 관한 많은 Insight을 주는 것 같아서 번역해봤어요.
아조씨는 그리고 Implicit이라는 빠른 Python matrix factorization library를 만들었습니다!(저도 컨트리뷰터에요!!)
Google+나 페이스북에서 ‘싫어요’를 누를 수 없는 이유에 대해 생각해 본 적이 있는가? 페이스북의 ‘좋아요’ 버튼이나, Google+의 ‘+1’ 버튼과 같은 기능은 인터넷 어디에서나 찾아볼 수 있다. 하지만, 구글과 페이스북은 ‘싫어요’나, ‘-1’과 같은 기능은 제공하지 않는다는 점에 대해서 생각해 본 적은 있는가?
이 버튼은 온라인 쇼핑몰과 같은 웹 사이트에서 흔한 평점 시스템과는 대조되며, 웹에 존재하는 평점 시스템은 페이스북과 같은 방법을 제외하면 크게 두 가지로 나뉜다.
- 넷플릭스, 아마존, 옐프에서 사용하는 5-star 평점(역주. 5-영화나 쇼핑몰 평점에서 흔히 사용되는 [1, 2, 3, 4, 5] 5단계로 나눠진 평점 시스템) (역주. 한국에서는 왓챠, 네이버 영화, 쿠팡, 그리고 비블리과 같은 사이트가 있어요.)
- 레딧이나 유투브에서 사용하는 좋아요/싫어요 2단계 평점 (역주. 네이버나 카카오의 뉴스 피드가 대표적입니다.)
Google+와 페이스북은 Positive feedback(긍정적인 피드백 혹은 리뷰)만을 남길 수 있게 되어 있다. 그들에게 돈을 주는 광고주의 페이지를 싫어한다는 흔적을 남기는 것을 원치 않는다는 것도 분명 그 이유 중 하나겠지만, 더 큰 이유는 사람들은 ‘싫어요’ 버튼을 위해 화면 스크린(귀중한 자산인!)의 일부를 사용할 필요를 느끼지 않기 때문이라고 생각한다.
사람들은 온라인에서 ‘싫어요’ 기능을 잘 사용하지 않는다
웹에 관해 흔한 오해 중 하나는 사람들의 평점의 분포는 bimodal하다는 것이다. 다시 말해, 사람들은 좋아하는 것에 ‘좋아요’라고 평가를 남기는 만큼, 싫어하는 것에 ‘싫어요’라고 평가한다는 오해가 존재한다. 하지만 데이터를 보면 이 가정이 틀렸다는 사실을 알 수 있다. 5-star ratings은 정규분포에 가까우며, 1부터 5까지의 평균인 3보다 약간 높은 평균을 갖고 있다. 그리고, “좋아요” 혹은 “싫어요”의 두 가지 평점을 매길 수 있는 사이트의 평점 대부분은 압도적으로 “좋아요”이다. 물론, 내 말을 그냥 믿지는 말라. 최근 웹에는 이런 평점 데이터가 널려 있어서, 누구나 이 데이터를 가져다 분석할 수 있다. 나는 아래의 몇몇 사이트의 데이터를 직접 분석해봤고, 결과를 소개하겠다.
몇몇 웹 사이트의 평점 데이터
내가 살펴본 몇개의 데이터셋 목록이다.
- 영화 리뷰 Netflix Prize dataset
- 비지니스 리뷰 Yelp Academic Dataset 자세히 here
- 아마존 책 리뷰 Multi-domain Sentiment Dataset
- 뉴스 평점 데이터셋 from Reddit
평점을 1점부터 5점까지 줄 수 있는 데이터셋에 대해서는, 평점 3점은 약간 긍정적인 반응이라고 가정하자(내가 그렇게 평점을 매니기까). 하지만 모든 사람이 나와 같은 방식으로 평점을 주지는 않으므로, 평점 3점은 따로 분리해서 표를 만들었다. Amazon 데이터는 이와 같은 평점 3점의 모호함 때문에 3점짜리 평점을 데이터셋에 포함하지 않았다.
부정적인 평점의 비율은 비교적 일관적이게 15퍼센트 근처이다(정확히는 Yelp, Amazon, Netflix, Reddit 데이터셋에 대해 각각 17%, 12.8%, 14.7%,15.8%이다). 다양한 아이템을 다루는 다양한 웹 사이트에서 데이터를 가져왔음에도 불구하고, 부정적인 평점의 수는 긍정적인 평점에 비해 상당히 적다. 하나 더 놀라운 사실은, 1점짜리 평점은 더 적다는 사실이다. Yelp 데이터의 4%, Amazon 데이터의 6.9%, 그리고 Netflix의 데이터 중 4.8%만이 2점 미만의 평점이다.
digg dataset, Zite 내부의 데이터 등 여러 뉴스 데이터셋에서도 비슷한 효과 발견했다. 여러 뉴스 데이터를 포함하지 않은 이유는 Reddit 데이터셋이 일반적으로 공개되어 있는 가장 큰 데이터셋이기 때문이다. Reddit의 경우 85%가 ‘좋아요’(Upvote)이고, Digg 데이터셋의 경우 88%가 ‘좋아요’이다.
사람들이 부정적인 리뷰를 잘 남기지 않는 이유
사람들이 부정적인 리뷰를 잘 남기지 않는 이유는 다양하지만, 내가 중요하다고 생각하는 몇몇 이유는 다음과 같다.
사람들은 자신이 싫어하는 것에 시간을 쓰지 않는다.
책을 사거나, 영화를 빌리거나, 음식을 주문할 때 대부분 우리는 우리가 무엇을 주문하는지 잘 알고 있다. 만약, 싫어할 걸 안다면 애초에 주문하지 않고 피했을 것이다(역주. 유저는 자신이 좋아할 것 같은 아이템을 선택하는 경향이 있으므로, 긍정적인 평점이 늘어날 것이다). 사람들은 또한 자신이 싫어하는 것에 대해 검색하고, 평점을 매기는 귀찮은 일을 잘 하지 않을 것이다. 인터넷에서, 싫어하는 것에 대한 가장 기본적인 반응은 부정적인 리뷰를 남기는 것이 아니라, 애초에 그것에 관한 글을 클릭하지 않는 것이다(역주, 유저가 싫어하는 것을 구매하거나, 주문했더라도 평점을 매길 확률이 낮다).
나쁜 것은 유명해지지 않는 경향이 있다.
그리고… 인기있는 것은 더 많은 평점을 받는다. 엄청 많이.
모든 데이터셋이 따르는 법칙이 하나 있다. 아이템이 평점을 받은 개수는 power law(한글로는 멱법칙)를 따른다는 것이다. 즉, 소수의 유명한 아이템은 상당히 많은 평점을 받을 것이고, 대부분은 평점이 거의 매겨져 있지 않다. 예를 들어, Netflix 데이터셋에서는 가장 평점을 많이 받은 10개의 영화는 하위 50%(8,713개)의 영화의 평점을 합친 것보다 더 많은 평점을 갖고 있다. 그리고, 평이 좋지 않(negatively rated) 영화는 전부 평점을 받은 개수 순으로 따질 때 하위 50% 영화에 속해 있었다.
이 그래프의 한 점은 하나의 영화이며, 가로축은 영화의 평균 평점, 세로축은 그 영화에 평점이 달린 개수이다. 이 그래프를 보면 내 말의 의미를 이해할 수 있을 것이다. 평점이 낮은 영화(그래프에서 왼쪽에 있는 점들)은 그리 많은 평점을 받지 않은 것을 알 수 있을 것이다. 많은 쓰레기 영화들은 정말, 정말 적은 평점을 갖고 있다. 평점이 2.5보다 낮은 영화는 중에서는, 유명한 영화가 거의 없음을 알 수 있다.
이런 평점의 비대칭성을 볼 수 있는 다른 방법은, 데이터 셋 내의 최악의 영화와 최고의 영화를 비교하는 것이다. 가장 평균 평점이 낮은 영화는 ‘Avia Vampire Hunter’으로, 평균 평점은 1.28점이며, 132개의 별점을 갖고 있다. 가장 평균 평점이 높은 영화는 “Lord of the Rings: The Return of the King: Extended Edition”으로, 평균 평점은 4.72이며, 73,335개의 리뷰(평점)가 달려 있다. 가장 평점이 높은 영화는 가장 평점이 낮은 영화에 비해 500배 나 많은 리뷰가 달려 있었다. 전반적으로 전체 영화 중 30% 정도는 3점보다 낮은 평점을 갖고 있는데 비해, 전체 평점 중 3점 미만의 평점은 15%에 불과하다.
이는 위에 언급한 사실을 다르게 표현한 것에 지나지 않는다. 사람들은 자신이 좋아하지 않는 것을 피하는 경향이 있다. 따라서, 별로인 영화는 유명하지 않은 채로 남게 된다. 이 사실은 내가 다른 방법으로 두번 표현할 정도로 중요하다고 생각한다.
사람들은 익숙한 것을 좋아한다.
전혀 모르는 것에 대해서 사람들은 리뷰를 잘 남기지 않는다. 하지만, 익숙한 것에 대해서는, 어떤 것에 대해 익숙하다는 사실 자체가 그것을 좋아하게 만드는 경향이 있다. 심리학에서는 이 현상을 노출 효과라 하며, 이 현상은 사람들의 의사결정에 많은 영향을 미치고 있다.
정말 나쁜 물건은 그리 많지 않다
아무도 쓰레기같은 소설을 쓰려 하지 않고, 맛이 없는 음식점을 열려 하지 않는다. 또한, 쓰레기같은 영화도 만들려 하지 않는다. 그리고 대부분의 사람들은 어느 정도 목표를 달성한다. 정말 쓰레기같은 물건을 만드는 사람은 드물다.
Netflix 데이터로 돌아가 보자. 전체 영화 의 70%는 평균 평점이 3 이상이다. 대부분의 평점 (85%)이 3점 이상이기 때문에, 유명한 영화의 평균 평점이 높아지는 것을 감안하더라도, 영화 대부분은 긍정적인 평균 평점을 갖고 있다.
이 사실이 추천 시스템에 함축하는 바
이 사실이 추천 시스템을 만드는 모든 사람에게 의미하는 바는, explicit negative feedback(낮게 매겨진 평점)에만 의존할 수는 없다는 사실이다(역주, 대부분의 평점 예측 모델은 rating이 normal distribution을 따른다고 가정하는데, 실제 평점의 분포는 그렇지 않음을 이 아티클에서 보여줍니다.). 사람들은 웹에서 아이템을 평가하는 것보다, 클릭을 더 많이 하며, (많지 않은) 평가의 대부분은 긍정적인 평가가 대부분이다. 더 많은 데이터가 더 좋은 모델을 만들지는 않지만, 손해가 되는 경우는 드물다.