algorithm - 在项目之间反复选择后确定排名的算法
问题描述
我想编写一个小程序来帮助我根据大量一对一比较的结果对项目进行排名。
因此,如果我有 100 个项目,我会让用户在这组随机选择的两个项目之间反复选择。假设总共有 10.000 张选票。项目编号 10 在 1000 票中出现并赢得了与所有其他项目的所有直接对抗。项目编号 90人在100票中上来,赢了40票,输了60票。我可以利用现有的算法(例如来自推荐系统或类似系统)来构建这些项目的排名列表吗?
解决方案
win percentage
一种简单的方法是根据total wins/total confrontations
如果你想有一个单一的评分机制,你可以reward
将赢家和punish
输家按固定数量,然后根据最终得分排名。
最后,你可以看看Elo ranking algorithm
,它计算了每个项目赢得对抗的概率以及rewards and punishes
相对于这些概率。
例子
# Probability
A higher chance of winning than B
# Case1: A wins
A +small reward
B -small punishment
# Case2: B wins
A -large punishment
B +large reward
推荐阅读
- javascript - 无法使用 jquery 按钮提交表单
- javascript - 修复 vue 数据映射以按日期和员工分组
- maven - Gradle 7.1.1 找不到 jp.classmethod.aws:gradle-aws-plugin
- foreach - 如何在此状态下替换循环内的循环
- flutter - 如何根据用户的点击保持小部件扩展?
- node.js - Node、Express、Socket.io 无法连接到服务器
- python - 在 Python3.8 中通过串行(USB-RS232)端口发送 ASCII 命令时是否需要一些特殊编码?
- java - & 而不是 % 优化?
- python-3.x - 何时使用 peewee 使用 SQL 外键?
- javascript - 如何通过基于特定字段值对对象进行分组来过滤 javascript 对象数组?