基於使用者投票的排名演算法 二 Reddit

2023-01-21 17:39:02 字數 1688 閱讀 1409

基於使用者投票的排名演算法(二):reddit

作者: 阮一峰原文發表日期: 2023年3月 7日

上一次,我介紹了hacker news的排名演算法。它的特點是使用者只能投贊成票,但是很多**還允許使用者投反對票。就是說,除了好評以外,你還可以給某篇文章差評。

reddit是美國最大的網上社群,它的每個帖子前面都有向上和向下的箭頭,分別表示"贊成"和"反對"。使用者點選進行投票,reddit根據投票結果,計算出最新的"熱點文章排行榜"。

怎樣才能將贊成票和反對票結合起來,計算出一段時間內最受歡迎的文章呢?如果文章a有100張贊成票、5張反對票,文章b有1000張贊成票、950張反對票,誰應該排在前面呢?

reddit的程式是開源的,使用python語言編寫。排名演算法的**大致如下:

這段**考慮了這樣幾個因素:

(1)帖子的新舊程度t

t = 發貼時間 - 2023年12月8日7:46:43

t的單位為秒,用unix時間戳計算。不難看出,一旦帖子發表,t就是固定值,不會隨時間改變,而且帖子越新,t值越大。至於2023年12月8日,應該是reddit成立的時間。

(2)贊成票與反對票的差x

x = 贊成票 - 反對票

(3)投票方向y

y是乙個符號變數,表示對文章的總體看法。如果贊成票居多,y就是+1;如果反對票居多,y就是-1;如果贊成票和反對票相等,y就是0。

(4)帖子的受肯定(否定)的程度z

z表示贊成票與反對票之間差額的絕對值。如果對某個帖子的評價,越是一邊倒,z就越大。如果贊成票等於反對票,z就等於1。

結合以上幾個變數,reddit的最終得分計算公式如下:

這個公式可以分成兩個部分來討論:

(一)這個部分表示,贊成票與反對票的差額z越大,得分越高。

需要注意的是,這裡用的是以10為底的對數,意味著z=10可以得到1分,z=100可以得到2分。也就是說,前10個投票人與後90個投票人(乃至再後面900個投票人)的權重是一樣的,即如果乙個帖子特別受到歡迎,那麼越到後面投贊成票,對得分越不會產生影響。

當贊成票等於反對票,z=1,因此這個部分等於0,也就是不產生得分。

(二)這個部分表示,t越大,得分越高,即新帖子的得分會高於老帖子。它起到自動將老帖子的排名往下拉的作用。

分母的45000秒,等於12.5個小時,也就是說,後一天的帖子會比前一天的帖子多得2分。結合前一部分,可以得到結論,如果前一天的帖子在第二天還想保持原先的排名,在這一天裡面,它的z值必須增加100倍(淨贊成票增加100倍)。

y的作用是產生加分或減分。當贊成票超過反對票時,這一部分為正,起到加分作用;當贊成票少於反對票時,這一部分為負,起到減分作用;當兩者相等,這一部分為0。這就保證了得到大量淨贊成票的文章,會排在前列;贊成票與反對票接近或相等的文章,會排在後面;得到淨反對票的文章,會排在最後(因為得分是負值)。

(三)這種演算法的乙個問題是,對於那些有爭議的文章(贊成票和反對票非常接近),它們不可能排到前列。假定同一時間有兩個帖子發表,文章a有1張贊成票(發帖人投的)、0張反對票,文章b有1000張贊成票、1000張反對票,那麼a的排名會高於b,這顯然不合理。

結論就是,reddit的排名,基本上由發帖時間決定,超級受歡迎的文章會排在最前面,一般性受歡迎的文章、有爭議的文章都不會很靠前。這決定了reddit是乙個符合大眾口味的社群,不是乙個很激進、可以展示少數派想法的地方。

[參考資料]

* how reddit ranking algorithms work(完)

基於圖形計算器的演算法實現與演算法初步教學

作者 楊一奮 數學教學通訊 初等教育 2014年第12期 摘 要 作為一種實現演算法的有力工具,圖形計算器不但可以將演算法化的思路落到實處,更可以在視覺化的基礎上提供分析演算法的通道.文章從例項出發,詳解了演算法實現和演算法分析的具體操作,並提出基於圖形計算器的手持特點,可以使 演算法 成為學生主動...

基於模擬退火演算法的PID引數優化

pid 控制結構簡單,可靠性強,容易實現,對模型誤差具有魯棒性以及可靠性高等優點,是現代工業中最常用的控制方法,被廣泛用於冶金 化工 電力 輕工和機械等工業過程控制中 1 pid 的控制效果與其引數比例 積分和微分有著直接關係,因此如何進行pid 控制引數優化,從而獲得最優引數,是大家關注的乙個重要...

基於使用者需求的資訊諮詢服務模式

提要 本文明確了資訊服務與資訊諮詢服務的關係,以圖書館資訊諮詢服務現狀和讀者需求調查為基礎,以使用者的實際需求現狀為前提,對qq資訊諮詢服務的功能及主要服務模式進行系統分析與論證,並對圖書館提出發展性建議。關鍵詞 資訊需求 資訊諮詢 資訊服務 本文系河北省社會科學發展研究課題 現代新型農民資訊素質培...