返回列表

2nd Private LB/ 3rd Public LB Solution - Transformer

356. NFL Big Data Bowl | nfl-big-data-bowl-2020

开始: 2019-10-09 结束: 2020-01-06 赛事预测 数据算法赛
第2名 Private LB/ 第3名 Public LB 解决方案 - Transformer
作者: Patrick Yam (Grandmaster)
比赛排名: 第2名 (Private LB) / 第3名 (Public LB)

数据清洗

众所周知,2017年的数据与2018年不同,数据清洗在本次比赛中非常重要。

  • 方向: 2017年数据有90度的旋转。
  • A (加速度): 我找不到很好的标准化A的方法,于是我用了均值替换2017年的A数据,令人惊讶的是这让我的LB分数提高了0.0002。
  • S (速度): 如果我们观察2018年的数据,可以看到S与Dis(距离)呈线性相关。
    2018 Data S vs Dis
    然而2017年的数据拟合得并不好:
    2017 Data S vs Dis
    通过对2018年数据进行线性回归拟合,得出的系数是9.92279507,非常接近10。因此最终我对于2017年和2018年的数据都用 10 * Dis 来替换S。这也让我提升了0.0002的分数。

特征工程

总共使用了36个特征:

['IsRusher','IsRusherTeam','X','Y','Dir_X','Dir_Y', 'Orientation_X','Orientation_Y','S','DistanceToBall', 'BallDistanceX','BallDistanceY','BallAngleX','BallAngleY', 'related_horizontal_v','related_vertical_v', 'related_horizontal_A','related_vertical_A', 'TeamDistance','EnermyTeamDistance', 'TeamXstd','EnermyXstd', 'EnermyYstd','TeamYstd', 'DistanceToBallRank','DistanceToBallRank_AttTeam','DistanceToBallRank_DefTeam', 'YardLine','NextX','NextY', 'NextDistanceToBall', 'BallNextAngleX','BallNextAngleY', 'BallNextDistanceX','BallNextDistanceY','A']

交叉验证

训练时始终包含2017年的数据,对2018年的数据按周进行3折分组,评估时仅使用2018年的数据。通过这种方式,CV分数与Public LB分数非常接近。

模型

Transformer(2层编码器 + 2层解码器),大量的注意力头是关键。

Model Architecture

模型集成

  • 优化器: RAdam + lookahead
  • 轮数: 30
  • Batch Size: 32
  • Weight Decay: 0.1
  • 集成方式: 快照集成,选取第 11, 13,...,17, 29 轮的模型。
  • 学习率调度器: 第 0-10, 12, 14,...,28 轮使用 8e-4;第 11, 13,...,29 轮使用 4e-4。

由于我们只有4小时的CPU训练时间,快照集成似乎是一个完美的选择,因为它不会增加训练时间,并且明显优于单一模型。

在我的最终提交中,我重复训练(使用所有数据)了11000秒和9000秒(安全模式)。

同比赛其他方案