使用Elo的评分系统,更好的替代方法?

时间:2019-03-25 14:51:54

标签: algorithm rating

我正在研究评分算法。我有一套练习。它们都按级别进行分类(1 =最简单,5 =最困难)。

向用户展示了两个练习,应该确定哪个难度更大或者两者是否相等。根据用户的评分,应该调整级别。

我所做的: 我尝试了Elo等级。

我的问题: 是否有更好的算法来处理此用例? (到目前为止什么都没发现)

预先感谢并欢呼。 托比

1 个答案:

答案 0 :(得分:0)

我会尝试以一种简单但有效的方式解决问题。

首先,只有在投票结果与系统实际期望值不同时,才更新练习等级。从现在开始,我将仅考虑用户输出与系统实际期望不同的情况。

第二,在两个级别有很大不同的地方,我将更加重视投票。对两个等级为2和3的练习的错误预期的影响应该比对两个等级为1和5的练习的错误预期的影响小。

也就是说,我的算法将遵循以下原则:

1-设置了一个恒定的百分比,我们称其为increment。它确定了投票产生的影响百分比,并且可以根据用户数量进行修改。

2-对于“意外”投票,我将计算原始级别之间的差异(最低1)。

diff = max(1, abs(ex1.level - ex2.level))

3-我会根据incrementdiff的乘积,以百分比的形式更新每个运动评分。

if (ex1 level expected bigger)
    ex1.rating = ex1.rating + diff*increment;
else
    ex1.rating = ex1.rating - diff*increment;

等级将是浮点数,等级将是rating的四舍五入:

ex1.level = round(ex1.rating)

示例

让我们设置increment = 0.1。评级为2.0且等级2的exA与评级为3.0且等级3的exB进行了比较。

第一个用户选择exB作为最难的用户。没有任何变化,因为这是系统预期的结果。

第二个用户选择exA。这不是预期的结果。两次练习之间的差为1,因此评分被修改为1 * 0.1 = 0.1, 导致exA.rating = 2.1的{​​{1}}