人工神经网络替代专家投票?NBA大数据揭秘谁是当下MVP

“谁会是MVP?”——这样的问题在NBA每个赛季都会从10月讨论到来年4月,在萧华的努力下,如今已经到了6月。NBA官方和ESPN也好,也会在每周推出MVP榜单,可以说,这是每年最受关注的话题之一。

相比空口无凭的泛泛而谈,我们是否可以通过历年记者投票的倾向结合MVP评选的两大最重要指标——“个人数据”和“球队战绩”来模拟出一个相对准确的MVP结果呢?以前,我们可能只能凭主观经验判断,而在这个新时代,我们可以通过机器训练出“虚拟记者”告诉我们答案。

我们选用了自2008-09赛季开始到上赛季为止10个赛季的比赛数据和MVP评选的投票结果,通过人工神经网络训练出了一位尽可能接近实际投票记者思考方式的“虚拟记者”,再告知“他”本赛季截止目前的比赛数据,让“他”为我们选出截止目前的MVP。这里要强调的是,我们并非通过数据来计算出“谁应该当选”,而是计算出“谁最有可能得到最多的记者选票”。下面让我们来看看开赛两周以来“MVP指数”最高的十位球员。

MVP指数0.648,排名第十——尼古拉-约基奇

场均21.5分10.3个篮板6.8个助攻1.2个抢断1个盖帽,真实命中率69.4%,率队5胜1负。

MVP指数0.661,排名第九——乔尔-恩比德

场均26.4分11.9个篮板4.1个助攻2.3个盖帽,在场时能帮助球队百回合多赢11.2分,率队4胜3负。

MVP指数0.719,排名第八——德马尔-德罗赞

场均28.3分6个篮板8个助攻1.3次抢断,在场时能帮助球队百回合多赢10.8分,率队4胜2负。

MVP指数0.815,排名第七——达米恩-利拉德

场均30.8分5.2个篮板5.8次助攻,真实命中率63.9%,率队4胜2负。

MVP指数0.947,排名第六——扬尼斯-阿德托昆博

字母哥目前率队6战全胜(缺席一场),场均拿下25分14.2个篮板5.7次助攻1.7次盖帽,在场时球队百回合净胜分高达18.5分。字母哥在本赛季出场的六场比赛里场均在篮下5尺以内出手12.5次,联盟第一,命中率69.3%。

MVP指数0.998,排名第五——布雷克-格里芬

格里芬在新赛季场均砍下28.4分10个篮板4.6次助攻,真实命中率60.5%,在场时能帮助球队百回合多赢下恐怖的26.6分,在庄神低迷的赛季初期,以一己之力带领球队拿下4胜1负。最爆炸的是在对阵费城76人的比赛里,他面对恩比德砍下50分14个篮板6次助攻的个人生涯新高。

MVP指数1.139,排名第四——史蒂芬-库里

库里截止目前场均32.5分联盟第一,连带砍下5.4个篮板5.5个助攻1.3个助攻,场均命中率三分6个,命中率高达51.6%,真实命中率72.6%。在场时球队百回合净胜分16.1分。此前对阵华盛顿奇才的比赛中,库里单场命中11个三分,32分钟里狂砍51分,三节打卡。这种惊人数据让我们不禁回想起73胜赛季的库里。勇士目前也打出了7胜1负的不错开局。

MVP指数1.195,排名第三——科怀伊-伦纳德

伦纳德代表猛龙出战的比赛里26.6分8个篮板3个助攻1.6次抢断,真实命中率59.9%,在场时能帮助球队百回合多赢21.6分。出战5场全部取胜。相比较其他MVP有力竞争者,伦纳德没有打出非常劲爆的单场数据,但他一直稳定发挥,尤其是在防守端,他在场时,球队百回合失分仅有102.2分,全队主要轮换中最好,毫无疑问是联盟中攻守两端兼顾最好的球员之一。

MVP指数1.32,排名第二——安东尼-戴维斯

浓眉哥开赛以来场均砍下27.3分13.3个篮板4.8个助攻2.5个抢断3.8个盖帽,真实命中率59.9%。出战4场全胜。他最大的价值可能体现在鹈鹕在他出战的比赛里摧枯拉朽无往不胜,而他一旦缺阵,便两战皆墨,比赛影响力非常直观。数据上更是如此,浓眉哥在场时鹈鹕百回合能多赢34.1分,极其恐怖。

MVP指数1.44,排名第一——凯文-杜兰特

杜兰特出战8场,场均28.3分7.5个篮板6.1个助攻数据非常全面,真实命中率65.1%也是一如既往。对阵纽约的比赛里,他24投17中,三分9投5中,高效砍下41分。在场时能帮助球队百回合多赢下21.5分,勇士队内第一。在我们的第一期虚拟记者投票中,战胜表现抢眼的队友库里夺得MVP指数第一的宝座。

以下内容为人工网络算法的详细介绍:

看到这里,一定有球迷很好奇,这样的“虚拟记者”具体是怎么训练出来的。在篮球数据相关的探索工作里面,最常见的有两类工作:

一是通过对数据进行统计以及基于统计的数据对球员进行对比,除了最基础的boxscore,我们还会结合对比赛的理解和分析设计更复杂的数据来更准确地解释和比较球员的某些方面的表现,例如之前我们所做“修正队友真实命中率影响”,能从数据层面清楚的揭示“库有引力”这种现象的客观存在。

另一种,是寻找数据之间的相关性,探寻数据之间的联系,在经过更深入的工作之后,发现一些影响比赛的因素。例如,我们之前发现,大学球员相比较他们NCAA时期的三分命中率,罚球命中率和他们在NBA的三分水平有着更强的相关性。

MVP的预测就属于第二种,我们通过寻找过去的数据和已知的MVP得主之间的关系,来预测未知的MVP得主的可能。具体如何预测可以分成三大部分:

1.通过对数据的分析来选择能描述数据的模型

2.通过过去的数据来学习得到具体的数学关系

3.通过我们得到的模型,和已有的数据来预测结果

最简单的情况我们可以假设已知的输入为X,而我们想要预测的结果为Y。

图上的这些蓝点就是过去已知的一系列数据和结果,这看起来可以用一个简单的线性模型来解释:

Y=a*X+b

根据这些数据,我们可以求出一个具体的a和b来,就是图上的红线,也就是我们所说的具体的数学关系,一个预测模型。这个时候只要知道X,就可以得到Y,而Y很大可能是接近于真实的结果的。下面我们就尽量通俗的来给大家解释这几步在预测MVP上具体是如何操作的。

选择模型

以前面举过的简单的单输入线性模型为例,X是我们的输入,它可以是球员当赛季的场均得分(实际当然不仅仅通过场均得分),Y是我们的输出,也就是我们想要获得的MVP预测结果,这里可以是我们为了结果更贴近现实设计的某个“MVP指数”。那么从直观感觉上来说,场均得分和MVP指数不太可能是这样简单的线性关系,X从场均5分涨到场均10分带来y的变化与x从场均30分涨到场均35分带来y的变化是不一样的,因为如果一个球员场均得分很低,那他的场均得分对最后是否获得MVP几乎不会有什么影响,这样X和Y的关系有可能如下图绿线或者蓝线的非线性形式所示。

当然,我们不可能仅仅用一个场均得分就预测MVP,用其他“某一个”数据也是不可能的,这显然应当是一个多输入单输出模型。我们的输入将选择,常用的所有BOXSCORE,也就是常说的基础数据(具体处理的时候场均得分和单位时间得分均会被考虑),也会考虑例如真实命中率,篮板率,助攻率等常见的高阶数据,出勤率,球队胜率自然也会被考虑进去。这里就有一个疑问了:这些数据就能反应球员的价值么?这里我们需要声明一点,我们预测MVP是“记者投票选出的MVP”,而不是我们分析认为“应该夺得MVP”的人,这两者并不相同,我们选取这些数据,而不是采用进行更深入分析的数据,是因为目前而言,绝大部分记者,评论员对数据的理解程度仅止于此,只有少数评论员了解更全面的数据分析方法。

在输出端,我们需要的结果是球员在某一年是否获得MVP,但这样有个问题:每年几百名球员里面只有一个MVP,而且在没有获得MVP的球员里面也会含有MVP的强力竞争者,这样一刀切的划分方法不是特别适合。因此我们定义了一个MVP指数作为问题的输出:

MVP指数=m * 是否获得MVP选票 + MVP得分/当年可能获得的得分

这里面我们通过验证集上的结果选择m=1 。以2015-2016库里全票MVP赛季为例,库里获得了1310分,当年可能的最高得分就是1310分,因此库里当年的MVP评分就是1*1 + 1310/1310 = 2;威少获得了486分,因此威少的MVP评分是1*1 + 486/1310 = 1.371;威金斯没有获得MVP选票,MVP评分就是0。

前面我们已经讨论过,这个预测模型不是一个线性模型,而我们并不清楚具体的非线性的形式,因此我们采用通用性更强的模型——神经网络,这类模型是一种自适应系统,具备学习功能,可以从数据中自动拟合出数据之间关系的具体形式。神经网络的基本结构如下:输入的变量先是通过计算激活中间隐层的神经元,再通过隐层的神经元计算得到最后要预测的输出。实际中使用我们可以调整神经网络的层数和神经元个数。神经网络的表达能力非常强,理论上的分析表明:只要神经元的个数足够多,单隐层的神经网络可以拟合任意形式的函数。

训练模型

在确定了模型的具体形式后,我们就可以从已知的数据中去训练模型。如果我们同时知道输入(球员当赛季的数据)和输出(当赛季的MVP投票结果),那我们可以通过调整模型来使得模型在训练集上的预测效果最好。

但这样的过程可能会出现问题,以下图为例:横轴x和纵轴y的关系是线性的(黑线),实际数据有其他随机因素的影响,所以得到的数据如黑点分布所示,这样的话如果我们用很复杂的模型去拟合黑点,总能得到一个模型能完美符合(如蓝线所示),但得到的模型与实际的模型相去甚远,因为模型过分去凑已知的数据点了,这也叫过学习/过拟合。因此我们在实际做的过程中还会通过对模型添加约束等方法来避免。

在这里,我们采用2008年到2018年这十个赛季的数据和MVP投票结果作为已知的训练数据(训练集)来训练模型。

评价模型

在我们完成了训练之后,需要一个办法来判断模型是否合理,而在我们建模时是不知道2019年MVP结果的。我们可以用过去赛季的结果来判断预测的效果,但由于过学习的存在,我们不能直接用训练集上的效果来衡量不同模型之间的好坏,例如上图中蓝线对应的非线性模型在训练数据上的表现就比真实的模型要好。更合适的评判方法是把训练数据中划出来一部分作为测试数据,在测试数据上比较各种模型的优劣。

在这里,我们采用的是十折交叉验证的方法:分别保留某一年的数据作为测试集,用其他九年数据来训练,在测试数据上测试结果。比如,我们用2008年到2016年的数据来对模型进行训练,然后用得到的模型来预测2017年的MVP结果,最后和实际的2017年的评选结果来进行对照,验证模型的有效性。应当注意的是,对于神经网络这类比较复杂的模型,另一种常用的方法是把数据切成训练集、验证集和测试集,在训练集上训练,在验证集上决定训练什么时候停止和选择最优的模型结构和大小,在测试集上测试最后结果。而在这次任务中因为选择的结构不算复杂,也为了方便与线性模型比较,我们采用的是上述的十折交叉验证的方法。

我们分别采用了线性模型和非线性的神经网络模型,得到以下结果,表中深蓝色部分代表当年的MVP,浅蓝色代表MVP得票前五,旁边的是预测的MVP评分。要注意因为模型不可能完美符合现实的情况,所以我们一般不会直接按照上面的规则来把分数换算成得票率,而是通过相对的排序来分析得到的结果。

我们可以看出,神经网络的预测结果要明显好于线性模型的预测结果,且神经网络的预测结果和现实的贴近程度很高,除了2011年的MVP在模型看来应当是詹姆斯以外(这一年的评选可能是过去十年争议最大的),其他全部命中,前五的预测也大体正确。

我们对比预测结果的具体排名和现实投票的结果还能进一步进行分析,来评估我们模型所存在的缺陷,例如:

1.我们还不能处理当两名高产出球星在同一支球队时,对他们的MVP得票产生的影响,也就是所谓的“分票”现象。比如2017年的库里和杜兰特,在预测结果中得票率高于现实。事实上,这也是一个几乎难以真正解决的问题,因为在过去,几乎很难看到同一支球队有两名MVP级的球员正处于运动生涯的巅峰时期,因此我们很难用过去的数据来训练模型懂得如何面对如今这种情况。

2.我们选用的数据对防守的描述较少,尽管MVP投票中防守端的表现几乎会被忽略,过去几年的MVP像哈登,威少也从来不是优秀的防守球员。但在个别年份,会有一些球员的防守作用在舆论中被特别强调,从而影响投票结果。比如,2014年的诺阿,2016年的伦纳德都因此在现实中获得了比预测结果更多的投票。

3.我们无法处理“故事性”所带来的影响(包括球场外的影响),比如2011年,两连MVP后的詹姆斯因为决定1.0而在记者投票中受到了负面影响,前面第一点中的两名MVP竞争者同处于一队时会严重影响得票的现象也是基于这方面的原因,比起那些孤胆英雄,记者们往往不太愿意认可队友非常优秀的球员所达到的赛场成就。

不过,我们的模型也会与时俱进,在之后不断训练修正,尽可能的接近真实结果。

撰文&图表:篮圈即是原点

责编:一乔

本文图表为篮圈即是原点为腾讯体育独家制作,未经许可严禁转载