從豆瓣電影評(píng)分算法說(shuō)起

在PingWest看到一篇《豆瓣電影打分規(guī)則竟如此簡(jiǎn)單粗暴…》斟或,作者寫(xiě)這篇文章是因?yàn)槎拱陝?chuàng)始人阿北最近寫(xiě)了一篇博文《豆瓣電影評(píng)分八問(wèn)》集嵌,阿北博文是為了回應(yīng)一些外界對(duì)豆瓣電影評(píng)分的質(zhì)疑萝挤,然后作者看到這篇博文后根欧,覺(jué)得豆瓣電影的評(píng)分算法有點(diǎn)low,就寫(xiě)了這樣一篇吐槽文章凤粗。

那么這個(gè)很low的算法究竟是什么樣子的呢酥泛?此處引用阿北原文嫌拣。

豆瓣的注冊(cè)用戶看完一部電影,心情好的話會(huì)來(lái)打個(gè)一到五星的分(有時(shí)候心情不好也會(huì)來(lái))异逐。比方說(shuō)一部電影有42萬(wàn)用戶打分。我們的程序把這42萬(wàn)個(gè)一到五星換算成零到十分灰瞻,加起來(lái)除以42萬(wàn)燥筷,就得到了豆瓣評(píng)分。這個(gè)評(píng)分會(huì)自動(dòng)出現(xiàn)在豆瓣各處院崇,中間沒(méi)有審核肆氓,平時(shí)也沒(méi)有編輯盯著看底瓣。每過(guò)若干分鐘谢揪,程序會(huì)自動(dòng)重跑一遍捐凭,把最新打分的人的意見(jiàn)包括進(jìn)來(lái)拨扶。

簡(jiǎn)單說(shuō)就是計(jì)算每部電影評(píng)論的算數(shù)平均值茁肠,并按此值來(lái)排名。

對(duì)這個(gè)算法持懷疑態(tài)度垦梆,因?yàn)槿绻凑者@個(gè)算法的話,假設(shè)一部小眾文藝片有10個(gè)用戶給了全五星托猩,和一部經(jīng)典老片比如《十二怒漢》相比,小眾文藝片排名比《十二怒漢》還要高京腥,不過(guò)這在豆瓣電影TOP250里面不太可能赦肃。阿北可能只是為了文章寫(xiě)作方便或是保密起見(jiàn)公浪,把算法故意說(shuō)簡(jiǎn)單了,因?yàn)榧偃缍拱旯剂嗽敿?xì)的算法欠气,那電影發(fā)行方的水軍們十分有可能針對(duì)這個(gè)算法制定出有效的刷分策略的』瘟眨可憐小編還真信了。

下面是阿北當(dāng)年在知乎上的回答卫旱。

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

看完這些文章冯遂,我就想知道知乎的評(píng)論排名算法是怎么樣的谒获,于是去知乎找到他們產(chǎn)品經(jīng)理@黃濤的回答蛤肌,知乎在2014年底更新的算法使用的正是Reddit在2009年引入的評(píng)論排名算法批狱,也就是阮一峰老師在系列文章第5篇中介紹的「威爾遜區(qū)間」算法裸准。在用這個(gè)算法之前赔硫,知乎用的是直接利用好評(píng)減去差評(píng)的結(jié)果來(lái)給評(píng)論排序,這種算法的缺點(diǎn)我就不介紹了爪膊,可以查看參考資料[1]权悟。

「威爾遜區(qū)間」算法的數(shù)學(xué)基礎(chǔ)是數(shù)學(xué)家Edwin B. Wilson在1927年提出的威爾遜區(qū)間修正公式惊完,后來(lái)芝加哥工程師Evan Miller在2009年寫(xiě)了一篇博客,認(rèn)為該修正公式可以用來(lái)做排名小槐。

這個(gè)算法的核心思想是這樣的:

  1. 計(jì)算每個(gè)評(píng)論的好評(píng)率
  1. 計(jì)算每個(gè)好評(píng)率的置信區(qū)間(以 95% 的概率)荷辕。
  2. 根據(jù)置信區(qū)間的下限值凿跳,進(jìn)行排名疮方。這個(gè)值越大控嗜,排名就越高骡显。

所謂「置信區(qū)間」就是說(shuō)在某個(gè)概率下(通常是95%),好評(píng)率p會(huì)落在的那個(gè)區(qū)間惫谤。比如,某個(gè)產(chǎn)品的好評(píng)率是 80%溜歪,但是這個(gè)值不一定可信。根據(jù)統(tǒng)計(jì)學(xué)蝴猪,我們只能說(shuō)调衰,有 95% 的把握可以斷定膊爪,好評(píng)率在 75% 到 85% 之間,即置信區(qū)間是[75%米酬, 85%]。

置信區(qū)間的實(shí)質(zhì)赃额,就是進(jìn)行可信度的修正,彌補(bǔ)樣本量過(guò)小的影響爬早。如果樣本多,就說(shuō)明比較可信筛严,不需要很大的修正,所以置信區(qū)間會(huì)比較窄饶米,下限值會(huì)比較大;如果樣本少檬输,就說(shuō)明不一定可信,必須進(jìn)行較大的修正丧慈,所以置信區(qū)間會(huì)比較寬,下限值會(huì)比較小逃默。

因?yàn)槌R?jiàn)的置信區(qū)間計(jì)算公式「正態(tài)區(qū)間」不能很好的照顧小樣本數(shù)量的準(zhǔn)確性,而威爾遜提出的修正公式能很好地修正小樣本數(shù)量的準(zhǔn)確性問(wèn)題完域,所以大家采用「威爾遜區(qū)間」算法較多,像Reddit吟税、Yelp、Digg肠仪,還有知乎。

不過(guò)這種算法也有缺點(diǎn)藤韵,缺點(diǎn)就是對(duì)于那些得票少的新評(píng)論很難獲得出頭之日,因?yàn)榈闷鄙伲眯艆^(qū)間就會(huì)寬镐依,排名位置就會(huì)低,得到的關(guān)注也就會(huì)更少槐壳。

前面阿北的回答里面提到了IMDB,IMDB是亞馬遜旗下的一個(gè)類似豆瓣的電影排名網(wǎng)站务唐,他們?cè)谔幚鞹OP250電影排名問(wèn)題時(shí)采用了「貝葉斯平均」算法來(lái)解決,這個(gè)算法的核心思想是既然新興產(chǎn)品的評(píng)分?jǐn)?shù)量很少枫笛,那我就為你人工補(bǔ)償一定的投票。關(guān)于這種算法在阮一峰老師系列文章第6篇中有介紹刑巧。

更多參考資料:

  1. How Not To Sort By Average Rating
  2. How Reddit ranking algorithms work
  3. 基于用戶評(píng)價(jià)的評(píng)分模型
  4. 基于用戶投票的打分算法
  5. Reddit評(píng)論排名算法
  6. Reddit的排名算法
  7. 數(shù)學(xué)之美:IMDB.COM排名算法
  8. Hacker News的熱門(mén)排名算法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末无畔,一起剝皮案震驚了整個(gè)濱河市啊楚,隨后出現(xiàn)的幾起案子浑彰,更是在濱河造成了極大的恐慌,老刑警劉巖郭变,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诉濒,居然都是意外死亡拍嵌,警方通過(guò)查閱死者的電腦和手機(jī)循诉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)撇他,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茄猫,“玉大人困肩,你說(shuō)我怎么就攤上這事⌒炕” “怎么了勇劣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)幻捏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)篡九,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任榛臼,我火速辦了婚禮,結(jié)果婚禮上沛善,老公的妹妹穿的比我還像新娘。我一直安慰自己金刁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布胀葱。 她就那樣靜靜地躺著笙蒙,像睡著了一般抵屿。 火紅的嫁衣襯著肌膚如雪捅位。 梳的紋絲不亂的頭發(fā)上轧葛,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天艇搀,我揣著相機(jī)與錄音,去河邊找鬼焰雕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛矩屁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吝秕,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烁峭!你這毒婦竟也來(lái)了秕铛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤但两,失蹤者是張志新(化名)和其女友劉穎调煎,沒(méi)想到半個(gè)月后镜遣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體士袄,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年娄柳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赤拒。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挎挖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蕉朵,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布始衅,位于F島的核電站,受9級(jí)特大地震影響汛闸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诸老,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望别伏。 院中可真熱鬧,春花似錦畸肆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)大咱。三九已至恬涧,卻和暖如春碴巾,著一層夾襖步出監(jiān)牢的瞬間溯捆,已是汗流浹背厦瓢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煮仇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓浙垫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親夹姥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杉武,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 最近開(kāi)始在簡(jiǎn)書(shū)上混轻抱,今日在首頁(yè)上不經(jīng)意間看到一篇《從豆瓣電影評(píng)分算法說(shuō)起》,感覺(jué)有點(diǎn)眼熟圾亏,就點(diǎn)了進(jìn)去。 其實(shí)阿北的...
    數(shù)據(jù)蟲(chóng)巢閱讀 33,217評(píng)論 6 172
  • 一志鹃、<Delicious> 算法:按照單位時(shí)間內(nèi)用戶的投票數(shù)進(jìn)行排名。得票最多的項(xiàng)目曹铃,自然就排在第一位。 eg:"...
    Rainysong閱讀 2,663評(píng)論 0 1
  • 本文為學(xué)習(xí)阮一峰《基于用戶投票的排名算法》的學(xué)習(xí)筆記陕见。 一、Hacker News(只有贊成票) ① P 表示帖子...
    偽開(kāi)發(fā)閱讀 3,043評(píng)論 1 5
  • 這篇已經(jīng)授權(quán)人人都是產(chǎn)品經(jīng)理微信號(hào)+網(wǎng)站轉(zhuǎn)載了~轉(zhuǎn)載日期是2017-02-10 知乎:一個(gè)真實(shí)的網(wǎng)絡(luò)問(wèn)答社區(qū)忍坷,幫助...
    Li_fuxu閱讀 5,658評(píng)論 4 37
  • 這是一個(gè)單位的一間辦公室里的一個(gè)鏡頭熔脂。 工作環(huán)境不錯(cuò),干凈寬敞明亮霞揉,有空調(diào)。 有自動(dòng)飲水機(jī)晰骑,還有燒水的電熱水壺,袋...
    b79f5fb78fda閱讀 916評(píng)論 3 3