[개발일지] 230607 Ranking Algorithm(순위 알고리즘)

실시간 급상승 검색어 기능을 위한 Ranking Algorithm에 대한 조사

 

우선 공개된 Ranking Algorithm을 살펴보면 게시글의 추천수를 기반으로 인기 게시글을 선별해 사용자에게 추천해 주는 알고리즘, 추천/비추천을 이용해 순위를 매기는 알고리즘, 평점을 기반으로 하는 순위 알고리즘 등등 여러 알고리즘이 존재한다.

 


Hacker News Ranking Algorithm

Hacker News에서 사용하는 ranking algorithm은 생각보다 간단하다.

 

 

p = 게시글에 대한 추천 수 (-1을 한 이유는 글 작성자의 추천도를 고려한 것)
t = 글을 게시한 시간과 현재 시간 사이의 시간(시간 단위). 예를 들어, 2시간 전에 게시된 글은 t = 2
G = 중력계수 (news.arc에서는 기본값으로 1.8을 사용한다.)

 

Hacker News의 랭킹 알고리즘은 단순히 단시간에 더 많이 추천을 받을 수록 높은 점수를 받아 순위가 높아진다. 시간이 지날수록 순위는 내려간다. 

중력계수의 값을 조정해서 시간이 지날수록 점수를 빠르게 감소할지 느리게 감소할지 정할 수 있다. 각 애플리케이션의 상황에 맞게 정하면 된다.

 

Reddit Ranking Algorithm

Reddit의 랭킹 알고리즘은 Hacker News에 비해 조금 더 복잡하다.

 

sign(x=(추천수 - 비추천수)) → x가 0보다 크면 1, 0보다 작으면 -1, 그 외(같으면) 0

 

log함수에 절댓값 추천수 - 비추천수를 하는 이유는 reddit에서 상위에 노출되는 글은 비논쟁적인 글을 노출되도록 하기 위함이라고 한다. -> 추천수가 높으면서 비추천수가 낮은 글이 상위에 있도록

 

 

log 함수 그래프

 

log함수를 적용한 이유 -> 이미 인기가 높은 글에 대해서는 추천수가 더 높아져도 점수를 크게 반영하지 않게 하기 위함이다.

 

Reddit Ranking Algorithm은 Hacker News Ranking Algorithm와 다르게 최근 글일수록 더 높은 점수를 갖게 했다. (Haker News Ranking Algorithm은 글의 포스팅시간이 오래될수록 점수가 낮아진다.)

 

seconds: 글 업로드 시간 - reddit의 첫 오픈 일자

1134028003은 고정값으로 reddit의 오픈 시간을 unix timestamp 형식으로 나타낸것으로 변환을 해보면 (2005, 8, 12 07:46 (UTC))

 

분모의 45000(초)은 12시간 30분과 같다. 즉, 오픈 일자로부터 12시간 30분이 지날 때마다 1점이 추가된다.

 

Highly Rated

이번엔 steam의 평점(리뷰) 기반 추천 알고리즘이다.

 

 

해당 알고리즘은 리뷰수에 따라 점수를 보정한다. 이게 무슨말이냐면 리뷰수(TotalReviews)가 많아지면 긍정적으로 평가한 리뷰를 그대로 점수에 반영한다. 그 이유는 전체 리뷰수가 많아지면 *2^-ln(TotalReviews + 1)이 부분에서 -log 함수에 의해 전체 값이 0에 가까워지기 때문에 앞에서 계산하는 값이 그대로 반영이 된다. 

 

 

 

 

내일은 이러한 알고리즘을 이용해 실시간 검색어 기능 구현 알고리즘에 어떻게 활용할 수 있을지 고민해봐야 겠다.

 

References

https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d

 

How Hacker News ranking algorithm works

In this post I’ll try to explain how the Hacker News ranking algorithm works and how you can reuse it in your own applications. It’s a very…

medium.com

 

https://medium.com/jp-tech/how-are-popular-ranking-algorithms-such-as-reddit-and-hacker-news-working-724e639ed9f7

 

How are popular ranking algorithms such as Reddit and Hacker News working?

Have you ever wondered how people arrange posts on the homepage, the “hot” section of news sites such as Reddit, Hacker News…

medium.com

 

https://steamdb.info/blog/steamdb-rating/