假设:
例如:
我有一长串比赛结果,如下所示:
Team A beats Team B
Team B beats Team A
Team A beats Team B
Team C beats Team A
Team A beats Team C
问题:
预测任何球队击败任何其他球队的正确投注赔率。
在上面的例子中,也许我们得出结论,A 应该在 66% 的时间内击败 B。这是基于直接观察,非常简单。然而,找到 C 击败 B 的概率似乎更难。他们从来没有一起玩过,但似乎最有可能是 C > B,信心不足。
我做过的研究:
我已经阅读了很多关于技能游戏的不同排名系统的内容,例如国际象棋的 Elo 和 Glicko 评级系统。这些不足是因为它们对所涉及的概率分布做出了假设。例如,Elo 的中心假设是每个棋手在每场比赛中的国际象棋表现是一个正态分布的随机变量。但是,根据维基百科,还有其他分布更适合现有数据。
我不想假设分布。在我看来,手头有 10,000 多个匹配结果,我应该能够从证据中推断出分布(我不知道如何做到这一点),或者使用某种不关心的强化学习方案分布是什么。
最佳答案
您希望对概率(或多个概率)进行最佳估计,并随着更多数据可用而不断更新您的估计。这需要Bayesian inference!贝叶斯推理基于这样的观察,即 A 和 B 两个事物同时发生的概率(分布)等于 A 的概率(分布),假设 B 是案例乘以概率那B就是这样。以公式形式:
并且
因此
将 P(B) 带到另一边,我们得到 贝叶斯更新规则 :
通常 A 代表您试图估计的任何变量(例如“x 队击败 y 队”),而 B 代表您的观察(例如球队之间赢得和输掉比赛的完整历史)。我写了素数(即 P(A|B)' 中的引号)来表示等式的左手代表你的信念的更新。具体来说,鉴于到目前为止的所有观察结果,您对团队 x 击败团队 y 的概率的新估计是在给定您之前的估计的情况下进行这些观察的概率乘以您之前的估计,除以看到您所看到的观察结果(即不假设球队之间的相对实力;一支球队在大多数情况下获胜的可能性小于两支球队获胜的概率大致相同)。
当前更新左侧的 P(A|B)' 成为下一次更新右侧的新 P(A)。随着更多数据的进入,您只需不断重复此操作。通常,为了尽可能无偏,您从 P(A) 的完全平坦分布开始。随着时间的推移,P(A) 将变得越来越确定,尽管该算法能够很好地处理您试图估计的潜在概率的突然变化(例如,如果团队 x 因为新玩家加入而突然变得更强大)团队)。
好消息是贝叶斯推理与 ElKamina 也提到的 beta distribution 配合得很好。事实上,这两者通常结合在旨在学习概率分布的人工智能系统中。虽然 beta 分布本身仍然是一个假设,但它的优点是它可以采取多种形式(包括完全平坦和极端尖峰),因此相对而言,没有理由担心您选择的分布可能会影响您的结果。
一个坏消息是,除了 beta 发行版之外,您仍然需要做出假设。例如,假设您有以下变量:
并且您可以从 x 和 y 之间的直接匹配以及 y 和 z 之间的匹配中获得观察结果,但没有从 x 和 z 之间的匹配中获得观察结果。估计 P(C) 的一种简单(虽然幼稚)方法可能是假设传递性:
无论您的方法多么复杂,您都必须定义某种概率结构来处理数据中的差距和相互依赖性。无论您选择何种结构,它始终是一个假设。
另一个坏消息是这种方法非常复杂,我无法完整说明如何将其应用于您的问题。鉴于您需要一个相互依赖的概率结构(给定涉及团队 x、y 和 z 的其他分布,团队 x 击败团队 y 的概率),您可能想要使用 Bayesian network 或相关分析(例如 Markov random field 或 path analysis )。
我希望这有帮助。无论如何,请随时要求澄清。