2014-01-24 26 views
0

如果我有大量的项目列表,每个项目都有一个可以包含多个(或不包含)分数的属性列表,那么对这些项目进行公平排序时,考虑到每个项目可能存在的不同数量的信息?具有多个属性的项目的排名算法?

例如:

的Item1

ATTRIBUTE1的值(70) Attribute2值(90) Attribute3值(空)

项目2

ATTRIBUTE1的值(50; 60; 70 ) 属性2值(90) 属性3值(10)

这里,简单地求平均值会使Item1高于Item2 - 但实际上它们/可能会相同,因为Item2只是具有更多的已知数据。任何人都可以提出一种比较和排序数据的方法吗?

+0

您是否已经考虑[基数排序](http://en.wikipedia.org/wiki/Radix_sort)? –

+0

对于我们所知道的,Item2高于Item1,因为它具有您不知道的1000的值。似乎任何一种排名方案都可能失败,带有这种不确定性。 – Kevin

+0

你必须做一些关于缺少属性。这是机器学习中的一个常见问题。查看这个StackOverflow后的想法:http://stackoverflow.com/questions/13425722/how-to-deal-with-missing-attribute-values-in-c4-5-j48-decision-tree – AndyG

回答

0

你可以这样做:sum /(count + 1)。

如果属性是空值,总和为0,计数为0,所以值是0 /(0 + 1)= 0。

对于(70),将得到70/2 = 35

对于(50,60,70),您得到180/4 = 45.

更高级的方法可以是(总和+基数)/(count + 1)。你需要选择一个合适的基地。