400 正和 13000 负:如何拆分数据集(训练、测试、验证)

数据挖掘 深度学习 神经网络 数据集 训练 卷积神经网络
2022-03-01 06:44:34

研究医学诊断卷积神经网络问题,(对我来说)数据集应该如何拆分并不明显。

我是否有足够的数据将其分成 3 份,还是应该只进行训练和验证?

我应该在每个中放入多少比例的图像?

(研究文章链接赞赏:])

3个回答

对于不平衡数据集的问题,您可以查看分层抽样或分层交叉验证(如此所述)。一个想法可能是从数据中创建分层批次。

我可能会尽一切努力获得训练/验证/测试拆分,因为否则在声称最终测试准确性时您将面临问题,因为模型很可能已经看到了您的整个数据集。

可以想象在训练数据集中拆分为例如 300/9750(pos/neg),并且在训练期间,您从这 1050 张图像创建分层批次,因此每个批次(例如 50 张图像)可能包含 10 个正面和 40 个负面。这仍然有些不平衡,但是您正在将平衡推向更有利的方向,因为模型应该能够更有效地学习。

在医学研究中,通常会出现样本太少的情况(除了类不平衡),因此通常会在数据增强方面付出巨大的努力,您也可以利用它。这是一些相关的文献 (非常新鲜 - 一周前编辑!)。

这是另一种方法,作者(William Fithian 和 Trevor Hastie)设计了一种二次抽样方法,该方法使用样本的特征来接受/拒绝它们。他们为最简单的情况(逻辑回归)设计它,但也许它可能会给你一些想法:

... 使用试点估计来优先选择其响应在考虑到其特征的情况下是有条件的稀有的示例。

使用我上面提到的想法时要特别注意的是过度拟合交叉验证可能是在这方面最能帮助您的方法。

您可以重新采样较低的班级并将其数量增加到较高的班级,或者在应用 train_test_split 时使用分层抽样,以确保在您的训练样本中获得两个班级。

还有一种方法,就是对低类的正确检测应用权重,这意味着对于低类的每个正确检测将比高类的正确检测承担更多的权重,这可以应用在损失函数中优化。

简单的做法是按照@n1k31t4 的建议使用分层抽样。人们通常对图像做的其他事情是图像增强。因此,您可以尝试旋转、倾斜、镜像您的正数据集,使其可以增加到 13k。你可以看看这里