2

我有一个学校项目来制作一个程序,该程序使用 Weka 工具对足球(足球)比赛进行预测。

由于算法已经存在(J48 算法),我只需要数据。我找到了一个免费提供足球比赛数据的网站,并在 Weka 中进行了尝试,但预测结果非常糟糕,所以我认为我的数据结构不正确。

我需要从我的源中提取数据并以另一种方式对其进行格式化,以便为我的模型创建新的属性和类。有谁知道如何为机器学习预测正确创建属性和类的课程/教程/指南?是否有一个标准来描述选择数据集属性以训练机器学习算法的最佳方式?对此有什么方法?

这是我目前拥有的数据示例:http ://www.football-data.co.uk/mmz4281/1516/E0.csv

以下是这些列的含义:http ://www.football-data.co.uk/notes.txt

4

1 回答 1

3

问题可能是您拥有的数据集太小。假设您有 10 个变量,每个变量有 10 个值的范围。这些变量有 10^10 种可能的配置。您的数据集不太可能有这么大,更不用说涵盖所有可能的配置了。诀窍是将变量缩小到最相关的变量,以避免这个巨大的潜在搜索空间。

第二个问题是某些变量组合可能比其他变量更重要。

J48 算法尝试使用树中每个级别的熵来找到最相关的变量。通过树的每条路径都可以被认为是一个 AND 条件:V1==a & V2==b ...

这涵盖了由于联合互动而产生的重要性。但是如果结果是 A&B&C 或 W&X&Y 的结果呢?J48 算法只会找到一个,并且当单独考虑时,它将是选择的第一个变量将具有最大整体意义的那个。

因此,要回答您的问题,您不仅需要找到一个涵盖“一般”人群中最常见变量配置的训练集,还需要找到一个能够忠实代表这些训练案例的算法。忠实的意思它通常适用于看不见的情况。

这不是一件容易的事。许多人和很多钱都参与了体育博彩。如果它像选择正确的训练集一样简单,那么您可以肯定它现在已经找到了。

编辑:

评论中询问了如何找到合适的算法。答案就像大海捞针一样。没有固定的规则。您可能很幸运并偶然发现了它,但在大型搜索空间中,您永远不会知道是否有。这与在非常复杂的搜索空间中找到最佳点是相同的问题。

一个短期的答案是

  • 想想算法能真正完成什么。J48(和类似的)算法最适合于变量对结果的影响众所周知并且遵循层次结构的分类。花卉分类是它可能会出类拔萃的一个例子。

  • 根据训练集检查模型。如果它在训练集上表现不佳,那么它可能对看不见的数据表现不佳。通常,您应该期望模型对训练的性能超过对看不见的数据的性能。

  • 该算法需要用它从未见过的数据进行测试。针对训练集进行测试虽然是一种快速消除测试,但可能会导致过度自信。
  • 保留一些数据用于测试。 Weka 提供了一种方法来做到这一点。最好的情况是在除一种(留出方法)之外的所有情况下构建模型,然后查看模型在这些情况下的平均表现。

但这假设手头的数据在某种程度上没有偏见。

第二个陷阱是让测试结果偏向于您构建模型的方式。例如,尝试不同的模型参数,直到获得可接受的测试响应。使用 J48 不容易让这种偏见蔓延,但如果确实如此,那么您只是将您的测试集用作辅助训练集。

  • 继续收集更多数据;尽可能长时间地测试。即使完成了上述所有操作,除非您可以观察其在未来案例中的表现,否则您仍然不会知道该算法有多有用。当看起来不错的模型开始表现不佳时,就该回到绘图板上了。

令人惊讶的是,有大量领域(主要是软科学)看不到用未来数据验证模型的必要性。但这是一个在别处讨论得更好的问题。

这可能不是您正在寻找的答案,但事情就是这样。

总之,

  1. 训练数据集应涵盖“重要”变量配置
  2. 您应该根据看不见的数据验证模型

识别(1)和做(2)是棘手的部分。没有可遵循的切干食谱。

于 2016-03-23T13:57:03.800 回答