1

我正在建立一个新闻网站,用户可以在其中投票赞成或反对文章。这些文章链接到不同的实体:人、地点、公司……这些实体有一个全局分数和一个每个用户的分数。

因此,当用户在文章中投赞成票/反对票时,链接实体的全局分数和每个用户的分数会发生变化。

例如:有一篇文章提到了谷歌和微软。用户 A 喜欢这篇文章并投票。Google 和 Microsoft 实体的全球和用户 A 分数增加。

我希望用户 A 对他的个人分数的影响更大,而对全局分数的影响更小。

此外,实体必须从某个分数开始,以便第一个站点用户不能将其降低太多。

我正在考虑从 0 到 1 对实体进行排名。投票是二进制的:like(1),not like(0)。

我正在查看这篇博文中提到的贝叶斯平均方法,其中 C=0.7 和不同的 m 值(我使用 am 作为个人分数,另一个用于一般分数)。我进行的测试显示个人和全球分数之间几乎没有差异。似乎我找不到正确的值。

编辑:

这是我用来计算贝叶斯的代码(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
4

1 回答 1

2

当我想做这样的事情时,我现在只是去Evan Miller 的主页。您可能需要以下三种技术中的一种(或多种):

于 2012-11-08T01:24:32.740 回答