【问题标题】:Function to dampen a value抑制值的函数
【发布时间】:2012-02-10 09:20:21
【问题描述】:

我有一个文档列表,每个文档都有一个搜索查询的相关性分数。我需要较旧的文档来降低其相关性分数,以尝试在排名过程中引入它们的日期。我已经尝试过使用诸如 1/(1+date_difference) 之类的函数,但是倒数函数对于最近的日期来说太具有区分性了。

我在想可能是一个具有范围 (0..1) 和域 (0..x) 的数学函数来放大他们的分数,其中 x 轴是文档的年龄。最好通过图片说明我对函数的进一步需求:

【问题讨论】:

  • 你能澄清一下你链接到的图片吗?你想让函数在一些x之后保持不变吗?

标签: function math date relevance


【解决方案1】:

衰减行为通常由指数函数很好地建模(自然界中的许多衰减过程也遵循它)。您将使用 2 个正参数 AB 并得到

y(x) = A exp(-B x)

因为你想要一个y-range [0,1] 集A=1。更大的B 衰减更慢。

【讨论】:

  • 谢谢。发现这个结果表现最好。使用如下:exp(-0.1*$days);
【解决方案2】:

如果一个简单的 1/(1+x) 下降得太快太快,那么像 1/(1+e^-x) 这样的sigmoid function 或误差函数可能更适合您的目的。对于此类函数,让当前日期处于负数中的某个位置,您可以获得一个在某个可配置时间段内是当前日期的值,然后向基值递减。

【讨论】:

    【解决方案3】:
    log((x+1)-age_of_document)
    

    其中对数的底为 (x+1)。请注意,x 是根据您的图表,是“阈值”。如果文档的年龄大于 x,则分数变为负数。乘以可能的最大分数以引入缩放。

    例如域 = (0,10),最高分 10:10*(log(11-x))/log(11)

    【讨论】:

      【解决方案4】:

      有点晚了,但正如 thiton 所说,您可能希望使用 sigmoid 函数,因为它对您的长尾数据点有一个“下限”值。例如:

      0.8/(1+5^(x-3)) + 0.2 - 您可以调整常数 5 和 3 来控制曲线的斜率。 0.2 是地板所在的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 2012-02-07
        • 2019-03-30
        • 2012-06-23
        相关资源
        最近更新 更多