【问题标题】:Rating System with Elo, better alternatives?带有 Elo 的评分系统,更好的选择?
【发布时间】:2019-08-15 20:33:53
【问题描述】:

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

用户会看到两个练习,应该决定哪一个更难,或者两者是否相等。应根据用户评分调整级别。

我做了什么: 我尝试了 Elo 评级。

我的问题: 有没有更好的算法来做这个用例? (目前一无所获)

在此先感谢和欢呼。 托比

【问题讨论】:

  • 这看起来很有趣,但却是开放式的。我会建议一个 Elo 评级,您可以在其中多次循环比较,每次都会使 Elo 调整更小。这消除了投票顺序的影响。

标签: algorithm rating


【解决方案1】:

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

首先,您仅在投票与系统实际预期的不同时才更新锻炼评级。从现在开始,我将只考虑用户输出与系统实际预期不同的情况。

其次,我会更加重视两个级别差异很大的选票。对两个等级为 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 是浮点数,level 是 rating 的四舍五入:

ex1.level = round(ex1.rating)

示例

让我们设置increment = 0.1exA,评分为 2.0,级别 2 与 exB,评分为 3.0,级别 3 进行比较。

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

第二个用户选择exA。这不是预期的结果。两个练习之间的差为 1,因此评分被修正了一个因子 1*0.1 = 0.1, 导致exA.rating = 2.1 对应exB.rating = 2.9

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多