在医学数据集的训练算法期间面临的许多问题中,以下三个是最常见:类别不均衡多任务数据集大小对于这些问题,本文将分享一些解决的方法。类别不均衡挑战在现实世界中,我们看到的健康人远远比患病的人要多得多,这也反映了在医学数据集中,健康和患病类别的样本数量是不平均。在医疗数据集和信用卡欺诈数据集中,你可能会看到正样本的数量是负样本的一百倍。所以模型训练的结果往往被误认为是表现出色的,然而实际上却并非如此。如果使用accuracy_score准确度这样的简单度量,就会发生这种情况。准确度对于这类数据集来说不是一个很好的度量标准,因为标签严重倾斜,所以一个只输出正常标签的神经网络的准确率甚至还能略高于90%。
解决方案:终上所述,我们可以定义更有用的指标,例如F1度量或"精确度/召回率"。精确度定义为"真正例个数/(真正例个数+假正例个数)",在假正例很多的情况下,这是一个很好的度量;另一方面,召回率定义为"真正例个数/(真正例个数+假反例个数)",在假反例本很多的情况下,这是一个很好的度量。医疗领域的大多数模型是这种情况,但是我们也经常需要同时考虑假正例个数和假反例个数,这就是F1度量的功能,它在精确度(Precision)和召回率(Recall)之间取得均衡,由公式2 * ((Precision*Recall) / (Precision+Recall))给出。处理类不均衡的另一种流行技术是"重采样",这是从多数类(样本过多的那一类)中删除样本(称为欠采样)或在少数类中添加样本(称为过采样)来在这两个类之间取得均衡的行为。尽管它们可以通过使用复杂的重采样技术来解决,但它们具有自己的缺点,如信息丢失和过拟合。多任务挑战在现实世界中,通常仅预测健康或患病是不够的,我们经常需要将医疗数据分为多个类别或标签,例如,仅从心律中检测出心律失常并没有什么市场,对患者进行分析判断得到哪种心律失常更有价值,例如病状可能是房颤,室上性心动过速或任何其他类型。从理论上讲,可以为需要分类的每个标签训练单独的神经网络模型,但是这对于写代码来说是非常不切实际的,如果我们可以将所有这些分类模型组合到一个返回多个预测的单个深度神经网络中,就比较有价值。
解决方案:我们可以使用一种称为"多类别分类"或"多标签分类"的方法来应对这一挑战。这两种方法略有不同,在多类别中,数据样本的类别是互斥的,而在多标签中,数据样本可以属于多个类别。在医学领域,我们通常使用多标签分类,因为如果患者被诊断为肺不张(肺的膨胀不全),则并不意味着他/她就不会有心脏肥大。我们将模型最后一层的分数再传递给Sigmoid激活函数,这会把最后一层的每个分数转换为0到1之间的值,而与其他分数无关。对于多标签分类,我们选择的损失函数变为binary_crossentropy,其中由于我们使用了Sigmoid激活函数,因此每个标签都被视为独立的伯努利分布。在需要多类的情况下,可以用损失函数设置为categorical_crossentropy的softmax激活函数来替换Sigmoid激活函数。数据集大小挑战另外一个处理医学数据集的挑战为数据集的大小。大型训练数据集除了具有良好的体系结构外,还对模型的性能起着重要的作用,但可用于疾病的患者数据数量往往不够。低数据集大小会导致高偏差和高方差,这些原因导致模型的推广和优化困难。
解决方案:为了解决模型优化的困难,我们可以使用一种称为"迁移学习"的方法,其中我们使用从相关网络较低层中学习来训练较高层,而无需它们从头开始学习。由于先前的训练,较低的图层可以用作良好的特征提取器,因此我们可以根据数据集对其进行微调,该技术优化速度更快,并减少了训练新模型所需的数据量。为了解决模型泛化的困难,我们可以使用一种称为"数据增强"的技术,将数据提供给模型之前,可以对样本进行一些随机转换,这样我们可以使模型对于大小或亮度等微小变化保持不变。诸如水平或垂直翻转图像,更改图像的亮度或对比度,将图像旋转或缩放到一定程度之类的做法都有助于数据扩充。此技术在小型数据集中避免过度拟合非常有用。
☆ END ☆
(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )