博客 > 人工智能&数据科学 > 通用算法和模型
# ELO 评分 Elo评分系统原本用于棋类游戏,如国际象棋,用来评估玩家的相对技术水平。Elo评分系统通过比较参与者之间的表现,为每个参与者分配一个分数。当一个参与者在比较中胜出时,它会从对手那里获得分数,输掉比赛则会失去分数。Elo评分的变化量取决于预期结果与实际结果之间的差异——如果低分参与者击败了高分参与,那么分数的变动会比符合预期结果时更大。 ## 两者对弈的 ELO 评分 具体的Elo公式涉及到几个关键参数: - **当前Elo分数**:两位玩家开始比赛前的Elo评分。 - **比赛结果**:比赛的实际结果,通常胜利记为1,平局记为0.5,失败记为0。 - **预期结果**:根据两位玩家或模型的当前Elo评分计算出的预期胜率。 Elo评分的基本计算公式是: $$R' = R + K \times (S - E)$$ 其中: - $R'$ 是比赛后的Elo评分。 - $R$ 是比赛前的Elo评分。 - $K$ 是K因子,它决定了胜负对评分的影响程度,较高的K因子使得单一比赛的结果对总评分的影响更大。 - $S$ 是实际比赛结果,胜、平、负分别用1、0.5、0表示。 - $E$ 是预期结果,计算方式基于双方的初始评分。 预期得分是根据两个玩家的当前Elo评分计算出来的,用来表示一方在比赛中胜出的预期概率。计算预期得分的公式是: $E = \displaystyle \frac{1}{1 + 10^{(Rb-Ra)/D}}$ 其中: - $E$ 是预期得分。 - $Ra$ 和 $Rb$ 分别是两位玩家的Elo评分。 - 分母中的D是一个常数,用于调整评分差异对预期得分的影响,常取400。 通过这种方式,Elo评分系统提供了一种动态评估玩家或模型相对实力的方法,使得评分能够随着时间和比赛结果的变化而更新。 ## 多人排名的 ELO 评分 在多人非竞争性比赛的情况下,每个参与者只根据其在比赛中获得的绝对分数进行排名,而不是直接与其他参与者的胜负进行比较。这要求我们调整Elo评分系统的计算方式,以适应这种多人、基于绝对分数排名的场景。一个可能的方法是将每个人的表现与预期表现进行比较,然后根据这种比较来调整他们的Elo分数。 ### 基本思路 1. **定义预期排名或得分**:首先,根据参与者的Elo分数计算出他们的预期排名或得分。 2. **确定实际排名或得分**:比赛结束后,根据每个人的绝对分数确定实际的排名或得分。 3. **调整Elo分数**:比较每个参与者的预期和实际差异,然后调整其Elo分数。 ### 计算方法 考虑到多人参与和非竞争性的特点,我们可以采用以下步骤来计算每个人的Elo分数: #### 一、计算每个参与者的预期得分$E_i$ 1. **预测排名**:首先,根据参与者的当前Elo分数预测他们在比赛中的排名。这可以通过简单地将Elo分数从高到低排序来完成。排名最高的参与者预期排名第一,排名最低的预期排名最后。 2. **分配预期得分**:然后,根据预测的排名给每个参与者分配一个预期得分。这个得分可以是线性的,也可以是基于某种分布的,例如正态分布或其他分布。例如,可以按照某种规则,排名第一的参与者获得最高分,排名最后的获得最低分。 假设比赛有$N$个参与者,预期得分的一种可能分配方法是使用**线性分数分配**: $$E_i = \text{MaxScore} - (\text{PredictedRank}_i - 1) \times \frac{\text{MaxScore} - \text{MinScore}}{N - 1}$$ 其中,$E_i$是参与者$i$的预期得分,$\text{PredictedRank}_i$是基于Elo分数预测的参与者$i$的排名,$\text{MaxScore}$和$\text{MinScore}$分别是分配给排名第一和最后一名的分数,$N$是参与者总数。这种方法简单直接,易于理解和实施。它假设所有参与者之间的水平差异在整个排名分布中是均匀的,每个排名位置之间的分数差异相同。 #### 二、进行比赛,确定每个人的实际得分$S_i$ #### 三、计算每个人的Elo分数更新 使用以下Elo分数公式: $$R'_i = R_i + K \times (S_i - E_i)$$ 这种基于预期得分的方法提供了一种将多人非竞争性比赛的结果转换为Elo分数调整的手段,适用于比赛结果直接反映为绝对分数而不是两两之间胜负的情况。当然,直接使用预期排名而非预期得分也可以得到类似的算法。 ### 应用示例 **学术竞赛**:在数学��林匹克等学术竞赛中,所有参与者根据他们解决问题的能力获得分数,然后根据这些分数排名。在这种情况下,可以使用基于排名的预期得分方法来调整参与者的Elo分数,以反映他们在一系列比赛中的表现。