356. NFL Big Data Bowl | nfl-big-data-bowl-2020
感谢主办方举办了如此有趣的比赛!这是我第一次将神经网络(NN)作为主要模型,在这次比赛中学到了很多 ;)
在快速浏览了训练数据后,我觉得这次比赛与“CHAMPS Predicting Molecular Properties”竞赛非常相似——所以我决定在比赛早期阶段就使用 Transformer 模型。
我的架构包含 3 层逐点卷积层(类似 PointNet),加上 4 个 Transformer 编码器,后面连接几个全连接层。我尝试了多头注意力机制,但对我并没有效果。Transformer 的实现基于 PyTorch 1.3,但稍作修改(将 post-LN 架构改为 pre-LN,详见此处论文)。
我总共使用了 17 个特征。除了 YardLine 和 Distance 外,每个球员都计算了 15 个特征(因此 15 x 22 的特征向量被输入到 Transformer 编码器中)。所有特征都很简单,但最重要的是相对于跑卫(Rusher)移动方向的角度。
这种基于跑卫方向的极坐标给了我很大的提升(约 0.0003)。我还计算了给定时间 0.001s 后的这个角度,并计算 θ(t) 和 θ(t+0.001) 之间的差值。
使用的所有特征列表:
就是这样 :) 使用了交叉验证(CV)和对抗验证来移除不相关或可疑的特征。
除了标准的 GroupKFold 外,我还尝试了时间分割验证(讨论见 此处)。两者对我都很有效,但验证分数差异很大。所以我从每种验证策略中各选了一个用于最终提交。