2010-01-05 61 views
4

我怎么能从系统中用户的业力计算业力的标准化值(0到1之间的值)?计算规范化的业力

标准化值应该反映用户相对于所有其他用户的业障值。

我想我可能必须包括所有业力的平均值和标准偏差,但我似乎无法提出正确的公式。

任何帮助?

+1

我想你可能想对这个业力设定一个“时间”限制。这样,最近的人得到业力,但2年前的人不会算。 这样一来,新人不仅渗透到底层。 – Daniel 2010-01-05 06:36:47

回答

8
min_karma = min(karmas) 
max_karma = max(karmas) 
normalized = (karma - min_karma)/(max_karma - min_karma) 

这具有这样的特性,即用户(一个或多个)与因缘= min_karma得到的0的归一化业力,以及与用户的业力= max_karma得到1.另一些之间线性分布英寸你将不得不分开处理所有用户具有相同业力的特殊情况。

如果你愿意,你可以使用对数函数的非线性分布:

normalized = (log(karma) - log(min_karma))/(log(max_karma) - log(min_karma)) 

正是在这种情况下的业力不能低于1重要的,因为这可能影响结果。

+0

我不确定这是否要走。考虑一个情况,100个用户的业力分布在10左右,而只有1个用户的业绩高达100。我认为规范化的价值考虑到只有1个用户具有高业力的事实,因此给用户例如15个业力比线性优势更好。那有意义吗? – EdanB 2010-01-05 06:31:28

+0

此外,没有最大业力,因为可以无限制地完成某些行为(例如为发布的评论获得较高的评分)增加了业力 – EdanB 2010-01-05 06:35:12

+0

如果您想要非线性分布,您可以取得分数的对数。 – 2010-01-05 06:35:50