计数字段的反向,指数间隔表示?

时间:2014-02-16 14:11:25

标签: php math exponential inverse

var minCount = 10; // Used as 0, anything below 10 uses will be ignored

User hasMany Attributes

Attribute (id, value, count, worth)
// Count - number of users who associate with this attribute
// Worth - float 0.1 (or a better non-zero number?) to 1

计数为minCount的属性值为1。 具有最高计数的属性具有最低可能值。 较少使用的属性值得更多 - 更低的数量 - >更高的价值。

价值的差异应该是指数级的:

  • 常用属性(高计数) - 值之间的差距较小
  • 罕见的属性(低计数) - 值之间的差距较大

我现在将使用php,但psuedo代码同样可以接受 - 我宁愿只是理解如何去做。

1 个答案:

答案 0 :(得分:1)

那么问题是什么?

使用以下简单公式:

currentWorth = exp(minCount / currentCount - 1)

其中: exp - e的指数; currentCount - 当前属性的计数; minCount - 最少属性的计数。

简要说明:

首先考虑没有指数应用的公式:

currentWorth = minCount / currentCount

对于具有最小计数的属性(currentCount = minCount):

currentWorth = minCount / minCount = 1

对于具有任何其他计数的属性(显然大于minCount):

(currentWorth = minCount / currentCount) < 1

现在让我们应用指数法:

currentWorth = exp(minCount / currentCount - 1)

对于具有最小计数的属性(currentCount = minCount):

currentWorth = exp(minCount / minCount - 1) = exp(1 - 1) = exp(0) = 1

对于具有任何其他计数的属性(currentCount&gt; minCount):

currentWorth = exp(minCount / currentCount - 1)

假设:

t = 1 - minCount / currentCount > 0

我们将:

(currentWorth = exp(-t) = 1 / exp(t)) < 1