【问题标题】:Statistical method for grading a set of exponential data对一组指数数据进行分级的统计方法
【发布时间】:2011-11-24 19:06:24
【问题描述】:

我有一个 PHP 应用程序,它允许用户指定国家列表和产品列表。它告诉他们哪个零售商是最匹配的。它使用类似于以下的公式来执行此操作:

(

(匹配的国家数量/选择的国家数量)*(国家匹配的重要性)

+

(匹配的产品数量/选择的产品数量)*(产品匹配的重要性)

)

*

(国家和解决方案匹配的重要性*(重合匹配/可能重合匹配的数量))

其中[国家匹配的重要性]为 30%,[产品匹配的重要性]为 10%,[国家和解决方案匹配的重要性]为 2.5

所以为了简化它:(国家匹配 + 产品匹配)* 乘数。

把它想象成[他们在那个国家经营吗? + 他们是否销售该产品?] * [他们是否在该国家/地区销售该产品?]

这为我们提供了我用来对搜索结果进行排名的每个零售商的匹配百分比。

我的数据表如下所示:

编号 |国家 |零售商 ID | product_id ========================================= 1 |法语 | 1 | 1 2 |法语 | 2 | 1 3 |法语 | 3 | 1 4 |法语 | 4 | 1 5 |法语 | 5 | 1

到目前为止,它还是相当简单的,因为它是一个二元决策。零售商要么在该国家/地区开展业务,要么销售该产品,或者不销售。

但是,我现在被要求为系统增加一些复杂性。我得到了收入数据,显示了每个零售商在每个国家销售的产品数量。数据表现在看起来像这样:

编号 |国家 |零售商 ID |产品编号 |收入 ================================================== = 1 |法语 | 1 | 1 | 1000 2 |法语 | 2 | 1 | 5000 3 |法语 | 3 | 1 | 10000 4 |法语 | 4 | 1 | 400000 5 |法语 | 5 | 1 | 9000000

我的问题是,我不希望零售商 3 的销售额是零售商 1 的 10 倍,以使它们的搜索结果提高 10 倍。同样,零售商 5 不应该比零售商 1 好 9000 倍。我已经研究过使用平均值、众数和中位数。我试过使用与平均值的偏差。我对如何使大跳跃不那么重要感到困惑。我对统计领域缺乏无知。

救命!

【问题讨论】:

    标签: php math statistics


    【解决方案1】:

    考虑使用 log10() 函数。正如您所描述的,这会减少结果的直接缩放。如果您对收入进行 log10(),那么收入大 1000 倍的人获得的分数仅大 3 倍。

    【讨论】:

      【解决方案2】:

      “抑制”巨大价值增长的经典之作是logarithms。如果您查看那篇 Wikipedia 文章,您会发现函数值最初增长得相当快,但随后增长得少得多。正如另一个答案中提到的,以 10 为底的对数意味着每次将输入值乘以 10,输出值都会增加 1。同样,每次将输入值乘以 2 时,以 2 为底的对数都会增加 1。

      如果你想削弱对数的影响,你可以考虑将它与线性函数结合起来,例如f(x) = log2 x + 0.0001 x... 但是那里的乘数需要非常仔细地调整,以免线性部分很快掩盖对数部分。

      想出这种加权本质上是棘手的,特别是如果您不确切知道函数应该是什么样子。但是,有些程序会进行曲线拟合,即您可以给它成对的函数输入/输出和一个模板函数,程序会为模板函数找到好的参数来逼近所需的曲线。所以,理论上你可以画出曲线,然后让程序找出一个好的公式。这也可能有点棘手,但我想你可能会感兴趣。一个这样的程序是开源工具QtiPlot

      【讨论】:

        猜你喜欢
        • 2017-02-14
        • 2012-08-25
        • 2012-04-06
        • 1970-01-01
        • 2015-09-24
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        • 2021-06-27
        相关资源
        最近更新 更多