将部分排名列表转换为全局排名

机器算法验证 多重比较 排行 推荐系统 布拉德利特里模型
2022-03-05 23:24:32

我正在解决类似以下问题的问题。我有一堆用户和 N 本书。每个用户创建他读过的所有书的有序排名(这可能是 N 本书的子集),例如,书 1 > 书 40 > 书 25。

现在我想将这些个人用户排名变成所有书籍的单一排序排名。

有什么好的或标准的方法可以尝试吗?到目前为止,我正在考虑将 Bradley-Terry 模型应用于成对比较,但我想知道是否还有其他内容。

2个回答

Plackett-Luce 排序模型处理这个问题,并且是一种基于似然的技术,其中使用类似于期望最大化的主要化最大化例程来最大化似然性,因为它们在似然函数上使用辅助目标函数,即优化以保证似然函数的迭代单调最大化。(参见 David Hunter 的 Plackett-Luce 排名模型的 MM 算法)。他也提供代码。

从排名的角度来看,它们是您在帖子中提到的 Bradley-Terry 模型的扩展。Bradley-Terry 模型根据成对排名样本估计全球排名。Plackett-Luce 模型将此扩展到长度 2 的排名。它们还允许每个样本具有不同长度的排名。>=

这非常适合您的数据集:

第 1 册 > 第 40 册 > 第 25 册

第 40 册 > 第 30 册

第 25 册 > 第 17 册 > 第 11 册 > 第 3 册等。

如果您对使用(而不是开发)感兴趣,您应该尝试一下我们的排名系统rankade

Rankade 是免费且易于使用的,它不同于 Bradley-Terry 模型和 Elo 排名系统(这里有一个比较),因为它可以管理2 个以上派系的比赛(即书籍,在您的场景中)。插入用户的排序排名(作为两本书或多本书之间的匹配,具有详细的最终排名,包括平局),您将获得您正在寻找的所有书籍的单一排序排名。令人上瘾的是,rankade 让您有机会检查书籍排名的时间演变,书籍比赛的统计数据等等。