公司新闻 行业动态 最新消息

Kaggle NFL大数据碗总结

发布时间:2022-09-19      发布人:admin


  这次参加比赛很可惜,差一名银牌。。。。铜牌区第一名真是最X的结果。谢谢队友。总结了我和@郑恒的部分。

  利用传接球瞬间22名球员的speed,acceleration,dis,orientation以及场地、天气、球员个人信息(身高,体重)等特征预测持球球员(跑锋)跑动的码数。

  进攻方有四次机会推进10码,如果推进10码,称为拿到首功,如果没能推进10码,给对方进攻。

  四分卫QB是进攻组的一员,排在中锋的后面、进攻阵型的中央。他通常是临场指挥的领袖。 四分卫接到中锋发球后,他可以递传、抛长传给跑卫、近端峰和外接员,或自己持球冲锋。

  最近的进攻队员、防守队员与rusher的A,S差以及距离。最近的4个进攻队员、防守队员的A,S平均值与rusher的差,最近的这4个进攻、防守队员在X,Y位置的宽度(极差)。

  rusher距离四分位QB(一般传球球员)的距离,rusher距离防守线中心的距离(这里的中心用简单平均,但是我后来用convex hull找中心,没提高),防守线的防守宽度,防守线的convex hull area

  防守阵型和进攻阵型每个位置的人数以及总人数差,四分位拿球时间,传球时间,以及时间差,主客场分差等等

  包含了很多基础特征以及简单的衍生特征。速度、加速度分解,年龄,BMI,距离yardline或者距离达阵的距离,主场还是客场等等。这里的dense还衍生了很多的类别特征来辅助学习,例如yardline,角度是否大于180度,主场得分是否大于客场得分,第几节,第几个down。

  运动员运动方向可以看做一条射线,运动员是射线上的动点,求出rusher的射线,与所有defender的射线,有几个交点,相交的时候rusher跑了多远,掉分。可能原因是运动方向不断调整,而且卡位的offenser没有很好的考虑。

  追及时间:不管是当成匀速处理,还是考虑加速度,考虑加速度和方向,都是掉分的,但是队友朱哥那是上分的。

  Voronoi 图特征:Voronoi图其实是把图进行划分,划分得到的cell里面的点,距离这个cell里面的基准点距离,比其他cell里面基准点距离近。我取了rusher,defenders, 以及球场四个角(避免越界)作为Voronoi图的基准点,得到rusher的被defenders的区域,通过convex hull求出area。

  根据game id做group kfold,没有做细致分析,失败之处见最后

  分别对进攻队员和防守队员用了transformer建模,也就是当做序列来处理,rusher相当于[CLS] 位置,汇聚了全部信息

  其实就是选出跟rusher特征,速度,位置,角度比较接近的运动员,权重大一些>

  同样是处理A和S,S=10*Dis,为什么?这里给出了分析原因,因为S和A都是通过Dis和传感器采样的数据计算出来的,分析出来是线性关系S和Dis,那么S可能就是平均速度,因为S=Dis/(0.1s) 0.1s=1/10Hz,那么就用10Dis代替speed

  对于A,采用2018年的mu,和std来normalize17年的数据。迫使其分布一样,但是这种线性变换主要是归一化,分布差异还是存在的,处理比不处理强吧。

  2、特征方面比较有特点的是angle特征,主要看看player与rusher形成的角度,与rusher运动方向之间的夹角,看看这个人是不是奔着rusher去的,我们也有一个类似的,但是完全不起作用。

  动态特征:0.5s, 1s, 2s之后的相应特征,假定每个player都按照这个方向跑;

  对于距离和meet time特征,对于defender和offender,计算最近的1,3,6个,同时计算1,3,6个进攻方队友和防守方的差值特征,这些特征输入到NN的rank layer里面

  当时都被当成噪声数据去除了,现在看起来还有点用,按照N, W方向分解wind speed

  似乎FE没做多少,主要是用CNN去捕获空间关系,但是我觉得用GCN会不会更好?

  特征主要是X,Y,Dir, S这些,但是思路还是很赞,主要包含两个部分:

  每一种特征的特征差表示为一个channel,然后pair表示为图像,因此可以用CNN来处理

  S同样是Dir/0.1,因为可能是由于10HZ记录仪造成的数据错误,因此这里用A*(Dis / S) / 0.1替换,这里似乎有点不对,因为s=0.5*a*t^2,时间用平方应该对一些。

  kaggle有两个CPU,每个CPU4个core,两个core是真实的,两个core是超线程模拟的,这样很难实现真正的多进程计算。因此作者对4次bagging的进行了多进程计算,关掉了其他多进程的功能。

  我们也尝试了这种特征,但是就是降低了,可能打开方式不对,或者当时用的是简单MLP架构吧。这个比赛我看top方案,一些人奏效的东西,放到其他人那就是没有用。

  1、在特征上面搞太久了,没有尝试好的NN架构去自动学习特征,毕竟橄榄球这项体育运动不熟悉,很多特征自己搞不来,前排基本撸NN。通过transformer,CNN,GNN自动捕获。

  其实我们用最近邻特征本质上也是一种“注意力机制”,或者说基于距离邻接矩阵的GCN,但是比起NN自动学习的还是有差距。

  2、没有细致的处理17年的S和A数据,除了没有做细致的EDA之外,还没搞清楚到底怎么测出来的S和A,10HZ位置追踪,那么S其实就是0.1s内平均速度。主办方说位置追踪没有问题,问题就出现在采样这里。如果细致留意discussion,应该不难推导出来的。

  3、对于cross-validation一样不重视,17年的数据既然是有问题的,训练的时候overweight,CV的时候不用17年的数据应该是基操了。

  4、data augementation,这个,数据挖掘一般少用一些,下次这种套路还是可以多想想

  5、很多feature,比如future feature,相交feature我们也尝试了,但是降低了效果。有的feature想深一点估计还是有用的,毕竟keras有一定的不稳