什么是Elo模型
Wikipedia总结的很好:
The Elo rating system is a method for calculating the relative skill levels of players in competitor-versus-competitor games such as chess. It is named after its creator Arpad Elo, a Hungarian-born American physics professor.
The Elo system was originally invented as an improved chess rating system, but is also used as a rating system for multiplayer competition in a number of video games, association football, American football, basketball, Major League Baseball, Scrabble and other games.
用语言描述最朴素的Elo模型
以足球比赛为例,最简单的Elo模型从建立到部署的过程如下:
step1:搜集各个战队的历史战绩数据,设定一个历史始点。
step2:这个时间点上各个球队的Elo值相等。Elo值越高,代表该球队的实力越强
step3:随着时间一步一步推进,各个球队相互比赛,胜者增加Elo值,败者减少Elo值。
step4: 预测两支球队的比赛结果:用双方的Elo值可以计算赛果对应的概率。
规则如下:
- 一个强队(指的是Elo值高)打赢一个弱队(指的是Elo值低),强队增加少量的Elo值,弱队减少相等的少量Elo值
- 一个强队打赢另一个强队,胜者增加一定的Elo值,败者减少相等的Elo值
- 一个弱队打赢一个强队,弱队增加大量的Elo值,强队减少相等的大量Elo值
Elo模型的实际意义非常明显:
- Elo值代表这个球队的实力值
- 某球队打败一个球队,视双方的实力而增减Elo值。强队打赢弱队,一点也不稀奇,只增加少许Elo值;弱队打赢强队,增加大量Elo值
用公式描述Elo模型
(1-1)
$P_A=\dfrac{1}{1+10^{(E_B-E_A)/400}}$
where,
- $P_A$代表A队胜利的概率(估计值)
- $1-P_A$代表B队胜利的概率,显然$P_B=\dfrac{1}{1+10^{(E_A-E_B)/400}}$
- $E_A,E_B$是两球队赛前的Elo值
(1-2)
$E_A^{new}=E_A+K(S_A-P_A)$
where,
- $E_A^{new}$表示比赛后的Elo值
- S表示赛果,取0-1,而且$S_A+S_B=1$
- K表示这场比赛的重要程度
模型的性质
$E_A^{new}+E_B^{new}=E_A+E_B$
Average number of points stay the same
一些缺点:
- 某人一直不参加比赛,elo值不变,但实际实力可能变动比较大(受伤、修养等)
- 某人一直匹配到高elo玩家,elo值会比实际要低
- 没有考虑双方的相克关系(只是假设双方实力是一维的)
Elo 模型的改进
改进1
S不在是0-1二值,而是[0,1]实数,其大小取决于比分,这么做触发了一些新特性:
- 如果两个实力相同的球队比赛,某一方以绝对优势胜利,Elo值将大量增加
- 一个强队打弱队,如果以微弱的优势胜利,那么Elo值反而会下降
这些特性是符合人们预设。
改进2
修改(1-2)
$E_A^{new}=E_A+(A-B)+K(S_A-P_A)$
$E_B^{new}=E_B+(B-A)+K(S_B-P_B)$
其中A是主队的主场优势,B是客队的客场优势
改进3
计算胜平负的三项概率
\[\left \{ \begin{array}{ccc} P_1=k_1+k_2(P_A-P_B)\\ P_2=1-P_H-P_A\\ P_3=k_3-k_4(P_A-P_B) \end{array}\right.\]参考文献
http://www.gameres.com/thread_228018_1_1.html
http://bbs.ngacn.cc/read.php?tid=1284872