지난 번에 이어 추천 시스템 입문 2강이다. 추천 시스템은 한 강의가 2주 공부할 분량이라 그렇게 많은 분량은 아니다.

2.1 개인화되지 않은 추천 서론

뉴욕의 식당 안내인 Zagat Guide(나중에 구글에 팔려 웹으로 서비스됨)를 예를 들면 사람들이 {0, 1, 2, 3} 중 하나로 평점을 매기면 ${round}({MEAN}(평점) \times 10)$ 계산으로 0 ~ 30점의 점수를 부여함.

마찬가지로 cntraveler.com을 가면 점수를 매기고 있는데 평가는 “아주 좋음”, “최고임” 등으로 다르다. 인터넷에는 영화 관객 순위, 음악 순위 등 이러한 비개인화된 집합적(aggregated) 리뷰가 많다. 그런데 이런 평균 방식은 실제와 다른 결과가 나타날 수 있다. 또한 컨텍스트가 결여돼 있다. (예: 아이스크림에 얹을 소스에 대한 추천이 필요한데 그런 상황은 고려되지 않는다. 일반적으로 소스라면 케첩이 가장 많이 추천될 뿐이다.)

X를 하는 사람은 Y를 하는 것으로 추천하는 경우가 많은데 다음 데이터셋이 필요하다

계산 방식은 다음 경우가 있다.

  1. 다음 계산으로 백분율을 구한다. $$ \frac{(X\ and\ Y)}{X} $$ 이 경우 얼마를 기준으로 추천할 것인가? 또한 Y가 아주 일반적인 상품이라면 어떻게 X와 Y가 관계가 있다고 할 것인가?(예: 바나나는 아주 많이 팔리는 상품이라 다른 상품과 꼭 관계 없이 사람들이 산다면?)

  2. 위 1번의 단점을 보완해 X를 사지 않은 사람에 대해서도 고려하기 위해 다음으로 구한다. $$ \dfrac{\dfrac{(X\ and\ Y)}{X}}{\dfrac{(!X\ and\ Y)}{!X}} $$

  3. 데이터 마이닝 방법 중

    $$ lift = \frac{P(X\ and\ Y)}{P(X) \times P(Y)} $$

Zagat은 점차 평점이 적절하지 않다는 비판을 받게 됐다. 그 이유는,

교훈

2.2 선호와 평점

선호(preferences)의 종류: 명시적(평점, 리뷰, 투표), 묵시적(클릭, 구매, follow)

명시적 평점(rating) 사례 - 영화 점수를 별점으로 주는 인터페이스(반점을 허용할 것인가 점수별로 측정 기준을 제시할 것인가를 결정해야 함). 좋아요/싫어요 인터페이스(Thumbs, Likes), 연속적인 점수 체계 등. 평점 제공 시기 - 소비(경험 도중 또는 직후), 기억(경험 후 일정 시간 경과), 기대(경험 전) 난점(difficulties) - 신뢰성/정확성, 사람들의 선호 변화, 평점의 의미

묵시적 데이터 원래는 사용자 선호를 표현하는 것이 아닌 행위에서 여러 가지를 알아낼 수 있다. 예: 읽는 시간(또는 청취, 시청), binary 행위(클릭 또는 클릭 안함, 구매, follow/친구) 난점 - 행위의 의미 판단, 행위의 규모/표현(예: 클릭 횟수 등), 특이한 경우(예: 예기치 못한 사용자 행위 등)

2-3: 예측과 추천

예측과 추천은 추천 시스템의 결과물이다.

예측(predictions) - 사람들이 대상 항목을 얼마나 좋아할 것인가하는 추정. Facebook 좋아요, Twitter 트윗 횟수 표시도 비개인화 예측이며 영화 사이트의 개인별 별점 추정치도 예측이다. 항목 정량화에 유용하지만 falsifiable 가능성이 있다.

추천(recommendations) - 사람들이 좋아할 만한 대상 항목을 권유하는 것. 좋은 선택을 기본값으로 제공하지만 상위 좋은 몇개가 별로라고 받아들여지면 사람들은 그 사이트를 더 이상 보지 않게 된다.

한 가지 고려할 기준은 예측이나 추천이 얼마나 노골적인지(explicit) 아니면 자연스러운지(organic)하는 것이다. 예를 들어 가게에서 점원이 나를 잘 모르는데도 처음부터 물건을 권유하면 거부감이 생기게 마련이다. 서점에서 어떤 책은 표지가 보이고 어떤 책은 등만 보이는데 이것은 자연스러운 권유를 하는 것이다. 노골적인 예측과 좀더 뭉뚱그린 방식(coarser granularity)간의 균형이 필요하며 또한 이것이 가장 좋다는 방식과 부드러운 제시 방식의 균형이 필요하다.

2-4: Scales and Normalization

사람들이 평점을 매긴 컨텐트에 대해 어떻게 계산하는가?

Amazon은 평점 평균, 전체 분포, 리뷰 수를 보여준다. Reddit은 순 upvote 수를 보여준다

순위는 어떻게 정하는가?

고려할 사항 중 시간에 대해서만 보자면

순위를 보여주는 방식도 중요하다