(這個系列實在拖得太久,今天是最後一篇。)
舉例來說,如果隻有2個人投票,"威爾遜區間"的下限值會将贊成票的比例大幅拉低。這樣做固然保證了排名的可信性,但也帶來了另一個問題:排行榜前列總是那些票數最多的項目,新項目或者冷門的項目,很難有出頭機會,排名可能會長期靠後。

這裡就有一個問題:熱門電影與冷門電影的平均得分,是否真的可比?舉例來說,一部好萊塢大片有10000個觀衆投票,一部小成本的文藝片隻有100個觀衆投票。這兩者的投票結果,怎麼比較?如果使用"威爾遜區間",後者的得分将被大幅拉低,這樣處理是否公平,能不能反映它們真正的品質?
一個合理的思路是,如果要比較兩部電影的好壞,至少應該請同樣多的觀衆觀看和評分。既然文藝片的觀衆人數偏少,那麼應該設法為它增加一些觀衆。
- wr, 權重得分(weighted rating)。 - r,該電影的使用者投票的平均得分(rating)。 - v,該電影的投票人數(votes)。 - m,排名前250名的電影的最低投票數(現在為3000)。 - c, 所有電影的平均得分(現在為6.9)。![]()
基于使用者投票的排名算法(六):貝葉斯平均
仔細研究這個公式,你會發現,imdb為每部電影增加了3000張選票,并且這些選票的評分都為6.9。這樣做的原因是,假設所有電影都至少有3000張選票,那麼就都具備了進入前250名的評選條件;然後假設這3000張選票的評分是所有電影的平均得分(即假設這部電影具有平均水準);最後,用現有的觀衆投票進行修正,長期來看,v/(v+m)這部分的權重将越來越大,得分将慢慢接近真實情況。
這樣做拉近了不同電影之間投票人數的差異,使得投票人數較少的電影也有可能排名前列。
把這個公式寫成更一般的形式:
- c,投票人數擴充的規模,是一個自行設定的常數,與整個網站的總體使用者人數有關,可以等于每個項目的平均投票數。 - n,該項目的現有投票人數。 - x,該項目的每張選票的值。 - m,總體平均分,即整個網站所有選票的算術平均值。![]()
基于使用者投票的排名算法(六):貝葉斯平均
在這個公式中,m(總體平均分)是"先驗機率",每一次新的投票都是一個調整因子,使總體平均分不斷向該項目的真實投票結果靠近。投票人數越多,該項目的"貝葉斯平均"就越接近算術平均,對排名的影響就越小。
是以,這種方法可以給一些投票人數較少的項目,以相對公平的排名。
=================================================
"貝葉斯平均"也有缺點,主要問題是它假設使用者的投票是正态分布。比如,電影a有10個觀衆評分,5個為五星,5個為一星;電影b也有10個觀衆評分,都給了三星。這兩部電影的平均得分(無論是算術平均,還是貝葉斯平均)都是三星,但是電影a可能比電影b更值得看。
(完)