数据科学家如何玩台球 - 技术篇

risk

工作休息时间打打台球可以缓解一下神经,也可以更快的融入团队,但是开始水平太差,输多赢少,作为一个玩“数据”的,能不能通过数据科学优化一下这件事,至少多赢几局?

要赢一场球分为两个部分:

  • 第一是要打的更准,总体来说,打的越准的人赢得概率更高,这个是硬实力;
  • 第二是在准度一定的情况下,每一杆球,根据球形和对手,都要选择不同策略,策略包括击打对象,使用的力度,进攻还是防守,提高获胜的概率,这个是软实力。

针对这两个问题,分两篇来说说自己的想法 ,本篇是技术篇,讲的是提高准度的问题,下一篇的策略篇,来说说临场策略选择的问题。

1. 像物理学家一样思考

刚开始打台球的时候,一个最大的问题就是不知道打哪儿,我想把7号球打到底袋,应该用母球击打目标球的那个部位?首先我们像个物理学家一样,先考虑最简单,最理想化的情况。

learning

如果把台球理想化成两个光滑的球体碰撞,目标球会沿着两个球的球心的连线走出去,而母球会沿着和目标球路线垂直的路线走出去,所以照着上图的假想球的球心位置打就可以,这是高中物理的知识,是最基本的原理,具体演示见上图(左)。

但是现实中真正瞄准的时候,离目标球很远,看清假想球的球心位置比较困难,所以会转换成另外一种瞄球方法,就是观看母球和目标球的重叠程度,具体演示见上图(右)。根据目标球路线可以确定每次击打的分离角alpha,通过几何原理,可以算出这个所需要的重叠程度,这里面有个确定的函数关系,假设重叠程度为P,完全重叠为1,完全不重叠为0,P可以表示为alpha的函数:

P = 1- sin(alpha)

上面的对应关系可以画成一条曲线,x轴为角度alpha,y轴为P,如下图中的蓝线:

learning

比如现在我想打的分离角为30度,查一下这条曲线,就只到应该重叠度为0.5,就是按照遮住一半的球来瞄准。

这样通过物理物理理论和几何理论,就解决了打哪儿的问题,每次看到一个需要的分离角,然后选择一个重叠程度来击打,球手走到击球位置,站着可以看到要求的分离角,然后趴下来观察重叠的程度,进行瞄准击球。

以上是最理想的模型,但是现实中还有其他很多因素要考虑,比如球之间的摩擦力,在大力击球的时候,由于向前的摩擦力,会让分离角比理想中的小一点,所以当要打出预期的分离角的话,就要比理想模型打的薄一点,如同上图中的红虚线表示的一样,这个摩擦力的就很难用简单的理论来分析啦,又或者球手根本就不懂物理原理和几何原理,比如我们小时候打球那怎么知道什么原理,那怎么知道如何打哪儿呢?

2. 像系统学家一样思考

这就是需要要用试错法来实验搜索了,这里最核心的就是建立一个反馈系统,通过每一步的结果来改进下一步的行动,逐步来找到最优方案。

learning

首先我们知道的是分离角和球的的重叠程度是单调相关的,就是重叠程度越小,分离角越大,那么对于一个特定的分离角,我们可以重复打很多次,比如对于37度的分离角,先从重叠一半开始尝试,如果发现他的分离角小于37度,那就再打的薄一点,比如重叠1/4,如果分离角又大了,那就选择重叠1/2和1/4中的一点,比如3/8,这次就更接近了,但是还是会或大或小,那就再调整,理论上要达到一定的精度,并不需要太多的尝试,因为精度是随着尝试次数指数提高的。

假设针对一个分离角,最终的理想的P为0.7,那么通过10几次的尝试就可以得到一个非常接近的值,通过编程我们可以看看实际的结果,x轴为尝试的次数,y轴为每次尝试的值,一开始跳跃比较大,后来就很快接近真实值了:

learning

不同情境下这个系统建立的复杂程度不同,在打台球的时候,这个系统就是你的手,眼,脑的结合,眼睛帮你搜集数据,大脑进行数据分析,然后让手执行你的决策,通过不断尝试,即使不懂物理原理,也可以建立一个对应关系,只要知道要打什么分离角,就可以找到一个瞄准的点。

这个系统好处在于可以对付不同的情况,比如摩擦系数不同的球,而且还有一些情况下,即使理论上不能给出清晰模型,都能建立最终的对应关系,给出合理决策的建议。

3. 像统计学家一样思考?

通过试错来寻找瞄点的过程中,这个过程中会有很多误差的影响,每次瞄的位置和最后打的位置其实不一样,这样反馈过程中就会出现反复试错,特别是在准度不断提升的过程,越往后就需要越多的练习,需要更多的尝试来,提高精度。

在瞄球打球过程中有很多随机性,都会产生误差。比如每次站的位置不同,就会让眼睛和手、球的位置有所偏差,这样你以为你打的重叠一半的球,但是其实是打的更薄,所以在台球教程中都会说到,趴下之前击球之前,脚站位的问题,每个人可能习惯不同,但是都有一个原则,就是尽量每次和球的相对位置固定,这就减小了误差的产生。

另外球杆的长度,硬度,皮头的大小,对击球也有影响,所以尽量使用固定的球杆,比如自己买一根球杆,每次都用这个打,虽然质量和普通球杆没有差别,但是至少减少了球杆换来换去的产生的误差。

说一个人准度高,本质上就是说这个人稳定性高,随机性小,知道打哪儿,而且可以稳定的打到想打的地方,要提高准度,必须像一个统计学家一样,处处留心,找到误差产生的原因,消除误差。

4. 小结

以上只是台球中瞄球练习的最简化的情形,但也可以从了解一些基本原则,作为一个数据科学家,要解决一个问题就要考虑下面三个方面:

  • 了解问题本质,保证从原则和方向不会出错,实际工作中越深的了解业务,就越能减少原则性的错误;
  • 用数据量化,精细化的过程中,建立反馈循环非常重要,有了反馈,才能知道想那个方向调整,有了反馈系统,即使一开始不精确,也会在不断迭代中达到需要的精度;
  • 在搜集数据,分析数据的过程中,充分考虑实际误差的影响,找到误差产生的原因,减小误差,可以提高优化的效率,做到事半功倍。