首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >项目排序算法

项目排序算法
EN

Stack Overflow用户
提问于 2011-01-05 01:02:30
回答 5查看 28.8K关注 0票数 11

我有一个6500个项目的清单,我想交易或投资。(不是为了真正的钱,而是为了某种游戏。)每个项目有5个数字,将用于排序它的其他。

每天交易的商品总量:这个数字越高,越好。

在过去5天的项目的东钱频道:这个数字越高,越好。

的中间价差:这个数字越低,越好。

项目的20天移动均线的息差:这个数字越低,越好。

项目5天移动平均线的息差:这个数字越高,越好。

所有5个数字都有相同的“权重”,换句话说,它们都应该影响最终的数值,具有相同的价值或价值。

目前,我只是将每个项目的所有5个数字相乘,但它并没有按照我对项目进行排序的方式对项目进行排序。我只想把所有的5个数字组合成一个加权数字,我可以用来对所有6500个项目进行排序,但我不知道如何正确地或从数学上做到这一点。

注:每天交易的商品总量和多产通道都是比价差高得多的数字,后者更多的是百分比型数字。这可能就是为什么把它们加在一起对我来说不起作用的原因,每天的交易量和唐吉安频道在最终数字中的作用要大得多。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-05 15:54:01

人们之所以难以回答这个问题,是因为我们没有办法比较两种不同的“属性”。如果只有两个属性,比如数量交易和中位价差,那么(2000万,50%)会比(100,1%)更糟糕还是更好?只有你才能决定。

将所有数据转换为同样大小的数字可能会有所帮助,这就是所谓的“正常化”。这样做的一个好方法是普拉萨德提到的z得分。这是一个统计概念,看看数量如何变化。您需要对您的数字的统计分布进行一些假设才能使用此方法。

像息差这样的东西很可能是normally distributed - shaped like a normal distribution。对于这些,正如普拉萨德所说,以z(spread) = (spread-mean(spreads))/standardDeviation(spreads)为例。

像交易量这样的东西可能是Power law distribution。对于这些,在计算平均值和sd之前,您可能需要使用log()。那就是z分数是z(qty) = (log(qty)-mean(log(quantities)))/sd(log(quantities))

然后把每个属性的z值加起来。

要对每个属性执行此操作,您需要了解其分布情况。你可以猜,但最好的方法是画一个图,然后看一看。您还可能希望在日志比例尺上绘制图表。见wikipedia for a long list

票数 15
EN

Stack Overflow用户

发布于 2011-01-05 02:02:11

可以将每个属性向量x (长度N = 6500)替换为向量Z(x)的z-得分,其中

代码语言:javascript
复制
Z(x) = (x - mean(x))/sd(x).

这将将它们转换成相同的“比例”,然后您可以将Z-分数(具有相同的权重)相加,得到最终的分数,并根据这个总分对N=6500项目进行排序。如果你能在你的问题中找到其他的属性向量,它将是“善良”的指标(比如证券10天的回报?),那么你可以根据这些z得分变量来拟合这个预测属性的回归模型,找出最佳的非均匀权重。

票数 5
EN

Stack Overflow用户

发布于 2011-01-05 01:15:54

开始每个项目的分数为0。对于这5个数字中的每一个,根据该数字对列表进行排序,并将每个项目在该排序中的排名添加到其得分中。然后,按综合得分对项目进行排序。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4599971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档