返回列表

Public 17th place overview

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

开始: 2019-10-09 结束: 2020-01-06 赛事预测 数据算法赛
Public 17th place overview

公开第17名方案概览

作者: hmdhmd (MASTER) | 比赛排名: 11 | 点赞数: 30

[数据标准化]

df['S'] = df['Dis']*10

主办方说明:

Dis measures time covered in the most recent window of player tracking data.
Given that tracking data roughly covers 10 frames per second,
Dis corresponds to distance traveled in the recent 0.1 seconds.
Note that speed and acceleration are directly calculated using Dis (this is done in the data pre-processing)

(译文:Dis 衡量的是最近窗口期内球员追踪数据所覆盖的时间。鉴于追踪数据大致覆盖每秒 10 帧,Dis 对应于最近 0.1 秒内行进的距离。注意,速度和加速度是直接使用 Dis 计算的(这是在数据预处理中完成的)。)

[特征工程]

我创建了大约 300 个特征。

  • N 秒后跑卫与其他球员之间的最小距离
  • N 秒后跑卫与其他球员之间的最小 (距离/S)
  • N 秒后跑卫周围有多少球员(方形、圆形区域)
  • ...等等
# N 秒后球员的位置
df['X_after_N_seconds'] = df['X'] + df['S'] * np.cos(np.deg2rad(df['Dir'])) * N
df['Y_after_N_seconds'] = df['Y'] + df['S'] * np.sin(np.deg2rad(df['Dir'])) * N

[建模]

  • 使用分层 K 折交叉验证,共 5 折
  • 将目标变量分箱并视为分类任务

神经网络 (NN) ... CV 0.01234

结构如下:

x = Concatenate(axis=1)([category_features_embedding, num_features])
x = Dense(150, activation='softplus')(x)
x = Dropout(0.5)(x)
x = Dense(100, activation='softplus')(x)
x = Dropout(0.25)(x)
predictions = Dense(num_classes, activation='softmax')(x)

Lightgbm ... CV 0.0125

使用保守的参数。

例如:'num_leaves': 10, 'max_depth': 3, 'min_data_in_leaf': 150, 'max_bin': 64

[后处理]

这在 LB(公开排行榜)上带来了 +0.00005 的提升。

例如,如果码线是 30,可能的推进码数在 -30 到 70 之间。

max_yard = 99 + 70
min_yard = 99 + -30

pred[max_yard-1] += pred[max_yard:].sum()
pred[max_yard:] = 0

pred[min_yard+1] += pred[:min_yard].sum()
pred[:min_yard] = 0

[最终提交]

对 2 个神经网络和 1 个 LightGBM 模型的结果进行平均。

[无效的尝试]

・预测异常值
我认为准确预测长码数会带来很大的提升。但我没能成功。

・使用 2017 赛季的 A 数据
这导致了我的模型过拟合。我该如何处理 2017 年的 A 数据呢...?

同比赛其他方案