原作者: lucas winter
链接: https://medium.com/better-programming/predicting-nba-all-stars-e03655021f63
使用 random forest模型
Photo by TJ Dragotta on Unsplash
在我参加大会的数据科学沉浸式项目中,我们的任务是完成几个与数据科学基础相关的项目,每一个项目都建立在另一个项目之上.
首先,我们对SAT和ACT数据进行了探索性数据分析(EDA)。接下来,我们用线性回归法预测了爱荷华州艾姆斯市的房价。然后,我们使用自然语言处理(NLP)和分类模型对两个相似的subreddit帐户的帖子进行分类.
这种稳定的构建最终以完成一个顶点项目而告终,每个学生都必须针对自己选择的主题制定一个问题陈述,并尝试在没有指导的情况下使用整个课程中教授的技能和技巧来解决它.
我的项目
在我的项目中,我想选择一个我不仅对之充满激情而且能让我与众不同的话题.
我的决定很简单:必须是关于运动的。在我的生活中,没有什么比成为一个不屈不挠的体育迷更能带给我快乐和痛苦的了。如果你是亚特兰大队或密歇根大学的球迷,那么你知道我在说什么.
我的目标是解决一个对专业运动队有实际应用价值的问题,并可能提高我所热爱的运动队的决策能力。
问题
尽管获得的数据和信息比以往任何时候都多,但专业运动队的前厅和球探部门仍在努力做出正确的选秀决定。
在职业体育中,选秀中选择合适的球员对球队未来的成功至关重要。这是以一种成本效益高的方式建立团队深度的最佳方法之一,也是决定最佳业余运动员命运的地方。起草一名球员是一门不精确的科学,但是有一种方法可以预测球员未来的成功,这将使球队起草决定变得更加容易,并使他们在竞争中占优势。
在NBA,拥有多个全明星球员的球队已经被证明可以赢得冠军。2019年的NBA冠军多伦多猛龙队有三名前全明星球员在他们的名单上(卡希·伦纳德、凯尔·洛里和马克·加索尔),金州勇士队,这十年最好的球队,在他们的三次总冠军征程中有五名前全明星球员在他们的名单上(斯蒂芬·库里、克莱·汤普森、德雷蒙德·格林、凯文·杜兰特和安德烈·伊古达拉)。
我的目标是建立一个模型,可以预测选秀合格的大学生篮球运动员成为NBA全明星球员的可能性。
多年来,成为全明星的过程已经发生了变化,但目前两支球队的首发阵容都是通过球迷、球员和媒体投票(分别为50%、25%和25%)的加权组合选择的。
预备队由教练员投票选出。我的目的是通过分析一个选秀合格的大学生篮球运动员的哪些特点,来预测他成为全明星球员的可能性。
数据收集和清洗
数据收集和清理是解决任何数据科学问题最耗时、最困难和最重要的部分之一。
对于我的项目来说,这也不例外。我在寻找2005年选秀合格的大学生篮球运动员的资料。这一年高中球员不再有资格绕过大学直接进入NBA。不幸的是,由于数据限制,我只能收集2008年的球员数据。
我收集的数据来自两个来源: Sports-Reference.com 和 Bart Torvik. 在Sports-Reference.com上运行了一个查询之后,我就可以收集NBA选秀名单和全明星赛名单的数据,并将这些数据合并到Pandas数据框中。巴特托维克的数据是通过巴特自己提供的一个JSON文件收集的。
我总共收集了55939个大学篮球赛季的数据。这个数值包括了自2008年以来所有打过大学篮球的球员。如果一个人参加了多个赛季的比赛,那么他们每个赛季都有多个观察结果。国际和高中运动员没有被包括在分析中,因为与大学篮球相比,这些数据并不是一个简单的比较。大学篮球运动员也占NBA球员总数的83%以上(RPI评分).
在数据清理过程中,我确定了哪些球员是被征召的,哪些是全明星赛的。我只在我的分析中加入了选秀球员,因为在过去的10年里,没有一个球员在全明星赛中没有入选。
我还将数据集缩小到只包括一个球员在大学里的最后一个赛季。包括一个球员的所有赛季可能会影响我的目标变量,因为球员会被列为一个全明星赛多次。上个赛季有人在大学里打球往往是他们表现最好的赛季,也是球队前台最看重的。
最终,数据集包括581个大学篮球赛季,其中30个赛季包括全明星球员(目标变量)。为每个球员收集的数据包括了该赛季的许多个人统计数据,以及球员上学的地点、会议、甚至身体测量的信息。下面是我最后一个数据集的片段。
数据集前五名球员
探索性数据分析
在构建模型之前,我需要更详细地了解数据集。
为此,我进行了探索性数据分析。我想看看在给定某个特性的情况下,有多少球员可以打全明星赛,以及有多少百分比的球员可以打全明星赛.
我还研究了连续的特征(玩家统计数据),将那些已经参加过全明星赛的球员和那些不知道他们之间是否有显著差异的球员的数据分开。
我看到的第一个特征是学校的全明星。由于许多学校在过去10年中没有全明星,我决定从我的数据集中删除这个特性,因为它不会为模型提供太多信息。正如你在下面看到的,自2008年以来,只有三所学校产生了超过一个全明星——其中肯塔基州产生的全明星最多。
当今全明星上学的地方
也许通过大学会议来观察全明星能提供更多的相关信息。在我的清洁过程中,我将会议分为主要会议和非主要会议。主要会议包括ACC、Big 10、Big 12、pac12、SEC和Big East。非主要包括其他一切。非主流被列为一个类别,因为大多数参与者往往是从大型会议中起草的.
左边的图表显示了从那个会议中选出的球员中有多少人成为全明星赛的一员。右边显示的是当前全明星在大学期间参加的会议。
结果相当令人惊讶。我没想到非主流会议的全明星比例会高于除了Pac 10以外的所有其他会议(pac10自2011年以来就不存在了)。历史上,ACC是最好的大学篮球会议,这让人震惊地看到他们的百分比最低。
我想看的另一个方面是一个运动员在大学里的比赛年限。从下面的图片可以看出,大多数全明星在第一季或第二季之后就离开了大学。这些球员往往是高中毕业后的新兵,而且更成熟。很少有全明星在大学的最后一个高年级留下来。
对于一个球员来说,在过去的一年里打大部分比赛有多重要?从下图来看,这是非常重要的。 几乎所有的球员在大学最后一个赛季都打了30到40场比赛。凯里·欧文是唯一一个在他被征召入伍前本赛季至少25场比赛没有上场的球员。这表明所有明星在大学里都是健康的,在赛季后期都会上场。
传统的统计数据重要吗?例如,每场比赛的分数是不是一个很好的预测未来成功的指标? 如下表所示,情况可能并非如此。与其他人相比,传统的统计数据对全明星来说只是稍微好一点。他们每场比赛的平均分只高出一分。或许更先进的指标能够更好地说明问题。
1 = All Stars
特征工程
我使用的一些特性在计算中有一些重叠。 例如,罚球命中率(FTM)和罚球未遂率(FTA)用于计算罚球命中率(FT%)。 在消除一些在计算中重叠的特征之前,我计算了Bayesian映射估计值来调整它们的值。在删除FTM和FT a特性之前,我使用先前的知识(过去10年的历史平均值)和似然函数调整了FT%。这为我提供了一个更准确的统计数据,并帮助解释球员的尝试远远少于其他球员。
用Bayes映射估计调整罚球率
建模
在完成EDA之后,我开始了分类建模过程。 我把数据分成训练和测试两部分。训练数据包括2008-2018年的球员,测试集包括2019年NBA选秀的大学生球员。 在选择要包含在分析中的特性后,我首先对训练数据进行训练/测试拆分。然后,我开始使用GridsearchCV构建几个分类模型,以优化最佳超参数。下面是使用的分类模型列表。
- Logistic regression
- KNearest neighbors
- Decision tree
- Random forest
- AdaBoost
评价
使用的最佳模型是random forest模型,它具有最高的准确性和最低的方差,但也具有基于先验知识的最现实和可解释的概率。
我能够正确地预测一个球员在职业生涯中的某个时刻是否已经成为全明星99%的时间在训练场上,94%的时间在测试场上。该模型有点过拟合,在测试集上的表现并不比基线好,但这并不奇怪,因为目标类是如此不平衡。
在查看了模型中的顶级特性之后,我很快就能发现,球员效率指标比传统统计数据更能预测成功。最好的预测指标是BPM,它是对一个球员超过一个联盟平均水平的100次财产的正/负的盒子分数估计。基本上,当一个球员在比赛中,他的球队得分是比对手多还是少?BPM较高的球员往往在NBA表现出色。
显然,传统的统计数据并不能说明全部情况。更重要的是要知道一个球员是如何获得个人数据的,而不是总数据。乍一看,一个每场得分30分的球员看起来很有前途,但如果你深入挖掘,发现他得到了这个数字,因为他投篮次数多,效率低,那么情况可能就不是这样了。
从2008年到2018年,选秀和成为全明星的可能性之间存在着积极的关系(见下文)。选秀权越高,我的模型预测的概率就越高。
这表明,前台大部分时间都做得很好,但也很容易看到异常值和错误。在选秀的前十名中,绝大多数入选者入选全明星队的几率不应该低于20%。他们应该是最好的应征球员。这也提出了一个问题:对于在第二轮(选秀30人之后)入选的全明星球员,球探错过了什么。
德雷蒙德·格林是第35名,但我的模型产生的全明星概率是第五高的。他已经成为三次全明星赛和三次NBA冠军,那么前厅错过了什么?
当你深入挖掘的时候,很容易发现格林有非常高的效率。他的BPM明显高于应征球员的平均水平,他是一名出色的防守球员。他的选秀职位可能已经下降,因为他不是一个伟大的运动员,他离开大学后,他的高年级赛季。
该模型对2019年未公开的数据也有类似的结果。选秀和全明星概率与散布在各地的一些异常值正相关。与2008-2018年类似,大多数球员的全明星概率低于20%。
2019 Unseen Data
该模型预测,锡安威廉森成为全明星的概率最高。在过去的一年里,锡安威廉姆森在大学里是一个超凡脱俗的球员,同时也是第一个获得总成绩的球员。该模型还显示了从早到晚选秀概率范围大于5%的剩余球员。如果历史允许的话,这个选秀中只有三名选手将成为全明星。
2019 All-Star probabilities ranked
排名第二的球员是来自冈萨加的布兰登·克拉克。他碰巧被选为第21名,这不是一个范围内的所有恒星通常采取。与Draymond Green类似,Brandon Clarke的BPM远远高于平均水平,具有良好的防御指标。
看看布兰登·克拉克是否会和德雷蒙德·格林有着相似的职业生涯,成为全明星会让怀疑论者大吃一惊。他开局不错,因为他被评为今年NBA夏季联赛的最有价值球员。
结论和下一步
利用我的模型,前台可以评估大学篮球运动员在被征召前成为NBA全明星球员的可能性。
这是一个工具,可以作为传统侦察的补充。在第二轮选秀中,如果前台可以使用这种模式,像德雷蒙德·格林这样的球员不太可能被选中。我们很快就会看到,我预测的一些更高的可能性是否会证明球探是错的,并在NBA取得成功。
将来,我想收集更多的数据。这包括2008年以后的数据。它还包括新功能的数据。我想包括的一些新特征是球员的高中招生排名,在大学的获胜次数,以及来自NBA联合会的运动测量。我还想收集国际球员的数据,以及那些从高中直接选秀出来的球员的数据。
另一个补充是量化游戏的心理方面。知道一个球员在场上的数据是很好的,但也有其他场外因素可以导致成功。例如,了解一个球员的篮球天赋,了解他们的个性和行为,对于找到一个成功的球员和一个适合某个特定球队的球员至关重要。如果能知道球员是否触犯了法律,那也是件好事。
这是一个非常好的项目,我学到了很多关于数据科学工作流程从开始到结束。我希望以后能提供更多类似的帖子,代码可以在我的GitHub上找到.