你可以打不赢费德勒,但你可以算计他

作者:甲勾

今天澳网正式拉开了序幕。茶余饭后聊起胜负,总会有小伙伴神神叨叨地预测神准,问他个所以然却不说,给你来句这就是实力,让人恨得牙痒痒。今天甲勾就带你了解一下高大上的专业算法,让你在接下来的两周内也能充当一回大佬。

我们以万众期待的费纳第39次对决为例,来看看怎么从官网上的一个简单的数字推算出比赛中所有你感兴趣的情况的概率。用比较专业的话叫,一个事件的概率是如何成为构建比赛所有结果概率的种子

蛋丁:才一个种子啊?我给你2G要不要?

条纹猫:这位同学,请你不要打岔认真听课。

胜率计算的基准

在计算比赛概率方面,全世界最专业的莫过博彩公司了,但其实博彩公司从来不关心某一场比赛的胜负,而关心的是长期某一名选手或者某一支队伍获胜的概率,这两者是有本质区别的。根据大数定律,随着比赛数的累积,概率会越来越趋向于稳定。

由此可见,数据量越大,我们得到的概率就越接近真实情况,比较聪明的朋友可能会想到,我们应该去收集两名选手历史上所有比赛的结果,来计算出获胜的百分比。这个思路并没有什么问题,但是想想这样我们能有多少数据呢?

数据,大量的数据

费纳已经交手38次,而更多的排名较低的选手,相互之间相遇的次数是非常有限的,就算算上职业生涯所有的比赛也远远达不到“大量”的要求从而会让结果浮动很大不能代表真实概率。

很多选手之间的相遇次数是非常有限的。。

事实上,主流的网球模型使用的是更精确的数据:

一名选手每一次发球的得分几率。通过数年的各类比赛统计成千上万次的发球,每一名选手的这个数据是非常稳定的,在ATP(男子网球联合会)和WTA(女子网球联合会)的官网上也可以直接找到。

那么假设我现在已经知道了费德勒每一次发球都有69%概率得分,我又怎么才能知道他对阵纳达尔的时候获胜的概率是多少呢?

蒙特卡洛方法

蒙特卡洛这个名字可能很多人都听到过,抛开摩纳哥那个世界三大赌城之一不提,著名的阿法狗背后就有一个称作蒙特卡洛树搜索算法的很高大上的名字。当然我们今天不会谈那个东西(那位准备关掉的同学你可以回来了)。

今天我们不聊这个,同学们请放心往下看

许多以蒙特卡洛来命名的算法或者方法,它们的思想本质就是运用计算机产生随机数来大量模拟事件的重复发生

,人为地制造出大量的样本,再用统计的方法解决一些很难计算的概率问题。

我们继续前面的例子看看如何实际运用这个方法。

网球比赛模型的建立流程图

先来看看一局的胜负。如果说费德勒的每一次发球有69%的几率得分,那我们让计算机产生一个1-100的随机数,如果小于或者等于69就认为得分,而大于69就认为对手纳达尔得分。通过产生一串随机数,比如87,56,62,25,8,我们就能模拟出一个单局的比分。

1 - 69:费德勒得分

70-100:纳达尔得分

通过产生随机数和已知事件的概率,模拟出一局的结果

现在让计算机大量重复这个过程,比如100000次,然后我们统计一下,如果发现里面89000次费德勒都赢了,就说明费德勒保住他的发球局的概率是89%(由于要得到实际结果需要写程序,这个数字仅仅用来辅助说明思路和逻辑,并不保证正确性,后同)。同样原理,我们可以通过纳达尔每次发球得分概率计算出他保住发球局的概率,假设结果是85%。由于样本足够多,这样模拟出来的结果是相当可靠的,而我们还可以进一步增加模拟的次数来提高精度。

让我们愉快地伐木吧!

知道了选手各自发球局的胜率,我们现在有了足够的数据可以进行下一层蒙特卡洛模拟来计算一盘的胜负了,让我们再用一串随机数 63,12,27,22,3,68,69,1,84,42,78,98 看看费德勒先发球的情况下,第一盘的比分情况(小于等于各自的概率表示保住发球局)。

通过产生随机数和已知事件的概率,模拟出一盘的结果

我们也同样重复这个过程100000次,就可以得到费德勒赢得一盘的概率(假设是52%,输掉的概率是48%)。

那么现在我们想知道最终比赛胜负的概率怎么计算呢?

泽科:让我们再进入下一层的蒙特卡洛模拟!!

甲勾:看看这位学霸的领悟能力!不过我们这次还可以用更简单的方法来解决。

乘法定理与加法定理

乘法定理:多个独立性事件同时发生的概率,是它们单独发生的概率相乘。

加法定理:多个互不相容的事件发生的概率,是它们单独发生的概率相加。

最终可能的费德勒获胜的情况只有三种,分别是3-0,3-1,3-2,它们之间是互不相容的(不可能同时有两种比分)。

3-0 只有一种情况

3-1 有三种情况

而 3-2 有六种情况

我们要做的是把所有这些可能的情况每一行的概率相加。而每一种情况的概率,是那一行所有获胜或者落败的概率相乘。计算过程这里就省略了(蛋丁已经拿着刀在瞪我了)。通过计算,最终的结果是费德勒获胜的概率是53.7%。这个就是条纹猫用来开比赛胜负赔率的数字。

枝繁叶茂的衍生盘口

自然对博彩公司来说,获得精确的概率是非常必要的,这样可以帮助他们制定合理的赔率,而更重要的是通过这样一个过程,可以获得由下而上的所有事件发生的概率。找到像发球得分率这样关键性的出发点,就像找到一颗种子然后生根发芽一样,可以由此衍生出无数盘口满足各种需求。

比如想知道费德勒3-0获胜的概率,我们可以借由上面第一行的结果计算得知是14%。又比如我们想要知道费德勒先失两局的情况下逆转获胜的概率,我们找到上图负负胜胜胜的那行,通过计算可以得到3%。再往下细分到比如每一分的胜负,是否产生抢七等等,任何想得到想不到的结果的概率,都是可以计算出来的。

这里为了说明方便,介绍的只是一个非常简化的模型,实际应用中,会加入更多参数。例如:

细分一发和双发得分的情况进行多层分叉。

引入对手的破发几率的竞争算法。

为选手在不同场地上的表现进行加权

根据伤病和竞技状态进行修正

等等等等

2018澳网-志得意满的奶牛和他伤病缠身的对手们

更关键的是,这类盘口往往因为概率相当低所以可以开出非常高的赔率,而且计算相对复杂普通人往往不能直观地理解背后的实际概率,这就给了博彩公司以机会在这类盘口上增加返水率从而增加自己的利润。如果因为抵挡不住十几倍甚至几十倍的回报而仅仅从表面去研究下注这类盘口,就正好中了圈套。

从随机中诞生的世界

本文提到的蒙特卡洛方法是一种非常强大的思想,上到人工智能,下到算算圆周率求求积分,都可以看到这个思想的影子,它通过用随机数模拟实际结果,用大算力产生大量的样本数,最后用统计方法得出不同结果的概率。小学的时候我们都用过穷举法,这个思想可以看成穷举法在信息时代的发展,只不过对确定数值的穷举,变成了对概率的穷举。

这种方法被广泛应用于金融,经济学,社会学,统计物理等等各种领域,用计算机带给我们的强大算力,解决各种复杂的现实问题。这也是甲勾用了整整一篇的篇幅作为铺垫,介绍如何产生高质量随机数的原因。

传送门:这位大叔在随机的彩票上实现了90%的中奖率

在结束本文之前,给大家留一个小题目:

我们已经知道对于网球比赛,我们会选择一名选手发球的得分率作为基准。那对于足球比赛,什么数据最适合作为基准呢?

欢迎留言告诉我们。

珍爱生命,远离赌博

光靠禁止一件事,有时候会反而让人心生叛逆与好奇。赌博容易上瘾,是因为在它背后的是人性的弱点。甲勾在系列以后的文章里将会涉及各种与此相关的数学和心理学。只有深刻理解事情背后的本质,才能作出理性判断。

感谢阅读,本文由“奇点偶遇”原创发表,欢迎关注。如需转载,请联系我们。

鸣谢:某博彩公司资深网球交易分析师 Hau Neo