我正在構建一個新聞網站,用戶可以在其中投票上傳或下載文章。文章鏈接到不同的實體:人物,地點,公司,......實體具有全球分數和每個用戶的分數。新聞網站排名
因此,當用戶在文章中投票上下時,鏈接實體的總體分數和每位用戶分數會發生變化。
例如:有一篇文章提到谷歌和微軟。用戶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
你能告訴到目前爲止,你做了什麼?你的代碼可以讓我們確定你是否犯了一個明顯的錯誤。我想知道你是否已經用0.7作爲僞樣本大小而不是平均值的目標(貝葉斯平均的先驗均值) –