使用拆分表与完全独立的表(CreateML,Swift)时,评估准确度不同

问题描述 投票:4回答:1

我正在使用CreateML和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%的评估准确率。)

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

谢谢。

swift machine-learning swift-playground coreml createml
1个回答
3
投票

训练/验证准确性的含义是,如果后者低于前者,则您的模型过度拟合,即过于适应训练集并且无法正确推广。

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

当您为模型提供的新(未见)数据在某些方面(可能通过预处理或可能通过将其添加到训练集并重新训练模型)解决时,评估准确性较低。

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

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

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

然而另一种说法是:如果验证准确度低于训练准确度,那么你的模型在数量上是不好的(过度拟合);如果您的评估准确性较低,那么您的模型在质量上是不合适的/不适合您打算使用它的数据。

© www.soinside.com 2019 - 2024. All rights reserved.