人工智能

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

想必篮球爱好者们都非常关注今年的NBA季后赛,MVP的奖项投票结果尚未出炉,但估计各家球迷们心中各有定论了。所以我们来用机器学习预测一下今年MVP奖项的结果。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

哈登(James Harden)和字母哥(Giannis Antetokounmpo)

收集数据

我找到了1968-69赛季每个赛季的篮球参考数据,但是我只使用了1980-81赛季的数据,这是第一个媒体投票的赛季,在此之前是由球员投票的。下面是2015-16赛季数据的一个例子。

这是第一个也是迄今为止唯一一个被一致投票选为MVP的球员案例(每个投票者都给了他第一名投票)。

除了上表中的数据外,我还搜索了一些不可用的数据的配置文件。例如BPM、PER、TS%在后面的部分中的更多信息。

但我建议您不要再次抓取它,因为数据已经被检索,可以在我的 Basketball_Analytics/mvp_votings.csv at master · danchyy/Basketball_Analytics · GitHubNBA MVP votings through history | Kaggle中找到。

定义问题

有了这些数据,需要定义将要解决的问题。由于这是一项排名任务,所以没有任何现成的算法可以解决这个问题。我将试着通过回归问题来简化这个问题。

我们任务的目标值将是上表中的Share列。这个数字总是在0到1之间,代表每个参与者在投票中赢得的点数。

由于数据结构的方式,我们基本上试图模拟媒体如何投票给本赛季的球员。 当然,回归对于解决这样的问题非常有用,但这里的问题在于极不平衡的数据。在奖励份额值的直方图上,您可以看到超过一半的示例介于0.0和0.2之间,这可能会导致模型出现问题。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

功能和特征选择

在开始训练和验证模型之前,来解释一下这些简单的功能选择过程。

pts_per_g、ast_per_g、trb_per_g、stl_per_g、blk_per_g是简单的统计数据。每场比赛得分、助攻、篮板、抢断和盖帽。mp_per_g代表每场比赛的分钟数,win_pct代表球队的胜率(一个赛季有82场比赛,所以这个值代表games_won除以games_total)。

Fga、fg3a、fta是投球数,尝试投中三分球和罚球,fg_pct、fg3_pct、ft_pct代表投篮命中率、三分球命中率和罚球命中率。

现在我们来看一些高级统计数据。

PER代表玩家效率等级,基本上是所有正面和负面简单统计数据的计算。

BPM代表Box Plus Minus,是评估球员质量和对球队贡献的高级统计数据。与PER相比,它需要更多基于团队的统计数据。

TS_PCT是True Shooting Percentage,代表投篮命中率。计算方法相当简单(实际上包含在上面的统计数据中)。这是公式:

PTS /(2 *(FGA + 0.44 * FTA))* 100

USG_PCT是使用百分比的缩写,是球员在球场上使用的球队比赛的估计值。以下是计算。

最后,WS和WS_per_48代表贡献率和每48分钟的贡献率。该统计数据试图将团队成功划分给团队成员。

特征选择

目前我们所谈到的统计数据看起来非常相似,,因此我们继续进行几个特征选择过程,以避免出现问题。

第一个是使用互信息找出变量之间的关系,这是通过使用sklearn的特征选择包完成的。

ws:0.2884 
per:0.2811 
ws_per_48:0.2592 
bpm:0.2013 
pts_per_g:0.1482 
usg_pct:0.1053 
win_pct:0.0973 fta 
:0.0948 
ts_pct:
0.0872 fga:0.0871 
trb_per_g:0.0695 
mp_per_g:0.0668 
fg3a:0.0355 
ft_pct:0.0311 
ast_per_g:
0.0279 stl_per_g:0.0139 
fg_pct: 0.0089 
blk_per_g:0.0066 
fg3_pct:0.0000

然后使用随机森林分类器,对随机森林实例进行拟合,找出模型最重要的特征。

ws:0.3911 
win_pct:0.1326 
per:0.0938 
bpm:0.0537 
ws_per_48:0.0428 
fga:0.0368 
usg_pct:0.0310 
ft_pct:0.0263 
ast_per_g:
0.0253 mp_per_g:
0.0251 fg_pct:0.0231 
fta:0.0213 
pts_per_g:
0.0183 fg3_pct:0.0159 
ts_pct:0.0155 
trb_per_g:
0.0153 blk_per_g: 0.0118 
stl_per_g:0.0103 
fg3a:0.0101

最后,我们看得到了特征之间的相关性矩阵。这帮助非常大,因为能够可视化那些功能非常相似,从而带来重复的信息。在某些情况下这些信息对模型没有帮助。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

在上一个图像,您可以查看数据集中所有要素之间的相关性。之后,删除那些高度相关的或基本上代表同一事物的特征,或者可以通过一些标量乘法来表示。

通过上面描述的几个描述的程序和统计定义,将这些特征减少到以下最终特征:

ts_pct 
bpm 
mp_per_g 
pts_per_g 
trb_per_g 
ast_per_g 
stl_per_g 
blk_per_g 
ws 
win_pct

虽然它们之间仍然存在一些相关性,但我们还是使用这些功能,因为它们可能是最合适的。我试着用所有的特性来运行实验,结果导致速度非常慢,结果也更糟,这意味着特性选择是有意义的。

训练和验证

通过使用所有赛季的数据来实现交叉验证,以这种方式训练每个模型并平均每个赛季的结果。

我们使用的指标是回归的均值误差,以得到媒体投票的准确表述。同时我们也对结果进行了排序并测量了排名的准确性,将其用作辅助指标。

对于回归,我使用了以下模型:

  • 线性回归
  • 岭回归
  • 梯度增加回归量
  • 随机森林回归量
  • SVR

我用上面描述的方法用正则和多项式特征(多项式2次和3次)进行实验。在训练过程中,我对0和1之间的数据进行了实验,没有缩放数据,结果并没有太大的差异。

通过梯度增强回归器得到了最佳的结果,该模型保持了前6位(有些模型具有不同的参数或不同程度的多项式)。

完整的结果可以在我的GitHub存储库中看到,它们被放在三个名为reg_results_mse_ordered的文件中。txt, reg_results_sorted_top_1。txt和reg_results_sorted_top_5.txt。

预测2018-2019赛季

最后,这是本赛季的预测。首先展示几个回归模型的结果,这些模型在所有验证分割中具有最佳的均方误差。

梯度增加回归量

该模型具有50个估计量和0.1个学习率,具有二次多项式特征。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

梯度增强回归变量的其他变化也有类似的结果,其中以哈登为首位。此外,markdown pdf转换器非常笨拙,而且会将字母分隔开来(我用markdown创建了一个表,并将其转换为pdf)。

随机森林回归量

该模型具有50个估计量,仅具有交互的第三度多项式特征。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

但是对于一些不同的参数,如100个估计量和只有交互作用的多项式特征的二阶,结果会有所不同。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

Ridge

Ridge是一个正则化的线性回归。值为10且多项式特征为2次的最佳结果。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

线性回归

现在们也使用了正态线性回归,MSE对这个模型非常有用,结果也却相当有趣。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

由于没有正则化,模型可能对一些特征进行了过度拟合,得到了这些结果。这是鲍威尔和乔丹唯一一次进入前五名,所以他们被排除在了下一节的图表之外。

支持向量回归

这是支持向量机的变体,用于回归。 以下是C = 100和γ= 0.001的模型结果。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

此外,由于所有模型都是回归模型,它们当然可以超过值,并超过最大值1.0。即使这并不理想,但由于我们最重要知道的是排名,所以就暂且忽略这一点吧。

2018-19赛季预测

在下图中,您可以根据按MSE指标排序的前50个模型查看前10名球员中每个人的平均得分。

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

哈登和字母哥非常接近,但哈登略占优势。约基奇保持第三的位置。其他人的分数都相对类似,实际上会比这要小得多。

结论

通过本文,我们预测出NBA 2018-2019赛季MVP得主是哈登!但是字母哥也有令人惊艳的表现,媒体很有可能会更偏向于他。

我还没有学会写个人说明!

为什么说BAT也容不下甲骨文员工?

上一篇

滴滴 NewSQL 演进之 Fusion 实践

下一篇

你也可能喜欢

哈登vs字母哥,看AI怎样预测今年NBA最有价值球员!

长按储存图像,分享给朋友

ITPUB 每周精要将以邮件的形式发放至您的邮箱


微信扫一扫

微信扫一扫