2.2 Key Properties of Ratings Matrices
한 줄 요약: sparsity and the long tail.
R은 m명의 user와 n개의 item의 interaction을 표현한, m*n매트릭스.(r_uj: user u가 item j 를 평가한 점수를 의미) 이때, specified entries는 트레이닝데이터, unspecified enries는 테스트데이터라고 본다. 즉, 평가가 되어있는 정보들을 기반으로, 평가가 아직 되지 않은 것들을 유추하고자 하는 것이다. 문제는 평가된 데이터의 비율이 매우 적다는 것. 현실적으로 item이 너무 많기때문........
Ratings: item을 평가하는 방법
1. Continuous ratings
: item에 대한 감정(좋고 싫음)을 연속형 숫자로 표현한다. -10에서 10 사이의 숫자로 표현하는 등.
user의 item에 대한 선호도를 상세하게 파악할 수는 있겠지만, user가 평가에의 부담을 느낀다. 실제로 이런 평가방법을 사용하면, user들의 평가에의 참여를 이끌어내기 어려우므로..... 잘 사용하지 않음.
2. Interval-based ratings
: 정수형 숫자로 표현하는 방법. 가장 많이 사용되는 예시로는 별점 5점이 있겠다. 이 방법을 사용할 때, 평가 점수간 거리는 명시적으로 모두 같다는 가정을 아주 중요하게 여긴다.
3. Ordinal ratings
: interval-based와 아주 밀접. 표현을 정수형 숫자가 아닌 categorical value로 한다는 것이 차이점이다. "매우 만족", "만족", "보통", "불만족", "매우불만족". 이런 느낌이다. 다만, 선택지가 짝수개이면 중립의견을 표현하는 "보통"과 같은 선택지가 없을 것이고, 이는 forced choice라고 불린다.
4. Binary ratings
: 2가지 선택지만이 주어진다. like or dislike. 현재의 넷플릭스가 binary ratings 시스템을 활용하고 있다. 영화를 평가할때 좋아요, 싫어요로만 평가하게 되어있다. 따라서 중립의견을 가질 때, 그 평가를 표현할 방법이 없다. 좋거나 싫을 뿐... 따라서 이 것또한 forced choice다.
5. Unary ratings
: 선호하는지에 대한 선택지만 주어진다. 크게 두 가지 종류로 파악된다. 첫째로는 페이스북의 '좋아요'기능. 싫은지 어쩐지는 모른다. 그저 사용자가 그 게시물, 그룹 등에 '직접' 관심을 표현했다는 것. 두번째로는 이커머스 사이트와 같은 곳에서 customer의 행동에서 유추하는 것이다. buying or browsing과 같은 행동이 해당 item을 선호한다고 가정하는 것이다. 사용자가 직접 평가하는 것이 아니기때문에, implicit feedback(암묵적 피드백)이라고 부른다. 해당 정보는 사용자의 로그데이터에서 얻을 수 있기 때문에, 사용자의 평가를 기다리는 explicit feedback보다 얻기 쉬운 ratings 시스템이다.
다음은 long-tail property에 대한 내용이다. real-world 환경에서는 lont-tail property를 갖고있다. long-tail은 통계에서 매우 기초적으로 다루는 내용이기때문에 단어만 들어도 대충 감이 왔다. 아 뭔가 상위 20%정도에 무언가가 집중되고, 나머지는 소외되는 구나..!
소수의 item만이 user에 의해 빈번하게 평가되고, 그 item들은 popular item이라고볼 수 있다. figure 2.1을 보면, x축이 빈도(maybe 판매 빈도를 얘기하는 것 같다.)를 내림차순으로 정렬한 item index이고 y축이 얼마나 평가되었는지를 나타낸다. 즉, 빈도가 높은(인기가 많은) 상위 item들만이 평가가 빈번하게 됨을 알 수 있다. 이러한 평가 분포는 추천 과정에서 3가지 함축적인 의미를 내포하고 있다.
1. high-frequency items들이 상대적으로 더 적은 수익. 따라서 lower-frequency items들을 판매하는 것이 더 큰 수익을 얻을 수 있기때문에, 판매자 입장에서 long tail에 위치하는 아이템들을 판매하는 것이 수익 창출을 최대한으로 이끌어 낼 수 있다.
( 온라인 플랫폼(ex. amazon, coupang)의 경우, 판매량이 많은 제품(인기 제품)은 생산자의 자체 경쟁력이 높기때문에, 온라인 플랫폼 기업에 돌아가는 수익이 적을 수 있다.반면, 추천 빈도수가 낮거나 판매량이 적은 비인기 제품은 대체로 생산자 자체 경쟁력이 비교적 낮기 때문에, 온라인 플랫폼 기업에 돌아가는 마진이 더 크다. )
2. long tail item은 평가된 데이터가 거의 없기때문에, robust하게 예측하기가 어렵다. 또한 많은 추천시스템이 인기많은 아이템들을 추천하려고 하기때문에, 추천에의 다양성이 떨어진다.(biased)
3. long tailed 분포는 '사용자에 의해 빈번하게 평가된 아이템들이 매우 적음'을 내포한다. 따라서 neighborhood-based collaborative filtering 알고리즘을 활용하는 것이 위험할 수 있다. 즉, 예측 과정이 매우 다른 결과를 산출해낼 수 있다는 것.
-
2.3 Predicting Ratings with Neighborhood-Based Methods
한 줄 요약: 사용자/아이템간 유사도를 기반으로 타겟 사용자에게 아이템을 추천해준다.
Neighborhood-Based는 사용자간 유사도(user-user similarity)와 아이템간 유사도(item-item similarity)를 사용해서 추천을 해주는 방법이다. (비슷한 user 혹은 item을 정해서 추천에 활용하기 위해 유사도를 계산.)
그렇다면 하위 목록인 user-based models, item-based models를 하나씩 알아보자.
1. user-based models:
비슷한 유저는 같은 아이템에 대해 비슷한 평점을 내릴 것이라는 생각에서 출발한다.
2. item-based models:
비슷한 아이템은 같은 사용자에 의해 비슷한 방식으로 평가될 것이라는 생각에서 출발한다. 예를 들면, 내가 그동안 Alien, Predataor 같은 공상과학 영화를 즐겨봤다면, 비슷한 느낌의 영화인 Terminator도 좋아할 것이라 예측해줄 수 있다. (contents-based방법과는 엄연히 다르다. CB는 아이템의 특성만으로 비교하는 것!)
위에서 간단히 서술했으니, 이번에는 하나씩 자세히 살펴보겠다. 수식 포함.
user-based Neighborhood Models
대략적인 스텝은 이러하다. 우선 타겟 유저와 비슷한 유저그룹 을 찾고(유사도 계산이 필요), 그 비슷한 유저들이 아이템에 매긴 평점 가중평균 계산을 통해 타겟 유저의 비어있는 item rating을 예측한다.
책의 예시를 살펴보자. # 피어슨 상관계수 기준으로 소개하겠다.
우리의 타겟 유저는 user 3라고 하자. 그렇다면 예측대상은 (r_3,1)hat, (r_3,6)hat이 되겠다.
첫번째로, user3와 다른 user들과의 유사도를 계산한다.
user1과의 유사도를 계산하려면, 우선 I_1 과 I_3의 교집합={2,3,4,5}임을 알아야한다.
Pearson(1,3) = {(r_1,2 - mu_1) * (r_3,2 - mu_3) + (r_1,3 - mu_1) * (r_3,3 - mu_3) + (r_1,4 - mu_1) * (r_3,4 - mu_3) + (r_1,5 - mu_1) * (r_3,5 - mu_3) } / sprt( (r_1,2 - mu_1)^2 + (r_1,3 - mu_1)^2 + (r_1,4 - mu_1)^2 + (r_1,5 - mu_1)^2)) + sprt ( (r_3,2 - mu_3)^2 + (r_3,3 - mu_3)^2 + (r_3,4 - mu_3)^2 + (r_3,5 - mu_3)^2 )
# 수식은 다시... 정리해서 올리도록하겠다.
이렇게 계산해보면, top-2 neighborhoods는 user1,2임을 알 수 있다.(상단 표2.1 에 계산한 값들이 모두 나와있다.)
이제는 (r_3,1)hat과 (r_3,6)hat을 r_1,1 % r_2,1 / r_1,6 & r_2,6을 이용해서 예측해줘야 한다.
(r_3,1)hat = r_1,1 * Pearson(1,3) + r_2,1 + Pearson(2,3) / Pearson(1,3) + Pearson(2,3)
(r_3,6)hat = r_1,6 * Pearson(1,3) + r_2,6 + Pearson(2,3) / Pearson(1,3) + Pearson(2,3)
그렇다면, user3의 ratings는 차례로, 6(반올림) 3 3 1 1 4점이 된다. 그렇다면 그동안 평가했던 item들보다 1번 6번을 더 좋아할 것이라는 추측을 할 수 있다. 그렇다면 여기서 의문을 품는 것은 "과연 이 예측값이 확실한가?"이다. user1,2의 biased한 평가가 반영된 평점들을 그대로 활용했기 때문이다. 따라서 평점들을 adjust할 필요가 있다.(user1,2가 뭐든지 좋게 평가할 수도, 나쁘게 평가할 수도 있는 개개인이므로)
따라서, r_u,j대신 s_u,j를 활용하자.
s_u,j = r_u,j - mu_u
user각각에 대해서, (평점 평균 - 평점)을 해주어 평균중심화(mean-centered) 과정을 거치는 것. 쉽게 이해하자면, user1,2 와 다르게 user3은 자신만의 평가 패턴이 있으니 그 기준에 맞춰주는 것이다!
그렇다면 위의 예측하는 식에서 r_u,j부분을 s_u,j로만 바꿔주면, 값이 각각 3.35와 0.86으로 바뀐다. 6번 아이템에의 선호도 수준이 내려가는 것을 알 수 있다.
결론: 평균 중심화 과정의 필요성을 ! ! 잊지 말자 ! !
-
2.3.4 Comparing User-based and Item-Based Methods
user-based |
item-based |
serendipity ↑ |
accuracy ↑ |
provide a concrete reason X |
provide a concrete reason |
more stable |
user-based: 타겟 유저와 비슷한 유저가 본 item추천
--> 익명의 유저들의 취향이 반영됨.
--> (+) recommend some novel items(serendipity)
--> (-) 합당한 이유 제공 불가. 익명의 유저들의 시청기록이 반영되었기 때문. (비슷한 영화를 본 사용자들이 어떤 영화를 좋아했다는 형식의 이유는 제공할 수 있다. 그러나 타겟 사용자와 항상 taste가 같지않다는 점을 유념..!)
item-based: 타겟 유저가 본 아이템과 비슷한 item추천
--> 실제 타겟 유저의 history가 반영됨.
--> (+) better accuracy
--> (+) 합당한 이유 제공 가능 ex. Netflix : 고객님이 '프린세스다이어리'를 시청하셨기때문에, [프린세스다이어리2, 내가 너를 사랑할 수 없는 10가지 이유, 등]이 추천됩니다.
--> (+) ratings의 변화에 영향을 덜 받음. ( user의 수가 item의 수보다 많아서 top-k는 전체에의 영향을 많이 받지않음, e-commerce에서 새로운 아이템보다 새로운 유저의 유입이 더 잦음)
2.3.5. Strengths and Weakness of Neighborhood-Based Methods
강점:
- simplicity, intuitive approach
- interpretability (item-based)
- 새로운 유저와 아이템이 추가되는 상황에서 상대적으로 stable
약점:
- offline 단계에서 비효율적(large-scale이라면, 시간 복잡도가 user-base의 경우에는 O(m^2), item-based의 경우에는 O(n^2)...--> too slow)
# online에서는 효율적임
- sparsity
# 만약 neighbors중 아무도 해당 item을 평가하지않았다면, 타겟 유저에게 좋은 추천이 아닐 것이라는 판단 가능