데이터사이언스/추천시스템

추천시스템 - (5) 기술통계

_금융덕후_ 2020. 2. 21. 20:53
728x90
반응형

추천시스템

 

비개인적 추천

비개인적 추천을 하는가?

  • 새로운 유저는 개인화 있는 정보도 별로 없으니 이들을 위해 처음부터 시작하는 용도로 사용한다.
  • 심플하고 빠르지만, 이점이 많다.
  • 온라인 매체들 이러한 방법론을 사용하는 곳이 많이 있다.
  • 개인화가 불가능하거나 힘든 곳에서 사용한다.

기술통계

기술통계란, mean, max, median과 같은 기본적인 통계적 기술을 말한다.

기술통계를 통한 추천은, 간단한 통계적 방법으로 데이터를 분석해 추천을 하는 것이다.

약한 개인화

  • 우편번호, 대략적 위치
  • 나이, 성별, 국적, 민족성

이러한 정보들은초반의 정형화된 추천을 하기에 매우 적합하다.

사용자가 지금 보고있는 아이템에 관련된 추천을 하는것도 약한 개인화에 해당된다.

 

ZAGAT 이야기

ZAGAT이라고 하는 단체에 관한 이야기로 시작하려 한다.

뉴욕의 커플이 친구들에게 뉴욕의 식당들에 대한 팁을 알려주기 시작했다.

시간이 지나 그들은 그러한 정보들을 모아 정리하기 시작했고, 작은 책으로 출판하였다.

사람들의 작은 리뷰를 모아 좋은 식당을 추천해준다는 작은 아이디어로 시작한 ZAGAT은,

현재 거대한 식당 리뷰 단체로 성장했다.

 

점수 계산

ZAGAT팀은 사람들이 1년동안 가본 식당에 대한 설문조사를 모아 점수를 계산하였다.

점수는 어떤 의미인가?

  • 인기도
  • 사람들이 보편적으로 좋아하는
  • 좋아할만한 확률

어떻게 계산하는가?

  • 빈도
  • 평균점수
  • 복잡한 계산 방식

 

ZAGAT 계산방식은 이렇다:

평점을 0~3으로 매기고, 점수들에 평균을 구하고 그것을 10으로 곱한다.

마지막으로 0~30사이가 숫자를 반올림한다.

심플해 보이지만, 매우 좋은 성능을 낸다.

(현재 ZAGAT 5개의 평점 시스템으로 바뀌었다.)

 

점수 계산 방법

인기도는 굉장히 중요한 계산법이다.

평균점수는 오해의 소지가 있는 계산법이다.

  • 좋아하는 사람의 비율을 구할 있다.
  • 사용자들의 평점을 표준화(어떠한 스케일로)하는 방법도 있다.
  • 평점을 사용자의 신뢰도를 고려해야한다.

많은 데이터는 모든 계산법에 좋은 결과를 낳는다.

 

결점/주의점

ZAGAT 대한 평가가 시간이 지날수록 안좋아지는 경향이 있었다. 이유가 무엇일까?

별로인 식당들의 평점이 너무 좋았고, 좋은 식당들의 평점이 좋지 않은 경우가 많았다.

개인적인 의견들이 너무 많이 반영된 평가였다.

사람들이 한번 갔던 식당의 평가는 다시 하지 않는다.

그리고 개인의 취향이 모두 다르기 때문이다.

인기도 같은 기술통계 이런 단점이 있을 있다.

 

선호도의 총계

예측의 목적은 언제나 사용자가 아이템을 보거나, 읽거나, 사는것을 도와주는 것이다.

그렇다면 아래의 간단한 통계적 방법론은 어떻게 작용하는가?

평점의 평균

평점을 매긴사람들은 아이템을 좋아하는가? 하지만 정보는 인기도는 아니다.

Up/down 투표

방법은 인기도를 나타내지만, 특성을 나타내지는 않는다.

네개 이상 (긍정적)

긍정적인 의견을 많이 나타내는 것이기 때문에 대체적으로 좋다는 것을 나타낸다.

전체의 분산

전체의 분산을  보여주는 것은 사용자들이 쉽게 이해할 있지는 않다.

 

랭킹 기반 추천

검색의 리스트 상단에는 무엇이 있는가?

평점으로 통계를 가장 좋은것을 상단에 올려놓을 수는 있지만, 여러가지 고려점들이 있을것이다.

  • 너무 적은 평가가 있지는 않는가? - 한개의 5개가 있을 수도 있다.
  • 다변량의 정보 (히스토그램) 다루는 방법
  • 도메인이나 비지니스 특성의 정보

 

랭킹 계산시 고려할

신뢰성

아이템이 좋다는 것에 대한 어느정도의 신뢰가 있는가

리스크에 대한 내성

    • 하이리스크 하이리턴인가?
    • 보수적인 추천이 나은 방법인가?
    • 확실한것만 추천할것인가?

도메인/비지니스 특성

    • 고객의 나이대
    • 시스템의 목적

감쇠된 평균

데이터가 너무 적을 때에는, 평점이 정확한가에 대한 확신을 갖기가 어렵다.

이런 상황에서는 모든 아이템이 평균값을 가진다고 가정한다.

그리고 평점이 있는 것들은 평균이 아니라고 가정한다.

이런 상황에서는 아이템의 점수를 계산할때 아래의 수식을 사용한다.

$$\frac{\sum_{u} r_{ui} + k\mu}{n + k}$$

$r_{ui}$ i번째 사용자의 평점을 의미한다.

$n$ 평점의 수를 의미한다.

$k$ 평균값 (모든 아이템이 가진 ) 넘어서기 위한 수를 의미한다.

$\mu$ 평균 평점을 의미한다.

위의 방법을 사용하면, 데이터가 많아지만 역효과를 있지만, 적은 데이터로부터 오는 단점을 극복할 있다.

 

신뢰구간

통계적인 신뢰구간(Confidence Interval) 95% 이용하면, 평균값에 대한 신뢰도나, 어떤 사용자가 어떤 물건을 좋게 평가할 것인가를 예측해 있다. 구간은 데이터가 많아질 수록 좁아진다.

  • 하계 (lower bound) 보수적임을 의미하고, (추천의 성공의 확률이 높다)
  • 상계 (upper bound) 위험도가 있음을 의미한다. (추천에 리스크가 있다)

시간

기사 사이트에서는 새로운/오래된 기사에 어떤 평점을 매기는가.

Hacker News 다음과 같은 수식을 이용한다.

$$\frac{(U - D - 1)^\alpha}{(t_{now} - t_{post})^{\gamma}} X P$$

$U - D$ 평가의 수를 의미한다.

$\alpha$값은 초반에 매겨진 평점들이 높은 점수를 받기 위한 지수적 감쇠를 의미한다.

분모는 포스팅이 얼마나 되었는지를 있는 수식이다.

$\gamma$ 역시 지수적 감쇠인데, 시간이 지나면 지날 수록, 시간이 평점에 영향을 미치는 정도를 줄이기 위한 수이다.

위의 방식은 도메인과 사이트의 오너의 결정에 따라 영향력이 달라질 있다.

 

Reddit에서는 다음과 같은 수식을 이용한다.

$$log_{10} max(1, |U - D|) + \frac{sin(U - D) t_{post}}{45,000}$$

$|U - D|$ $max(1, x)$ 수식에서는 마이너스값의 평가는 취급하지 않는다는 것을 의미한다.

수식에서는 $log$ 취했는데, 이것은 나중에 매겨진 평가에 대한 엄청난 양의 감쇠를 의미한다.

(이것은 11~100개의 평가가 10개의 평가와 같은 영향을 가진다는 의미이다)

+ 뒤의 수식은 시간적 감소를 의미하는 수식이다.

 

위의 수식들은 2010년의 수식들이다. (이미 대체된 오래된 개념일 있다.)

 

본 포스팅은 Minnesota대학교의 Intro to Recommender Systems코세라 강좌를 정리한 내용입니다.

https://www.coursera.org/learn/recommender-systems-introduction?specialization=recommender-systems

728x90
반응형