我正在建立一个新闻网站,在其中用户可以投票赞成或反对文章。文章链接到不同的实体:个人、地点、公司……这些实体具有全局分数和每个用户的分数。
因此,当用户在文章中投票赞成/反对时,链接实体的全局分数和每个用户的分数都会发生变化。
例如:有一篇文章提到了谷歌和微软。用户A喜欢这篇文章,并投票支持。谷歌和微软实体的全球和用户A得分增加。
我希望用户A对他的个人分数有更多的影响,对全局分数的影响较小。
此外,实体必须从一些分数开始,以便第一个站点用户不能减少太多分数。
我正在考虑从0到1对一个实体进行排名。投票是二元的: like(1),而不是like(0)。
我正在用C=0.7查看this blog post中提到的Bayesian average方法,并使用不同的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发布于 2012-11-08 09:24:33
现在,当我想要做这样的事情时,我只需转到Evan Miller's home page。您可能需要以下三种技术中的一种(或多种):
https://stackoverflow.com/questions/13280976
复制相似问题