仅根据同一场比赛的先前数据预测足球比赛的获胜者

Posted

技术标签:

【中文标题】仅根据同一场比赛的先前数据预测足球比赛的获胜者【英文标题】:Predicting Football match winners based only on previous data of same match 【发布时间】:2013-03-08 23:06:12 【问题描述】:

我是一个超级足球迷,对机器学习也很感兴趣。作为我的 ML 课程的一个项目,我正在尝试建立一个模型,根据主队和客队的名字来预测主队获胜的机会。(我查询我的数据集并根据之前的比赛创建数据点两队之间)

我有所有球队几个赛季的数据,但是我有以下问题,我想提出一些建议。 EPL(英超联赛)有 20 支球队在主场和客场比赛(总共 380 场比赛)季节)。因此,每个赛季,任何 2 支球队只交手两次。

我有过去 10 多年的数据,因此两个团队有 2*10=20 个数据点。但是我不想超过 3 年,因为我相信球队会随着时间的推移发生相当大的变化(曼城、利物浦),这只会给系统带来更多错误。

因此,这导致每对团队只有大约 6-8 个数据点。但是,对于每个数据点,我确实有几个特征(最多 20 多个),例如两支球队的全场进球、半场进球、传球、射门、黄球、红球等,因此我可以包括最近的形式、最近的主场等特征表格,最近离开表格等。

但是,仅使用 6-8 个数据点进行训练的想法对我来说似乎是不正确的。关于如何解决这个问题有什么想法吗?(如果这首先是一个问题,即)

谢谢!

编辑:FWIW,这是我在项目完成时编译的报告的链接。 https://www.dropbox.com/s/ec4a66ytfkbsncz/report.pdf 。这不是什么“好”的东西,但我认为我设法引出的一些观察结果非常酷(比如我的预测对德甲联赛非常有效,因为拜仁一直赢得联赛冠军)。

【问题讨论】:

非常有趣。您的数据集是否公开,以便其他人也可以进行试验? 我正在使用这些football-data.co.uk/data.php @keithxm23 您使用了哪些工具? WEKA 还是快速矿工? @user2137186​​ 我使用 WEKA 进行初步分析,然后最终编写了自己的 AdaBoost 作为最终报告。 @keithxm23 您的 Github 上的数据集包括所有内容,甚至包括投注赔率……您为什么使用它? 【参考方案1】:

不知道这是否仍然有用,但全场进球、半场进球、传球、射门、黄球、红球等功能是您想要的新比赛所没有的功能进行分类。

我会将其视为分类问题(您希望将匹配分类为 3 个类别之一:1、X 或 2)并添加更多功能,您也可以将这些功能应用于新匹配。即:失踪球员的数量(由于受伤/红牌),每支球队在比赛开始前的连续胜/平/负数,即主队(已经提到过),进球数最近几场主客场比赛等等……

有 6-8 场比赛才是真正的问题。这个数据集非常小,会有很多过拟合,但如果你使用我提到的那些特征,我认为你也可以使用旧数据。

【讨论】:

【参考方案2】:

我有一些类似的系统 - 源数据的良好基础是 football-data.co.uk。 我为每个联赛使用了最后 N 个赛季并建立了一个模型(相信我,3 年以上是必须的!)。取决于您的标准函数 - 如果标准是最合适的或最大的利润,您可以建立自己的预测模型。

要知道的一件非常好的事情是,每个联赛都是不同的,而且博彩公司在比利时最热门的主场获胜赔率与在第 5 届英格兰联赛中给出的赔率不同,例如,您可以在其中找到真正有价值的赔率。

从中,您可以编译有趣的模型,例如betting tips,以在特定比赛中击败庄家,使用您的模式并进行价值投注。或者,您可以尝试尽可能多地追逐获胜技巧,但可能会赚得更少(即使获胜的次数越少,平局也会赚很多钱)。

希望我给了你一些想法,更多请随时提问。

【讨论】:

【参考方案3】:

这是一个有趣的问题,我认为没有唯一的解决方案。不过,如果我处于你的位置,我可以尝试一些小事。

我分享您关于每节课大约 6-8 分的担忧,因为数据太少而无法建立可靠的模型。所以我会尝试对这个问题进行一些不同的建模。为了为每个班级提供更多数据,而不是 20 个班级,我将只有两个(主场/客场),我会添加两个特征,一个用于主场球队,另一个用于客场球队。在该设置中,您仍然可以预测哪支球队会在主场或客场比赛中获胜,并且您的问题有更多数据可以产生结果。

另一个想法是从其他欧洲联赛中获取数据。由于现在球队是一个特征而不是一个类别,它不应该给您的模型添加太多噪音,并且您可以从额外的数据中受益(假设这些特征在其他联赛中有效)

【讨论】:

嘿,感谢 Pedrom 的输入。是的,我想过以这种方式对我的数据进行建模。这将允许我每个季节拥有大约 380 个数据点,并且我可以使用数千个数据点.然而,这将解决的问题只是“主队赢得比赛的机会”。它会返回相同的值,例如,3rd Division 球队对阵冠军联赛球队或任何球队对阵任何其他球队所有.. @keithxm23 嘿,很高兴收到你的回复……“主队赢得比赛的机会”,不一定。鉴于您的功能包括主队和客队(如果您将每个分区作为附加功能更好),那么输出将显示为“主队赢得比赛的机会鉴于该主场球队是A,客队是B”。有意义吗? 哦!因此,您的意思是,对于主队,根据其最近的主场形式预测获胜的机会,然后对于客队,根据其最近的客场形式预测获胜的机会..然后比较这两个变量并做出预测。这是一个非常好的主意.. 所以我在此之后考虑如何将知识也包括在内,特别是关于两支球队(A 和 B)之前的比赛,因为我相信这也会有巨大的价值。所以一个我想到的想法是,在计算了两支球队的“主场”和“客场”之后,还要计算每支球队的表现。.. ..在那些促成“主场”和“客场”的比赛中,每支球队的表现如何(即 A-vs-B 和 B-vs-A)......对你有意义吗?如果是这样,您认为这是一个好主意还是您能想出一些更好的方法来添加有关团队(A,B)特定比赛的知识。 我认为你走在正确的轨道上 :) 这对我来说绝对有意义。我可能有一些其他的想法,但不一定更好,这是一个尝试看看效果如何的问题。

以上是关于仅根据同一场比赛的先前数据预测足球比赛的获胜者的主要内容,如果未能解决你的问题,请参考以下文章

球队比赛预测

高级查询 - 选择,按条件求和并返回累加值

预测球队比赛成绩

预测球队比赛成绩

预测球队比赛成绩

预测球队比赛成绩