IMDB.COM排名算法(贝叶斯公式)和Reddit评论排行算法
博客遷移:時空螞蟻http://cui.zhbor.com/
因為最近做萬維品牌口碑的項目,需要對口碑進行一個對比,現(xiàn)在庫中也有一部分的數(shù)據(jù)了,有很多的品牌評分居然是一樣的,這是庫中的真實的數(shù)據(jù),如果我簡單的按平均分進行評比,也行不太公平,因為有很多評論人數(shù)很多,但有的很少。
所以我就研究了一些算法。
剛開始引用了IMDB.COM排名算法,他主要是對top250進行排名,對評分的人數(shù)有一定的限制,而我們品牌庫中總不能不讓相應(yīng)的品牌露出。所以針對品牌庫中排行使用貝葉斯公式的算法是不合適的,沒有意義,因為他針對的是超過某些評論后的數(shù)據(jù)的排行,對于那些評論數(shù)沒有超過最低的有效評分人數(shù)時是沒有露出機會的,貝葉斯還有一個缺點:主要問題是它假設(shè)用戶的投票是正態(tài)分布。比如,電影A有 10 個觀眾評分,5個為五星,5個為一星;電影B也有 10 個觀眾評分,都給了三星。這兩部電影的平均得分(無論是算術(shù)平均,還是貝葉斯平均)都是三星,但是電影A可能比電影B更值得看。?
這里跟大家分享一下IMDB.COM排名算法公式:
WR = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
具體意思:
R = ?單部電影的平均得分
v = 單部電影的有效評分人數(shù)(for this top 250, only votes from regular voters are considered.)防止粉絲拉票
m = ?入選top250榜單所需最低的有效評分人數(shù)
C = 所有影片的平均分
-------------------------------
IMDB.COM排名算法不可用,于是我轉(zhuǎn)戰(zhàn)reddit評論排名算法:他這里設(shè)計到一個威爾遜置信區(qū)間,可以根據(jù)置信區(qū)間的寬窄計算出更加人性化的排行榜。具體計算方法是:
我自己感覺有些復(fù)雜,用PHP寫出來如下:
1 function willson($ups=10, $downs=1){ 2 $n = $ups + $downs; //評論總數(shù) 3 if($n==0) return 0; 4 $z = 1.0; 5 $phat = (float)$ups/$n; 6 return ($phat+$z*$z/(2*$n)-$z*sqrt(($phat*(1-$phat)+$z*$z/(4*$n))/$n))/(1+$z*$z/$n); 7 }其中:
$ups 好評數(shù)
$downs 差評數(shù)?
$z?表示對應(yīng)某個置信水平的z統(tǒng)計量,這是一個常數(shù),可以通過查表得到。一般情況下,在 95% 的置信水平下,z統(tǒng)計量的值為1.96
用這個公式也會有問題,因為品牌評分是按照五個等級評分,而這個公式只有好壞評分,所以我利用置信區(qū)間的不同來進行等級排名。最后的結(jié)果是非常滿意,排名很人性化,能達到自己想要的效果。如果自己用平均值計算排名自己感覺都有點不好意思了。
?
?
參考:http://www.biaodianfu.com/imdb-rank.html
參考:http://www.biaodianfu.com/reddit-comment-sorting-algorithms.html
轉(zhuǎn)載于:https://www.cnblogs.com/hongbo819/p/3956824.html
總結(jié)
以上是生活随笔為你收集整理的IMDB.COM排名算法(贝叶斯公式)和Reddit评论排行算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优秀课程案例:使用Scratch制作飞机
- 下一篇: Taylor Swift为何听不到搜不到