基于用户投票的排名算法(六):贝叶斯平均
日期:?2012年3月28日
(這個系列實在拖得太久,今天是最后一篇。)
上一篇介紹了"威爾遜區間",它解決了投票人數過少、導致結果不可信的問題。
舉例來說,如果只有2個人投票,"威爾遜區間"的下限值會將贊成票的比例大幅拉低。這樣做固然保證了排名的可信性,但也帶來了另一個問題:排行榜前列總是那些票數最多的項目,新項目或者冷門的項目,很難有出頭機會,排名可能會長期靠后。
以IMDB為例,它是世界最大的電影數據庫,觀眾可以對每部電影投票,最低為1分,最高為10分。
系統根據投票結果,計算出每部電影的平均得分。然后,再根據平均得分,排出最受歡迎的前250名的電影。
這里就有一個問題:熱門電影與冷門電影的平均得分,是否真的可比?舉例來說,一部好萊塢大片有10000個觀眾投票,一部小成本的文藝片只有100個觀眾投票。這兩者的投票結果,怎么比較?如果使用"威爾遜區間",后者的得分將被大幅拉低,這樣處理是否公平,能不能反映它們真正的質量?
一個合理的思路是,如果要比較兩部電影的好壞,至少應該請同樣多的觀眾觀看和評分。既然文藝片的觀眾人數偏少,那么應該設法為它增加一些觀眾。
在排名頁面的底部,IMDB給出了它的計算方法。
- 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,總體平均分,即整個網站所有選票的算術平均值。
這種算法被稱為"貝葉斯平均"(Bayesian average)。因為某種程度上,它借鑒了"貝葉斯推斷"(Bayesian inference)的思想:既然不知道投票結果,那就先估計一個值,然后不斷用新的信息修正,使得它越來越接近正確的值。
在這個公式中,m(總體平均分)是"先驗概率",每一次新的投票都是一個調整因子,使總體平均分不斷向該項目的真實投票結果靠近。投票人數越多,該項目的"貝葉斯平均"就越接近算術平均,對排名的影響就越小。
因此,這種方法可以給一些投票人數較少的項目,以相對公平的排名。
=================================================
"貝葉斯平均"也有缺點,主要問題是它假設用戶的投票是正態分布。比如,電影A有10個觀眾評分,5個為五星,5個為一星;電影B也有10個觀眾評分,都給了三星。這兩部電影的平均得分(無論是算術平均,還是貝葉斯平均)都是三星,但是電影A可能比電影B更值得看。
解決這個問題的思路是,假定每個用戶的投票都是獨立事件,每次投票只有n個選項可以選擇,那么這就服從"多項分布"(Multinomial distribution),就可以結合貝葉斯定理,估計該分布的期望值。由于這涉及復雜的統計學知識,這里就不深入了,感興趣的朋友可以繼續閱讀William Morgan的How to rank products based on user input。
(完)
文檔信息
- 版權聲明:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)
- 發表日期:?2012年3月28日
- 更多內容:?檔案???算法與數學
- 購買文集:?《如何變得有思想》
- 社交媒體:?twitter,?weibo
- Feed訂閱:?
相關文章
- 2015.09.01:?理解矩陣乘法 大多數人在高中,或者大學低年級,都上過一門課《線性代數》。這門課其實是教矩陣。
- 2015.07.27:?蒙特卡羅方法入門 本文通過五個例子,介紹蒙特卡羅方法(Monte Carlo Method)。
- 2015.06.10:?泊松分布和指數分布:10分鐘教程 大學時,我一直覺得統計學很難,還差點掛科。
- 2013.12.16:?樸素貝葉斯分類器的應用 生活中很多場合需要用到分類,比如新聞分類、病人分類等等。
留言(24條)
這個系列實在是太好了,看完覺得收獲很大!
2012年3月28日 21:15?|?∞?|?引用
這個系列不錯。reddit以前的和IMDB的以前看過,reddit現在的剛認識。看來還得好好搞下數理統計啊
2012年3月28日 21:47?|?∞?|?引用
這個系列時間差不多一個月吧,不錯,下學期的好好復習一下概率論咯。
2012年3月28日 22:42?|?∞?|?引用
博主太強了,膜拜一下
2012年3月29日 00:27?|?∞?|?引用
總算完了!
2012年3月30日 14:36?|?∞?|?引用
最近在用貝葉斯統計做垃圾廣告的過濾算法,多有互通之處。
感嘆一句貝葉斯的智慧和偉大啊。
2012年3月30日 15:28?|?∞?|?引用
老師~我上過您的課~~
來此膜拜下~
2012年3月30日 17:04?|?∞?|?引用
不錯,這排名還可以應用到其他方面,學習了!
2012年3月31日 08:28?|?∞?|?引用
可以收集起來出一本書了,謝謝你的文章!
2012年3月31日 18:04?|?∞?|?引用
挺好的! IMDB的方法若變換為WR=( v / (v+m)) (R-C) +C 也可能促進理解
2012年4月 1日 11:01?|?∞?|?引用
今天怎么上不去你的博客了?我翻墻上來了...被和諧了???
2012年4月 5日 11:57?|?∞?|?引用
佩服博主能高質量的完成這么有價值的文章
2012年4月 5日 14:29?|?∞?|?引用
正好自己的網站也要用到!!!
2012年4月 6日 23:49?|?∞?|?引用
Dell Zhang, Robert Mao, Haitao Li, and Joanne Mao. How to Count
Thumb-Ups and Thumb-Downs: User-Rating based Ranking of Items from an
Axiomatic Perspective. In Proceedings of the 3rd International
Conference on the Theory of Information Retrieval (ICTIR), Bertinoro,
Italy, Sep 2011.
http://goo.gl/b3QyX
http://goo.gl/2Ama4
2012年4月 8日 20:09?|?∞?|?引用
這個系列太棒了!感謝分享!
2012年4月28日 12:59?|?∞?|?引用
這樣補一些平均選票,有什么意義?不太懂
這樣小眾電影的分數會比初始評分更趨向于平均值,即高分變平庸,低分變中等。
求解
2012年5月18日 21:45?|?∞?|?引用
都看完了,收獲非常大,可悲,這些知識都還給學校了,當時要是能結合這些應用實例來學習多好
2012年7月25日 11:39?|?∞?|?引用
樓上人的回答讓我明白了學習其他語言的必要性
2013年12月21日 02:48?|?∞?|?引用
受益匪淺
2014年2月 8日 09:25?|?∞?|?引用
很好奇這些公式是如何被推導出來的?完全自己想象的么
2014年2月25日 17:45?|?∞?|?引用
我最近正好在弄網站的內容排名,能找到您的文章真的太棒了!非常感謝!
2014年4月28日 15:11?|?∞?|?引用
引用隨機導彈的發言:
這樣補一些平均選票,有什么意義?不太懂
這樣小眾電影的分數會比初始評分更趨向于平均值,即高分變平庸,低分變中等。
求解
個人覺得這3000張選票只是在排序的時候才會被用到,而不會影響原有的電影評分,只是影響排名而已。
2014年10月15日 17:11?|?∞?|?引用
受益匪淺
2015年2月 5日 17:24?|?∞?|?引用
感覺這個系列文章沒有講到權重排序的本質是什么..........
權重排序的本質我認為應該是:
各個參數對排序權重的影響,這些參數對于權重分數的影響比例,比如0.2a,0.8a或者a^1.2等等
2015年6月 6日 14:08?|?∞?|?引用
總結
以上是生活随笔為你收集整理的基于用户投票的排名算法(六):贝叶斯平均的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于用户投票的排名算法(五):威尔逊区间
- 下一篇: 图形算法 - 模糊函数比较,Blur F