4

我正在使用 CreateML 和 Swift 创建一个表格分类模型。我使用的数据集总共有大约 300 个项目和大约 13 个不同的特征。我尝试以两种方式训练/测试我的模型,结果却出人意料地大相径庭

1)从原始完整数据集中随机拆分我的训练和评估数据表:

let (classifierEvaluationTable, classifierTrainingTable) = classifierTable.randomSplit(by: 0.1, seed: 4)

我玩过 0.1 分割数和 4 种子数,但结果到处都是:在某些情况下可能是 33% 或 80% 的评估准确度。(在这种情况下,我得到了 78% 的训练准确率、83% 的验证准确率和75% 的评估准确率。)

2)我手动从原始数据集中取了10个项目,放到一个新的数据集中稍后测试。然后我从用于训练的 300 个项目数据集中删除了这些项目。当我测试这 10 个项目时,我得到了96% 的评估准确率。(在这种情况下,我得到了 98% 的训练准确率、71% 的验证准确率和 96% 的评估准确率。)

我想知道为什么会有这么大的差异?哪种阅读应该被视为更现实和可信?我可以对这两种模型做些什么来提高准确性和可信度吗?另外:我对不同的准确度测量意味着什么以及我应该如何解释它们(培训、验证、评估)感到困惑?

谢谢。

4

1 回答 1

3

训练/验证准确率的含义是,如果后者低于前者,说明你的模型是过拟合的,即对训练集适应过大,不能正确泛化。

所以你的第一个案例产生了很好的结果,第二个产生了不好的结果。

当您提供给模型的新(看不见的)数据在某些方面存在显着差异时(这可能可以通过预处理或将其添加到训练集并重新训练模型来解决),评估准确度会很低。

在第二种情况下,您的模型严重过度拟合,并且 10 个项目是从训练集中获取的,因此它们没有本质上的不同,这显然给了您很高的评估准确度。所以这是一个相当无用的测试。

在第一种情况下,您从哪里获得评估准确性测试的数据尚不清楚。

TL;DR:第一种情况是好的结果,第二种情况是坏的结果。如果对新数据的测试产生的评估准确性太低,那么数据可能在质量上有所不同。

但是换一种说法:如果验证准确度低于训练准确度,则您的模型在数量上是错误的(过度拟合);如果您的评估准确性较低,则您的模型在质量上很差/不适合您打算使用它的数据。

于 2019-04-08T19:35:56.573 回答