[RecSys] 인기도 기반 추천

mincheol2·2022년 3월 8일
0

RecSys

목록 보기
3/23

이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.

개요

  • 인기도 기반 추천은 추천시스템의 가장 단순한 형태

  • 머신 러닝을 이용한 것이 아니라 말 그대로 가장 인기있는 아이템을 추천

  • 서비스 런칭 초반이라 데이터가 부족 하거나 추천 시스템 적용이 어려운 경우 활용됨

  • 인기도의 척도
    : 조회수, 평점, 리뷰 개수, 좋아요 / 싫어요

  • Score는 어떻게 만드나?

    • Most Popular : 조회수 多 -> 유저들은 다른 유저들도 많은 관심을 가지는 이슈를 보고 싶어함
    • Highly Rated : 평점이 높을수록 좋은 서비스를 기대

Most Popular

Most Popular 은 조회수나 좋아요가 가장 많은 것을 추천하는 것!

뉴스의 가장 중요한 속성은 신속성
-> 게시 시점 or 게시 후 지난 시간 이 중요 feature

좋아요가 있는 경우에는 초반에 받는 좋아요와 후반에 받는 좋아요의 중요도가 다르다.

Hacker News Formula

score=pageview1(age+2)gravityscore = {pageview -1 \over (age+2)^{gravity}}

시간이 지날 수록 age가 점점 증가하므로 score는 작아짐

이 때 gravity라는 상수를 사용하여 시간에 따라 score의 감속 속도를 줄인다. (지수함수를 사용하기 때문에 시간이 지남에 따라 score는 빠르게 감소)

Raddit Formula

score=log10(upsdowns)+sign(upsdowns)seconds45000score = log_{10}(ups - downs) + {sign(ups - downs)\centerdot seconds \over 45000}
  • 첫번째 Term : Popularity

    • 초반 vote에 영향을 받기위해 loglog 사용
  • 두번째 Term : 글이 포스팅된 절대시간(게시 시점)

    • 나중에 게시된 글일 수록 절대시간이 크기 떄문에 더 높은 score
  • 첫 vote에 가장 높은 가지치를 부여, loglog 의 영향으로 vote가 늘어날수록 score의 증가폭이 작아짐
    -> 오래된 글일 수록 상대적으로 아주 많은 vote가 있어야 높은 score를 가짐

Highly Rated

가장 높은 평점을 받은 컨텐츠나 음식점을 추천할 때 사용

신뢰할 수 있는 평점인지, 평점의 개수가 충분한지에 대한 이슈가 있다.
-> 평점의 개수가 중요한 feature

Steam Rating Formula

avg_rating=# of positive reviews# of reviewsavg\_rating = {\#\ of \ positive \ reviews \over \# \ of \ reviews}
score=avg_rating(ave_rating0.5)2log(# of reviews)score = avg\_rating - (ave\_rating - 0.5)\cdot2^{-log(\# \ of \ reviews)}

rating은 평균 값을 사용하되, 전체 review 개수에 따라 rating을 보정(두번째 term)
-> review가 아주 많을 수록 두번째 Term이 0에 수렴하기 때문에 score는 평균 rating 과 거의 유사해짐

이때 영화 평점은 0.5 대신 3.0 같은 1~5의 중앙값 or 모든 평점 데이터의 평균을 사용하기도 한다.

profile
옹오옹오오오옹ㅇㅇ

0개의 댓글