预测比赛结果 - 如何让球队 1/2 可互换

数据挖掘 机器学习
2022-02-18 15:16:32

目前我正在编写一些模型来预测团队比赛的结果,但是我很难对团队进行特征化,以便团队的顺序无关紧要。

例如,目前我复制所有数据并将其反转以减少排序对结果的影响,但这并不完美。如果我有“Ravens vs Panthers = Panthers win”,我也会输入“Panthers vs Ravens = Panthers wins”。

然后,当我转到我的模型并询问 Panthers vs Ravens 和 Ravens vs Panthers 的输出时,我得到了不同(但相似)的结果。例如,Panther 获胜的概率可能是第一个中的 75%,第二个中的 72%。

否则我怎样才能使其 100% 模棱两可,哪个团队是团队 1,哪个团队是团队 2?

2个回答

主场优势在体育运动中非常重要。如果你总是把主队放在第一列,你的模型会相应地调整偏差项。几年来,我一直在为 NBA 和 MLB 模特成功地做到这一点。使第一支球队成为主队也消除了对明确的主场指示变量的需要,并且您将能够像您所描述的那样使用“一半”的数据。

对于像超级碗这样的罕见中性游戏,您需要创建数据的镜像。换句话说,为每场比赛呈现两行(团队-A,团队-B;团队-B,团队-A)。到了给你的模型打分的时候,你可以随意选择两条记录之一,因为它们代表了同一件事的镜像。我以前在疯狂三月篮球比赛(所有中立球场)中这样做过,今年(2016 年)我的疯狂三月模型在 Kaggle 中排名前 10%,因此该技术有效。

主场优势只是建立良好预测模型所需的变量之一,但这是另一个问题的答案。

最简单的解决方案是将“Team A vs Team B”和“Team B vs Team A”的预测平均作为输入,并考虑算法的这一部分。在通过考虑这两种安排来增加训练数据时,您已经在做类似的事情了。该解决方案也被图像分类模型使用,该模型可以输出来自输入图像的多个随机补丁的平均预测,以获得更好的平移不变性。

本质上,您面临的问题是维度之一 - 输入特征通过某种对称性联系起来(例如,A 队的防守强度等同于 B 队的防守强度),但这并未编码到学习模型中。根据您的模型类,您可能能够链接权重或对特征进行调整以更好地编码对称性。但这比创建一个预测两种输入安排的简单元模型要多得多。

另一个简单的替代方法是在特征之间应用排序算法,例如哪个是团队 A 和哪个团队 B 呈现给 ML,预测由特征值的某些函数决定(例如,始终使团队具有最高的第一个团队的特定预测功能)。这使得训练和预测具有确定性,并避免了需要同等对待团队的问题。实际上,它打破了对称性,而不是“团队 A”和“团队 B”的特征,而是具有“X 最高的团队”和“X 最低的团队”特征,并预测“X 最高的团队”是否会获胜。这种方法的一个缺点是,您选择排序依据的特征或规则会成为您的 ML 例程的元参数。