如何从系统中用户的业力计算出业力的归一化值(值在0到1之间)?
规格化值应该反映用户的业力相对于所有其他用户的值。
我想我可能不得不包括所有业力的平均和标准差,但我似乎想不出正确的公式。
有什么帮助吗?
发布于 2010-01-05 14:15:18
min_karma = min(karmas)
max_karma = max(karmas)
normalized = (karma - min_karma) / (max_karma - min_karma)这具有这样的属性: karma = min_karma的用户得到归一化的karma为0,karma = max_karma的用户得到1。其他用户在两者之间线性分布。你必须单独处理所有用户都有相同业力的特殊情况。
如果你想要一个非线性分布,你可以使用一个对数函数:
normalized = (log(karma) - log(min_karma)) / (log(max_karma) - log(min_karma))在这种情况下,重要的是业力永远不能低于1,因为这可能会扭曲结果。
发布于 2010-01-05 14:14:47
您可能希望计算每个用户所属的百分位数。在mysql中,您可以这样做:
http://forums.mysql.com/read.php?20,105223,105278#msg-105278
rank / total其中,排名是业力较低的用户数量。
https://stackoverflow.com/questions/2004472
复制相似问题