從豆瓣電影評分算法說起

在PingWest看到一篇《豆瓣電影打分規則竟如此簡單粗暴…》,作者寫這篇文章是因為豆瓣創始人阿北最近寫了一篇博文《豆瓣電影評分八問》,阿北博文是為了回應一些外界對豆瓣電影評分的質疑,然后作者看到這篇博文后,覺得豆瓣電影的評分算法有點low,就寫了這樣一篇吐槽文章。

那么這個很low的算法究竟是什么樣子的呢?此處引用阿北原文。

豆瓣的注冊用戶看完一部電影,心情好的話會來打個一到五星的分(有時候心情不好也會來)。比方說一部電影有42萬用戶打分。我們的程序把這42萬個一到五星換算成零到十分,加起來除以42萬,就得到了豆瓣評分。這個評分會自動出現在豆瓣各處,中間沒有審核,平時也沒有編輯盯著看。每過若干分鐘,程序會自動重跑一遍,把最新打分的人的意見包括進來。

簡單說就是計算每部電影評論的算數平均值,并按此值來排名。

對這個算法持懷疑態度,因為如果按照這個算法的話,假設一部小眾文藝片有10個用戶給了全五星,和一部經典老片比如《十二怒漢》相比,小眾文藝片排名比《十二怒漢》還要高,不過這在豆瓣電影TOP250里面不太可能。阿北可能只是為了文章寫作方便或是保密起見,把算法故意說簡單了,因為假如豆瓣公布了詳細的算法,那電影發行方的水軍們十分有可能針對這個算法制定出有效的刷分策略的。可憐小編還真信了。

下面是阿北當年在知乎上的回答

順著PingWest這篇文章給的鏈接,我又去阮一峰博客看了他在2012年寫的《基于用戶投票的排名算法》系列文章,以及這些文章里的參考文章,發現排名算法很好玩很有趣,非常有收獲,推薦閱讀。

看完這些文章,我就想知道知乎的評論排名算法是怎么樣的,于是去知乎找到他們產品經理@黃濤的回答,知乎在2014年底更新的算法使用的正是Reddit在2009年引入的評論排名算法,也就是阮一峰老師在系列文章第5篇中介紹的「威爾遜區間」算法。在用這個算法之前,知乎用的是直接利用好評減去差評的結果來給評論排序,這種算法的缺點我就不介紹了,可以查看參考資料[1]。

「威爾遜區間」算法的數學基礎是數學家Edwin B. Wilson在1927年提出的威爾遜區間修正公式,后來芝加哥工程師Evan Miller在2009年寫了一篇博客,認為該修正公式可以用來做排名。

這個算法的核心思想是這樣的:

  1. 計算每個評論的好評率
  1. 計算每個好評率的置信區間(以 95% 的概率)。
  2. 根據置信區間的下限值,進行排名。這個值越大,排名就越高。

所謂「置信區間」就是說在某個概率下(通常是95%),好評率p會落在的那個區間。比如,某個產品的好評率是 80%,但是這個值不一定可信。根據統計學,我們只能說,有 95% 的把握可以斷定,好評率在 75% 到 85% 之間,即置信區間是[75%, 85%]。

置信區間的實質,就是進行可信度的修正,彌補樣本量過小的影響。如果樣本多,就說明比較可信,不需要很大的修正,所以置信區間會比較窄,下限值會比較大;如果樣本少,就說明不一定可信,必須進行較大的修正,所以置信區間會比較寬,下限值會比較小。

因為常見的置信區間計算公式「正態區間」不能很好的照顧小樣本數量的準確性,而威爾遜提出的修正公式能很好地修正小樣本數量的準確性問題,所以大家采用「威爾遜區間」算法較多,像Reddit、Yelp、Digg,還有知乎。

不過這種算法也有缺點,缺點就是對于那些得票少的新評論很難獲得出頭之日,因為得票少,置信區間就會寬,排名位置就會低,得到的關注也就會更少。

前面阿北的回答里面提到了IMDB,IMDB是亞馬遜旗下的一個類似豆瓣的電影排名網站,他們在處理TOP250電影排名問題時采用了「貝葉斯平均」算法來解決,這個算法的核心思想是既然新興產品的評分數量很少,那我就為你人工補償一定的投票。關于這種算法在阮一峰老師系列文章第6篇中有介紹。

更多參考資料:

  1. How Not To Sort By Average Rating
  2. How Reddit ranking algorithms work
  3. 基于用戶評價的評分模型
  4. 基于用戶投票的打分算法
  5. Reddit評論排名算法
  6. Reddit的排名算法
  7. 數學之美:IMDB.COM排名算法
  8. Hacker News的熱門排名算法
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容

  • 最近開始在簡書上混,今日在首頁上不經意間看到一篇《從豆瓣電影評分算法說起》,感覺有點眼熟,就點了進去。 其實阿北的...
    數據蟲巢閱讀 33,326評論 6 172
  • 一、<Delicious> 算法:按照單位時間內用戶的投票數進行排名。得票最多的項目,自然就排在第一位。 eg:"...
    Rainysong閱讀 2,723評論 0 1
  • 本文為學習阮一峰《基于用戶投票的排名算法》的學習筆記。 一、Hacker News(只有贊成票) ① P 表示帖子...
    偽開發閱讀 3,105評論 1 5
  • 這篇已經授權人人都是產品經理微信號+網站轉載了~轉載日期是2017-02-10 知乎:一個真實的網絡問答社區,幫助...
    Li_fuxu閱讀 5,721評論 4 37
  • 這是一個單位的一間辦公室里的一個鏡頭。 工作環境不錯,干凈寬敞明亮,有空調。 有自動飲水機,還有燒水的電熱水壺,袋...
    b79f5fb78fda閱讀 957評論 3 3