algorithm - 销售排名算法

标签 algorithm math statistics ranking

我正在尝试根据迄今为止的总销售额和过去 x 天的销售额(以显示趋势、热门产品)找出对某些产品进行排名的最佳方式

我想做的是同时使用两者,这样最大的卖家排名很高,但如果他们已经售罄,他们就会被下移(最近没有销售),或者如果他们最近的销售特别高,他们就会跳起来.

由于是销售额,不同产品的数字可能相差 10 倍,所以我假设我们需要一个对数刻度。将两者结合起来的最佳方式是什么?

最佳答案

What I'd like to do is use both, so that the biggest sellers rank highly, but if they have sold out, they are moved down (no recent sales) or if they have particularly high recent sales they get jumped up.

一个特别简单的方法是为每个产品维护两个 exponential moving averages ,一个具有短因子,一个具有长因子。请注意,每个此类平均值都可以简单地通过将当天的平均值乘以某个因子,然后加上当天的数字乘以补充因子来更新。

您需要根据您的问题设置这两个因素,但请参阅 here解释该因素与平均有效时间之间的关系。

产品的总分将是考虑到这两个平均值的总分。

With it being sales, the figures could be 10x different by product, so I'm assuming we need a logarithmic scale for this. What's the best way to combine the two?

没有最好的方法 - 您需要尝试不同的选项,并调整它们直到您对结果满意为止。

如果多头和空头的平均数是ls,那么一般的平均方式(不是唯一的!)是α f(l) + (1 - α) f(s),其中 α[0, 1] 中的某个常数,并且 f是一个阻尼函数。您已经提到对数作为阻尼函数,但您可能会发现,比方说,平方根更适合您的情况(它在小参数或零参数时的问题也较少)。

关于algorithm - 销售排名算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40908753/

相关文章:

matlab - 如何处理Matlab中Kruskal-Wallis检验中的缺失值?

algorithm - 计算 2 个数组之间的反转

python - python中字符串的所有可能长度k组合

java - 较短版本的计算

c++ - 为什么在启用浮点异常后我得到多个陷阱错误

unit-testing - 测试面向数学的方法的正确性

c++ - STL字符串比较方法与手动编写的方法之间存在巨大的时间差异

java - 在java中将大文件的数据缓存在内存中

machine-learning - 解释统计模型指标

mysql - 计算每个产品每天有多少个条形码