如果一个标签有更多的训练数据,我在尝试开发用于图像分类的 CNN 时需要采取哪些预防措施。例如:
label1 : 1000 images
label2 : 100 images
label3 : 100 images
label4 : 100 images
以后数字会变大,但比例可能会保持不变。
感谢您的洞察力。
如果一个标签有更多的训练数据,我在尝试开发用于图像分类的 CNN 时需要采取哪些预防措施。例如:
label1 : 1000 images
label2 : 100 images
label3 : 100 images
label4 : 100 images
以后数字会变大,但比例可能会保持不变。
感谢您的洞察力。
您面临的问题通常被称为类不平衡,并且已成为大量研究的主题。如果您有兴趣,这里有一篇文献综述:He, H., & Garcia, EA (2008)。从不平衡的数据中学习
特别是,您可能会遇到两种形式的不平衡:
当您拥有来自某些类的大量数据时,就会发生绝对不平衡/稀有性,但您只有一些其他类(或类的子概念)的示例。在这种情况下,问题在于学习算法可能没有足够的数据来学习少数类。在您给出的示例中,有 100 个少数类示例,具体取决于数据的性质,您可能会遇到此问题。但是,如果您希望将来有更多数据,那么绝对稀有性最终应该不再是问题。
另一方面,相对不平衡不会随着更多数据而消失。当某些类的先验概率远大于其他类的先验概率时,您就会出现相对不平衡。例如,第 1 类的示例总是比第 2 类的示例多 10 倍,因为第 1 类的出现频率是第 1 类的 10 倍。
大多数用于分类的学习算法都针对准确性进行了优化,或者类似 RMSE。这意味着,当解决真正的分类问题足够困难,并且数据严重不平衡到一个类别时,模型可能会在有疑问时诉诸于预测多数类别。多数人的召回率可能很好,但少数人的召回率则不然。
在少数类别的检测特别重要的许多领域中,这成为一个问题。例如,在医学诊断中,我们可能愿意牺牲整体准确性(因为更多的误报)以获得更好的真阳性率。
简而言之,这取决于您的域。您是否可以优化整体准确性,还是更重要的是在各个类别中具有可比的性能?如果您选择后者,那么您可以尝试以下几种方法:
总体而言,您还应该小心选择正确的评估指标。使用准确性评估您的模型可能会让您相信您的模型表现非常好,而实际上它正在将所有内容分类到多数类别中。您可以使用许多指标,每个指标都有其优点和缺点。ROC 曲线下面积 (AUC) 是一个常用指标,可让您大致了解模型在不同类别错误分类成本上的平均性能。如果您可以绘制多个模型的 ROC 曲线,并注意到一条曲线在整个绘图宽度上占主导地位,那么这就是您获胜的最明显迹象。如果您有兴趣,在《不平衡学习:基础、算法和应用》一书中有一整章关于这个主题.
您可以复制图像并添加它们。您可以对图像较少的标签使用数据增强技术。以下代码适用于 Keras。
datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
我希望这有帮助。你不应该担心一个标签有更多的数据,而应该考虑如何增加其他标签的数据。
您使用的数据集包含几乎超过 90% 的属于一个类的训练数据,并且会极大地影响您的结果。这种数据的不平衡应该会产生我们所说的倾斜类。偏斜类的存在会影响你的预测,学习模型可能会成为预测多数类的模型。
为了克服这个问题,您可以执行以下操作:
这个答案基于这篇文章。请参阅它以获取详细说明。