2012-11-08 83 views
1

我正在構建一個新聞網站,用戶可以在其中投票上傳或下載文章。文章鏈接到不同的實體:人物,地點,公司,......實體具有全球分數和每個用戶的分數。新聞網站排名

因此,當用戶在文章中投票上下時,鏈接實體的總體分數和每位用戶分數會發生變化。

例如:有一篇文章提到谷歌和微軟。用戶A喜歡文章並投票。谷歌和微軟實體的全球和用戶A分數增加。

我希望用戶A對他的個人成績有更大的影響,並且對全球得分的影響更小。

此外,實體將不得不從一些分數開始,以便第一個站點用戶不能減少太多。

我正在考慮從0到1對實體進行排名。投票是二進制:like(1),not like(0)。

我正在查看this blog post中提到的的方法,C = 0.7,m值不同(我使用m表示個人分數,另一個表示總體分數)。我跑的測試顯示個人和全球分數幾乎沒有區別。看來我找不到合適的價值。

編輯:

這是我使用來計算貝葉斯代碼(蟒蛇)。有了這個公式,結果會更好:

def bayesian_average(votes, C=100, m=0.7): #C higher for global 
    #votes = [1,0,1,0,0,1,1,1] 
    avg_votes = C 
    avg_rating = m 
    ent_votes = len(votes) #entity votes 
    ent_rating = sum(votes)/float(ent_votes) 
    ba = ((avg_votes * avg_rating) + (ent_votes * ent_rating))/(avg_votes + ent_votes) 
    return ba 
+1

你能告訴到目前爲止,你做了什麼?你的代碼可以讓我們確定你是否犯了一個明顯的錯誤。我想知道你是否已經用0.7作爲僞樣本大小而不是平均值的目標(貝葉斯平均的先驗均值) –

回答