Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 计算归一化业力_Algorithm - Fatal编程技术网

Algorithm 计算归一化业力

Algorithm 计算归一化业力,algorithm,Algorithm,如何根据系统中用户的业力计算业力的标准化值(值介于0和1之间) 标准化值应反映用户相对于所有其他用户的业力值 我想我可能不得不以某种方式包括所有业力的平均值和标准差,但我似乎无法得出正确的公式 有什么帮助吗?您需要计算每个用户所属的百分比。在mysql中,您可以这样做: 其中rank是业力较低的用户数 min_karma = min(karmas) max_karma = max(karmas) normalized = (karma - min_karma) / (max_karma

如何根据系统中用户的业力计算业力的标准化值(值介于0和1之间)

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

我想我可能不得不以某种方式包括所有业力的平均值和标准差,但我似乎无法得出正确的公式


有什么帮助吗?

您需要计算每个用户所属的百分比。在mysql中,您可以这样做:

其中rank是业力较低的用户数

 min_karma = min(karmas)
 max_karma = max(karmas)
 normalized = (karma - min_karma) / (max_karma - min_karma)
这具有这样的属性:karma=min_karma的用户获得0的标准化karma,karma=max_karma的用户获得1。其他的则线性分布在两者之间。你必须单独处理所有用户都有相同业力的特殊情况

如果需要非线性分布,可以使用对数函数:

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

在这种情况下,业力永远不能低于1是很重要的,因为这可能会扭曲结果。

我不确定这是不是正确的方向。考虑这样一种情况:100个用户的低业力分布在10左右,只有1的用户有100的高业力。我希望规范化的值考虑到只有1个用户具有高业力这一事实,因此给予具有例如15个业力的用户比线性优势更好的优势。这有意义吗?此外,没有最大业力,因为某些可以不确定地完成的操作(例如为发布的评论获得高评分)会添加业力,如果您想要非线性分布,您可以取分数的对数。@EdanB:max_业力指的是当前的最大值,随着人们得到更多的业力,这些都会发生变化。我想你可能想对业力设定一个“时间”限制。这样一来,最近的人就有了业力,但两年前的人就不算了。这样一来,新人就不仅仅是永远处于底层。
 normalized = (log(karma) - log(min_karma)) / (log(max_karma) - log(min_karma))