【问题标题】:Classification task, result differ when test set distribution differ分类任务,测试集分布不同时结果不同
【发布时间】:2019-06-04 23:29:32
【问题描述】:

我正在使用卷积网络对图像进行分类。多类问题(得到 12 类)

我的训练集是 3500 张图片,类不平衡(例如 A 类 =1200 张图片,B 类 = 50 张图片)。我使用类权重来对抗不平衡和数据增强

edit 数据增强是使用 keras 功能,只做旋转和翻转。我只增加训练集

由于我的一些班级的数据非常少,我制作了一个拆分 60% 训练/20% 验证/20% 测试集(即对于 B 类,我有 30 个训练数据/10 个验证数据/10 个测试数据)

然后我做了不同的拆分,每次都有不同的训练/验证和测试数据 结果稳定 => 我的指标(微 F1 分数)不会因不同的拆分而发生很大变化,并且混淆矩阵显示没有类效应:不同的拆分并不意味着给定类的不同结果

现在,我将我的模型应用到没有标签的集合上。大约 10 000 张图像。 结果很差:当我在测试集上获得 B 类 60% 的精度分数时,我的精度在没有标签的集合中约为 5%

我的问题:

会不会过拟合?当我停止训练模型时,训练损失 = 0.3/训练 F1 = 95%。验证损失 = 0.7/验证 F1=80% 我不这么认为,因为验证损失没有增加(我在模型增加之前停止模型)

我可以调查什么来了解为什么我的结果在具有 10 000 个数据的新数据集上如此糟糕(当我说我的结果时,我说的是精度,因为这是我可以轻松计算某些类的唯一一个指标)

【问题讨论】:

    标签: python machine-learning keras conv-neural-network


    【解决方案1】:

    您的模型可能会过度拟合,因为您的模型正在学习一小部分经过增强的 B 类图像。增强会产生更多数据,但本质上图像的内容保持不变。如果您的新未标记 B 类图像与训练图像相似,那么您不应该有这个问题,但如果它们不同,那么您就会有这个问题。也可以在增强图像上训练您的模型,但仅在原始图像上进行验证,以防止过度拟合并帮助模型更好地泛化。看看这个link

    您可以尝试的另一件事是从其他类中抽取一个小样本,并在没有增强的情况下训练一个新模型,然后测试图像。这将使您澄清模型是否过度拟合增强数据。

    如果您只在 Keras 中进行基本增强,您也可以尝试 GAN 等高级增强技术。如果可能,请使用扩充步骤更新您的问题。

    【讨论】:

    • 谢谢!我已经编辑了问题。当我不在测试集(带标签的设置)上使用数据增强时,我会损失大约 5% 的性能
    • 验证怎么样。数据增强应该只用于训练数据,而不是用于验证和测试。
    • 我的错。我的意思是:我只增加训练集。如果没有增强,我会在测试集上损失 5%。
    • 仅在相等集合上的两个类上训练您的模型并测试预测。在我们跳入解决方案之前,我们需要找出问题所在。
    • 谢谢!我找到了错误的来源。我正在降低两组图像的分辨率,但这会导致 10000 个未标记数据的集合出现错误。
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 2013-03-04
    • 2020-02-18
    • 2022-11-28
    • 2017-04-20
    • 2019-05-17
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多