使用拆分表与完全分离表 (CreateML, Swift) 时, 评估精度是不同的

我正在使用 Creatoml 和 Swift 创建一个表格分类模型。我使用的数据集总共有大约 300 个项目, 大约有 13 个不同的要素。我尝试了两种方式来测试我的模型, 并取得了惊人的非常不同的结果:

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

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

我玩了一些与 1 分裂的数字和 4 种子数, 但结果是到处都: 可能是 33% 或 80% 的评价准确性在某些情况下。(在这种情况下, 我获得了 78% 的训练精度、83% 的验证精度和 75% 的评估精度

2)我手动从原始数据集中获取了 10 个项目, 并将它们放入新的数据集中进行测试。然后, 我从用于培训的 300 个项目数据集中删除了这些项目。当我测试这 10 个项目时, 我得到了96% 的评估精度。(在这种情况下, 我获得了 98% 的训练精度、71% 的验证精度和 96% 的评估精度。

我想知道为什么会有这么大的不同?哪些阅读应该被视为更现实和可信?对于这两种模型, 我可以做些什么来提高准确性和可信度吗?也一样: 我也搞不清楚不同的精度测量是什么意思, 以及我应该如何解释它们 (培训, 验证, 评估)?

谢谢。

第1个答案

培训验证精度的含义是, 如果后者低于前者, 则您的模型过于适合于训练集, 无法正确概括。

所以你的第一个病例产生了好的结果, 第二种情况下产生了不好的结果。

当您提供模型的新 (看不见的) 数据在某些方面有很大差异时, 评估精度较低 (这也许可以通过预处理或将其添加到培训集和再培训模型来解决)。

在第二种情况下, 您的模型是严重过度拟合和 10 个项目从训练集采取, 所以他们没有实质性的不同, 这显然给你一个很高的评价准确性。所以这是个相当无用的考验。

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

TL; DR: 1 例是好结果, 第二种是坏结果。如果对新数据的测试产生的评估准确性太低, 也许数据在质量上是不同的。

然而, 另一种说法是: 如果验证精度低于训练精度, 则您的模型在数量上是错误的 (过度拟合);如果您的评估精度较低, 则您的模型在质量上不适合您打算将其用于的数据。

相关问题

Xcode 10.2, Swift 5, 命令编译 Swift 失败, 同时使用发布方案构建程序 使用 Swift 4.2.1 编译的模块不能由 Swift 5.0 编译器导入 Xcode 11: Canvas 不显示 使用拆分表与完全分离表 (CreateML, Swift) 时, 评估精度是不同的 如何添加在 CNN 差