Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Php 指数数据集分级的统计方法_Php_Math_Statistics - Fatal编程技术网

Php 指数数据集分级的统计方法

Php 指数数据集分级的统计方法,php,math,statistics,Php,Math,Statistics,我有一个PHP应用程序,允许用户指定国家列表和产品列表。它告诉他们哪家零售商最匹配。它使用一个类似于以下公式的公式: 匹配的国家数/选择的国家数*国家匹配的重要性 + 匹配的产品数量/选择的产品数量*产品匹配的重要性 * 国家/地区和解决方案匹配的重要性*一致匹配/可能一致匹配的数量 其中[国家匹配的重要性]为30%,[产品匹配的重要性]为10%,而[国家和解决方案匹配的重要性]为2.5% 因此,为了简化它:国家匹配+产品匹配*乘数 把它想象成[他们在那个国家经营吗?+他们卖那个产品吗?]*

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

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

+

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

*

国家/地区和解决方案匹配的重要性*一致匹配/可能一致匹配的数量

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

因此,为了简化它:国家匹配+产品匹配*乘数

把它想象成[他们在那个国家经营吗?+他们卖那个产品吗?]*[他们在那个国家卖那个产品吗?]

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

我的数据表如下所示:

id | country | retailer_id | product_id ======================================== 1 | FR | 1 | 1 2 | FR | 2 | 1 3 | FR | 3 | 1 4 | FR | 4 | 1 5 | FR | 5 | 1 id | country | retailer_id | product_id | revenue =================================================== 1 | FR | 1 | 1 | 1000 2 | FR | 2 | 1 | 5000 3 | FR | 3 | 1 | 10000 4 | FR | 4 | 1 | 400000 5 | FR | 5 | 1 | 9000000 到目前为止,这是一个相当简单的二元决策。零售商要么在该国经营,要么销售该产品,要么不销售

然而,我现在被要求给系统增加一些复杂性。我得到了收入数据,显示了每个零售商在每个国家销售的产品数量。数据表现在如下所示:

id | country | retailer_id | product_id ======================================== 1 | FR | 1 | 1 2 | FR | 2 | 1 3 | FR | 3 | 1 4 | FR | 4 | 1 5 | FR | 5 | 1 id | country | retailer_id | product_id | revenue =================================================== 1 | FR | 1 | 1 | 1000 2 | FR | 2 | 1 | 5000 3 | FR | 3 | 1 | 10000 4 | FR | 4 | 1 | 400000 5 | FR | 5 | 1 | 9000000 我的问题是,我不希望零售商3的销售额是零售商1的十倍,从而使其作为搜索结果的质量提高十倍。同样,零售商5的匹配度不应该比零售商1高9000倍。我已经研究过使用平均值、模式和中位数。我试着用偏离平均值的方法。我很难理解如何使大跳跃变得不那么重要。我对统计领域的无知正在显现出来


救命啊

考虑使用log10函数。这减少了结果的直接缩放,如您所描述的。如果您记录收入的10倍,那么收入高出1000倍的人只会得到3倍的分数。

考虑使用log10功能。这减少了结果的直接缩放,如您所描述的。如果你记下10%的收入,那么收入比你高1000倍的人只会得到比你高3倍的分数。

抑制价值大幅增长的一个经典方法是。如果你看维基百科的那篇文章,你会发现函数值最初增长得相当快,但后来增长得很慢。正如在另一个答案中提到的,以10为底的对数意味着每次将输入值乘以10,输出值就会增加1。类似地,每次将输入值乘以2时,以2为底的对数将增加1

如果你想减弱对数的影响,你可以考虑将它与线性函数相结合,例如fx=log2 x+0.0001 x。。。但是需要非常小心地调整乘法器,这样线性部分不会很快掩盖对数部分


提出这种权重本质上是很棘手的,特别是如果你不知道函数应该是什么样子的话。但是,有一些程序可以进行曲线拟合,也就是说,您可以为其提供成对的函数输入/输出和一个模板函数,并且该程序将找到模板函数的良好参数,以近似所需曲线。所以,理论上,你可以画出你的曲线,然后让程序计算出一个好的公式。这也可能有点棘手,但我想你可能会感兴趣。一个这样的程序就是开源工具。

抑制价值大幅增长的一个经典方法是。如果你看维基百科的那篇文章,你会发现函数值最初增长得相当快,但后来增长得很慢。正如在另一个答案中提到的,以10为底的对数意味着每次将输入值乘以10,输出值就会增加1。类似地,每次将输入值乘以2时,以2为底的对数将增加1

如果你想减弱对数的影响,你可以考虑将它与线性函数相结合,例如fx=log2 x+0.0001 x。。。但是需要非常小心地调整乘法器,这样线性部分不会很快掩盖对数部分

提出这种权重本质上是很棘手的,特别是如果你不知道函数应该是什么样子的话。但是,有一些程序可以进行曲线拟合,也就是说,您可以为其提供成对的函数输入/输出和一个模板函数,并且该程序将找到模板函数的良好参数,以近似所需曲线。所以,理论上,你可以画出你的曲线,然后让程序计算出一个好的公式。这也可能有点棘手,但我想你可能会感兴趣。一个这样的程序就是开源的t 乌尔