训练、测试和验证数据集

数据挖掘 数据集 训练 计算机视觉
2022-01-28 11:18:19

我正在训练用于肿瘤分割的Unet模型。为此,我有一个包含400 名患者的数据集。使用的图像是 CT 扫描(3D 图像),我将其划分为 2D 图像(总共 30k 2D 图像)。

我实际上将数据集分为:10% 的测试数据、18% 的验证数据、72% 的实际训练数据。我将测试和训练数据划分为患者(即用于测试的患者与用于训练的患者不同)。之后,我将 2D 图像打乱并拆分为训练/测试数据集(即可以在训练数据集和验证数据集中找到相同的患者,但不是相同的堆栈图像)。

我有两个问题:

  • 我也应该根据患者拆分训练/验证数据集吗?
  • 训练/测试/验证中的划分百分比是否适合我的问题?
2个回答

通常数字(百分比)并不重要。

重要的是您的拆分(训练/测试/验证)做了两件事。表示现实世界的情况,并确保模型可以泛化,因为它是在保持集上评估的。

那么这到底是什么意思呢?您有 30k 图像和 400 名患者。最有可能的患者(扫描)会彼此不同,因此您应该根据患者进行拆分,以确保模型可以概括略有不同的图像分布。

并按百分比计算。你需要确保你在训练测试和验证中找到的东西代表你的问题。这可能意味着按患者拆分、按其他功能拆分、检查数据分布等,但这并不意味着您确定只有一组中有 12%。

这意味着什么。假设您有 1000 行数据。您将 90% 和 10% 分开,因此在坚持中您有 100 个数据点。但在 900 列的火车中,它们中的大多数是相同的。它们与坚持的 100 分不同。这是一个很好的分裂吗?显然不是因为你的模型什么都没学到。

通常,您应该拥有 60% 的训练数据集和 20% 的验证以及测试集。我不熟悉肿瘤分割的事情,但只要同一患者的图像不同并且具有一定的相关差异水平就足够了。