我正在建立一个新闻网站,用户可以在该网站上下投票。这些文章链接到不同的实体:人,地点,公司......实体具有全局分数和每个用户分数。
因此,当用户在文章中向上/向下投票时,链接的实体全局得分和每个用户得分会发生变化。
例如:有一篇文章提及谷歌和微软。用户A喜欢这篇文章并投票。谷歌和微软实体的全球和用户A分数增加。
我希望用户A对他的个人得分影响更大,对全球得分影响更小。
此外,实体必须从一些分数开始,以便第一个网站用户不能减少太多分数。
我正在考虑将实体从0到1排序。投票是二元的:像(1),而不是像(0)。
我正在查看Bayesian average中提到的this blog post方法,其中C = 0.7并且m的值不同(我使用m代表个人分数,另一个代表一般分数)。我跑的测试显示个人和全球得分几乎没有差异。好像我找不到合适的价值观。
编辑:
这是我用来计算贝叶斯的代码(python)。使用这个公式,结果更好:
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