关于高阶数据的介绍以及算法(二)

avatar
关注

这里会介绍rapm为核心的算法的具体原理以及一些现在常用的高阶算法的细节(其中有很多没公布就没法介绍了)

1岭回归的贝叶斯解释,以及高阶数据的误差范围

这里肯定不能手打公式了,主要是引用别人的,以及一些谷歌翻译岭回归是一种常用的正则化方法,它寻找最小化RSS和惩罚项之和的方法:


岭回归估计具有贝叶斯解释。假设设计矩阵是固定的。普通最小二乘模型假设响应的条件分布为


假设β的先验分布是βj是具有相同方差的独立正态分布β~N(0,τ^2I),与某个常数 τ相关。这使我们能够计算β的后验分布:

从这个表达式中,我们可以计算出后验分布的模式,也称为后验最大值(MAP)估计值。

可以看出岭回归中的λ= σ^2/τ^2

其中rapm有一种改进型bayesian rapm就是用贝叶斯的方式计算rapm本质上它的最大后验和岭回归一样,但是不知道为啥会更加稳定(我确实不清楚),除了稳定之外我们可以看到它的方差(这里同样引用一下)

每个球员的标准偏差约为每100次控球2至2.5分。可以说只能区分一小部分确实差的比较多的球员,这也是为啥单年的rapm不好使非得引入多年rapm。


二 rapm的改进算法

luck adjust(运气修正)

运气修正对于一年甚至三年的rapm都是有立杆见影的效果的,不过由于爬数据太麻烦我没试过(pbpstats的文档属实不太友好)但是原理还是很通俗易懂的,虽然有进攻防守两部分,但是只要说一半就行。

一半来说在进攻端我们认为什么东西是运气呢?主要是两部分

1 队友罚球命中率(这个没有异议吧)

2 队友三分命中率(不完全)

所以为了做运气修正

1在pbp数据中要把要关注的球员在场时队友多投中的罚球减去,毕竟没人能真的影响队友的罚球

2 对队友命中的三分做处理,这个就比较有争议了,虽然现在有大量数据表明nba球队的三分命中基本只和球员水平有关,不论是创造空位机会还是对手防的更用力实际上对三分命中率的影响不大,当然只是不大不是没有,所以关于三分的调整是这样的。(这里再次翻译一下外网的例子)

伦纳德的队友在他上场时投了780个三分球,命中率41.8%。伦纳德不在场时投了1533个3分,命中率39.5%。以下回归用于达到伦纳德的运气调整后的3分命中率:[ (780 x 41.8%) + (1533 x 39.5%)] / (780 + 1533) = 40.3%。这种方式允许感受到个体的影响,同时限制噪音和小样本量问题。

而防守端做了相似的工作,不同的是作者认为个人根本没办法影响对手的三分命中率,所以和罚球的处理方式是一样的。

数据填充

数据填充实际上已经在上文说道了,(780 x 41.8%) + (1533 x 39.5%)] / (780 + 1533)

其实就是用了数据填充的思想(通过增大分子分母稳定小样本)不过这里的数据填充主要是针对个人数据而不是play-by-play数据的,(例子接着翻译)

在“填充法”下,在赛季的任何时候,都会用一些联赛平均表现的样本来“填充”球员的表现,这就是你对球员未来剩余时间天赋的预测。以三分球为例,邓肯·罗宾逊在2019-2020赛季开始时,三分球命中率为34投17中(50%)。这种表现大概有一些随机性,所以我们用一定程度的联盟平均表现(称为这个数字X)来“填充”分子和分母,以获得以下形式的投影:

expected_fg3_pct = (17 + X*league_average_fg3_pct)/(34 + X)

如果三分球的填充数是240,而联盟平均三分球命中率为0.355,那么我们的预测就变成了:

expected_fg3_pct = (17 + 240*.355)/(34 + 240) = 0.373

因此,罗宾逊的三分球34次尝试,将我们对他三分投篮天赋的估计从.355(联盟平均水平)提高到.373(好的,不是很好的射手)。我认为这也大致符合我们的直觉—— 34次尝试并不是很多,所以我们不能太疯狂,但这仍然是一个好兆头。

填充方法的美丽和优雅之处在于,填充量在整个季节中保持不变。您不需要根据季节的过程使用不同的系数。在任何时候,你只需在球员的投篮中增加240次联盟平均表现的尝试,就可以得到他们未来的预测。早期,240次“填充”尝试完全主导了玩家的投射。但最终,随着样本量的增长,玩家的实际表现会产生越来越大的影响。将这一点应用于罗宾逊,你会得到下面的图表,用红色显示他预计投篮的进度,用蓝色显示他的实际YTD表现。趋势是相同的,但投影自然更保守。

请注意,即使是更保守的预测最终也同意罗宾逊是一名精英射手。

另外240这个填充数字是个很有意思的数据,它越大实际上说明这个个人数据的波动越大,如果是0的话相当于不会对个人数据做调整,至于240具体怎么算的,其实就是代码的问题了(scipy库),这里不多讲了,以下是大多数数据的填充数

正如你所看到的,上场时间非常稳定,因为它们几乎完全是教练的决定,而不是随机性/噪音的问题。另一方面,正负值非常嘈杂。


对于填充数据方面lebron做了进一个改进,它将球员通过聚类的方式分为了Primary Ball Handler,Secondary Ball Handler,Shot Creator,Slasher,Athletic Finisher……等等一堆,

核心思想就是三分投手应该与其他球员的三份填充预期不一样,也很符合逻辑,通过这种方式使得面板数据更加稳定

发布于加利福尼亚阅读 5570

全部回复

discusser-avatar

虎扑JR0532679775

· 广东

干货,好文。艰深,枯燥。

亮了(2)
回复
discusser-avatar

西北懂球帝以死

· 新疆

兄弟得来个总结,如果一个球员所有高阶数据都是第一,或者很出色,那么他表现一定也是很出色的球员

亮了(0)
查看回复(2)
回复