Bradley-Terry模型解读
核心思想:
Bradley-Terry模型解决的是谁更强的问题,给定两个选项A和B,这个模型能告诉我们A被选择的概率是多少,常用于体育比赛、排序、偏好建模等场景。
公式非常简洁:
-
θ_A和θ_B是A和B的"实力值"(或称为能力参数) -
P(A > B)表示A被选择胜过B的概率 -
A 的胜率是 A 和 B 实力差的一个「S型」函数(sigmoid),当 A 比 B 强很多时,A 几乎一定赢;当双方接近时,胜率接近 50%
Bradley-Terry 模型的核心图像 —— 胜率 vs 实力差(Sigmoid 曲线):

横轴表示 \(\theta_A - \theta_B\):A 和 B 的实力差
纵轴表示 \(P(A > B)\):A 战胜 B 的概率
当实力差为 0 时,胜率为 0.5(五五开)
当 A 实力远高于 B(向右),胜率逼近 1
当 A 实力远低于 B(向左),胜率逼近 0
该图Bradley-Terry 模型的核心思想:实力差越大,胜率越偏向强者,但始终保持概率性。这种平滑的 S 形函数非常适合建模“不确定但有倾向”的比较结果
直观理解:
现在有一场篮球比赛,A队实力值:\(\theta_A=2.5\),B队实力值:\(\theta_B=2.0\)
因此A队获胜的概率是62%
模型特点:
-
对称性:\(P(A>B)+P(B>A)=1\)
-
传递性:A比B强,B比C强,那么A比C更强
-
只关心相对实力:重要的是实力差值 \(\theta_A-\theta_B\),而不是绝对值
参数估计:
「最大似然」就是选择最能解释观察到证据的假设
给定观察到的数据D,我们想要找到参数\(\theta\),使得在这个参数下观察到数据D的概率最大:
假设我们观察到的数据是下方的比较结果:
观察数据:
- A vs B: A胜
- B vs C: B胜
- A vs C: A胜
我们要估计参数:\(\theta_A,\theta_B,\theta_C\),每个选项的实力值
那么最大似然估计:
# 简化的Python实现思路
def likelihood(theta_A, theta_B, theta_C, results):
prob = 1.0
for winner, loser in results:
prob *= exp(theta[winner]) / (exp(theta[winner]) + exp(theta[loser]))
return prob
# 通过优化算法找到最佳的θ值
Python代码实现
import numpy as np
from scipy.optimize import minimize
# 胜负数据:0 = A, 1 = B, 2 = C
results = [(0, 1), (1, 2), (0, 2)]
# 只优化 θ_A 和 θ_C,固定 θ_B=0 作为参考
def negative_log_likelihood(theta_sub):
theta = np.array([theta_sub[0], 0.0, theta_sub[1]]) # A, B固定为0, C
loss = 0
for winner, loser in results:
p_win = np.exp(theta[winner]) / (np.exp(theta[winner]) + np.exp(theta[loser]))
loss -= np.log(p_win)
return loss
theta_init = np.array([0.0, 0.0]) # 初始 θ_A 和 θ_C
res = minimize(negative_log_likelihood, theta_init, method='BFGS')
# 恢复所有 θ(B=0)
theta_final = np.array([res.x[0], 0.0, res.x[1]])
theta_exp = np.exp(theta_final) # 可选:转换到原始 θ 空间
# 打印结果
names = ['A', 'B', 'C']
for i in range(3):
print(f"{names[i]} 的 log θ = {theta_final[i]:.3f}, 实力值 θ = {theta_exp[i]:.3f}")
扩展变种:
- 考虑平局的扩展:用于象棋、围棋等比赛有大量和局的场景
- 时变模型:运动员或模型能力随时间上升或下降
- 多因素模型:在评分系统中考虑多维特征,如 Elo 或体育分析\[\theta_A = \beta_1 \cdot 攻击力 + \beta_2 \cdot 防御力 + \beta_3 \cdot 主场优势 \]
Bradley-Terry模型本质上是将比较问题转化为概率问题,通过简单的指数函数关系,优雅地建模了"谁更优秀"这一基本问题。虽然模型相对简单,但在很多实际场景中都能提供有价值的洞察。
例如在 大模型训练中的偏好学习(如RLHF)、体育比赛胜率建模(如FIFA排名)、搜索排序与推荐系统中都有广泛应用。
点击查看代码
<details>
<summary>点击查看代码</summary>
</details>

浙公网安备 33010602011771号