algorithm - 计算排名数据的估计数学期望?

标签 algorithm math sorting

我必须按应用下载次数对“最流行的应用 RSS”进行排序。这是问题所在:

假设有 1,000 个应用。

RSS 数据列出了每个应用类别的前 100 个应用。

RSS 数据还提供前 100 个应用列表,不分类别。

RSS 按每个应用的下载次数排序,但确切的下载次数未知。

每个应用程序都有两个已知属性:类别及其在 RSS 排名中的位置。

现在我想按估计的下载次数对所有 1,000 个应用程序进行排序。

排序不需要非常准确,统计上最可能的就可以了。

我怎样才能实现这个排序算法? TIA。

最佳答案

你可以这样处理:(我假设每个应用只属于一个类别)

假设您对每个类别 C1 ..C10 有以下排名

C1             C2    ...             C10

app1-1       app2-1

app1-2       &pp2-2

..           ...

app1-100     app2-100              app10-100

总的 100 个顶级应用类别(例如):

C  app1-1  app1-2  app2 -1  ... app2-10  

现在使用这 2 个表,首先你需要按照 app1-1 到 app10-1 在列表 C 中出现的相同顺序对 C1 到 C10 进行排序,这样你就“知道”(更像是猜测)类别是什么在排名方面更重要。

然后使用这些信息对其余的进行排序。


现在我将使用一个更简单的示例来展示如何对其余元素进行排序。

让我们以 3 个类别和 12 个应用为例。

C1      C2      C3

app1    app21   app31   

app2    app22   app32

app3    app23   app33

app4    app24   app34

C = app1 app2 app21 app31

1.首先在表格中标记C中的所有元素:

app1    app21 ->app31   
 |   /
app2    app22   app32

app3    app23   app33

app4    app24   app34

2.第二,对剩余元素进行排序

由于您没有更多信息,一个很好的近似是从左到右查看每一行(从排名较高的顶部列表到较小的排名顶部列表),它给出:

app3 app22 app32 app4 app23 app33 app24 app34

那么整体分类将是:

app1 app2 app21 app31 app3 app22 app32 app4 app23 app33 app24 app34

我希望这个例子能阐明我的想法并有所帮助。

我认为这种方法使用了您在 C1 ...C10 和 C 中拥有的所有信息。

关于algorithm - 计算排名数据的估计数学期望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202998/

相关文章:

从数组中删除唯一元素并按原始顺序打印元素的算法

java - 求实数的幂

java - 如何区分图像中的两条线

python - 在 python 3.3 中按日期对二维数组进行排序

c# - 使用 LINQ 将项目移动到列表顶部

c - 如何根据以下标准进行排序?

ruby - 如何分配表达式中的元素?

PHP - 拆分丑陋的日期字符串,然后对其进行日期数学运算?

java - 对日期 ListArray 以及标题的第二个数组进行排序

python - 如何在多个级别的用户之间平均共享资源