第6名方案:队伍嵌入
第6名方案:队伍嵌入
作者:AxotZero | 比赛排名:第6名
大家好,这是我的工作成果:Notebook
恭喜我获得了第一枚金牌,虽然离奖金只有一步之遥🥺。不过,我的方法在 March Machine Learning Mania 2022 - Women's 比赛中仅获得了 659 名中的第 472 名。
据我所知,我的方法与以往的工作有所不同,大多数以往的工作都是通过特征工程来添加和聚合特征,作为常见机器学习模型的输入和目标。在我的工作中,我尝试训练给定 team_id 的队伍嵌入,并让模型根据给定的两个队伍嵌入来预测比赛结果。
以下内容摘自我的 notebook,用以说明我的方法。
模型

- 模型目标:
- 输入:
- team_emb:训练好的嵌入,代表给定 team_id 的嵌入,使用 torch.nn.Embedding() 初始化。
- 输出:
- team1_win:队伍1是否赢得比赛
- team_info:比赛详细结果的缩写,包含 ['Score','FGM','FGA','FGM3','FGA3','FTM','FTA','OR','DR','Ast','TO','Stl','Blk','PF']
数据
- 训练数据:
- RegularSeasonDetailedResults.csv
- 验证数据:
- NCAATourneyDetailedResults.csv
预处理
- 复制数据并使其对称,以消除胜负方的影响。
- 添加特征 "is_win",表示队伍1是否赢得比赛。
- 应用分位数变换将 team_info 转换为正态分布。
训练
- 沿时间线训练一个 epoch。
- 一个 minibatch 是具有相同 'Season' 和 'DayNum' 的数据。
- 队伍嵌入每天都会更新。
未来工作
- 应用 GNN(图神经网络),让两支队伍的单场比赛结果影响其他队伍,并增强模型应用队伍间关系的能力。