吴恩达-医学图像人工智能专项课程-第一课第一周16-18节-如何确保数据集病人不重叠+作业解说(代码片段)

Tina姐 Tina姐     2022-12-09     426

关键词:

模型测试

既然你已经了解了如何训练医学诊断模型,那么让我们来谈谈如何测试这样的模型。

接下来你会学习如何测试这样的一个模型。您将学习如何正确使用训练、验证和测试集。以及为了评估你的模型需要强大的ground truth。

当我们在做机器学习时,数据集通常将其分成训练集和测试集。

  • 训练集: 用于开发和选择模型。在实际应用中,训练集被进一步分割为训练集和验证集。训练集用于学习模型,验证集用于超参数调整。
  • 测试集: 用于最终报告我们的结果

有时,为了减少模型性能估计中的可变性,可以多次使用称为交叉验证的方法将训练集和验证集分开。

这些集合有时也有不同的名称,比如验证集可以称为调整集或深度集,训练集可以称为开发集,而测试集可以被称为无效集,甚至更容易混淆验证集。

为了我们的目的,我们将坚持训练、验证和测试集等术语。

我们将讨论在医学背景下构建这些数据集的三个挑战

  • 第一个挑战涉及到我们如何使这些测试集独立
  • 第二个挑战涉及我们如何对它们进行采样
  • 第三个挑战涉及我们如何设置 ground truth

我们先讨论一下病人重叠的问题。假设一个病人来做两次x光检查,一次在六月,一次在十一月。两次,他们在拍x光片时都戴着项链。

他们的一张x光片作为训练集的一部分取样,另一张作为测试的一部分。

我们训练了我们的深度学习模型,发现它正确地预测了测试集中的x射线:为正常图像。

问题是,当模型看到戴着项链的病人时,它实际上记忆的是脖子上的项链。

这不是假设,深度学习模型可以无意中记忆训练数据,而且模型可以记忆患者罕见或独特的训练数据方面,例如项链。

这可以帮助它在对同一个患者进行测试时获得正确答案。这将导致测试集的性能过于乐观,我们会认为我们的模型比实际的要好。

通过病人构建训练集合测试集

为了在我们的数据集中解决这个问题,我们可以确保患者的X光只出现在其中一个数据集中。

现在,我们把同一个病人的数据都放在训练集中,如果模型记住了病人身上的项链,这并不能帮助它在测试集上获得更高的性能,因为它看不到同一个病人。让我们看看这在所有病人身上的作用。

当我们用传统的方法(按图像分成不同的集合)分割一个数据集时,图像被随机分配到其中一个集合。

请注意,这样我们就得到了属于同一病人的不同组的X射线。例如,20号病人Xray1.jpg,是训练的一部分。Xray2.jpg也属于20号病人,也是验证的一部分。而Xray0.jpg也属于20号病人,这是测试集的一部分。

这就是病人重叠的问题。相反,当我们按患者分割数据集时,属于同一患者的所有X射线都在同一组中。

通过以病人来划分数据集,我们就可以确保两组之间没有病人重叠。这涵盖了我们对第一个挑战的解决方案。

作业解读

作业文件:AI4M_C1_W1_lecture_ex_04

了解过chest-xray8这个数据集,就会知道一个病人可能含有多个图像。

医学数据中的病人重叠是机器学习中一个非常普遍的问题,称为数据泄漏(data leakage)

要确定本周作业中的患者重叠,您不仅需要检查患者ID是否同时出现在训练集和测试集中。

您还应该检查在训练集和验证集中有没有患者重叠,这就是您将要做的。

下面是一个简单的示例,展示了如何检查和删除训练和验证集中的患者重叠。

tips:我给的代码文件里面没有训练集的csv文件,需要请自行下载。

通过‘valid-small.csv’文件,可以查看数据集的构造。

valid_df = pd.read_csv("nih/valid-small.csv")
print(f'There are valid_df.shape[0] rows and valid_df.shape[1] columns in the validation dataframe')
valid_df.head()

接下来提取 train 和 valid 的 PatientId

# Extract patient id's for the training set
ids_train = train_df.PatientId.values
# Extract patient id's for the validation set
ids_valid = valid_df.PatientId.values

使用 set() 对 ID 排序

ids_train_set = set(ids_train)   
print(f'There are len(ids_train_set) unique Patient IDs in the training set')
# Create a "set" datastructure of the validation set id's to identify unique id's
ids_valid_set = set(ids_valid)
print(f'There are len(ids_valid_set) unique Patient IDs in the validation set')
+ There are 928 unique Patient IDs in the training set
- There are 97 unique Patient IDs in the validation set

set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

然后通过求集合的交集来看是否有重叠的病人

# Identify patient overlap by looking at the intersection between the sets
patient_overlap = list(ids_train_set.intersection(ids_valid_set))
n_overlap = len(patient_overlap)
print(f'There are n_overlap Patient IDs in both the training and validation sets')
print('')
print(f'These patients are in both the training and validation datasets:')
print(f'patient_overlap')
+ There are 11 Patient IDs in both the training and validation sets

- These patients are in both the training and validation datasets:
- [20290, 27618, 9925, 10888, 22764, 19981, 18253, 4461, 28208, 8760, 7482]

由此,我们就求出了训练集和验证集中有多少病人重叠,以及重叠的病人ID。

接下来,我们就要在训练集或验证集中删除它们。我们选择删除验证集,你也可以选择删除训练集。

方法是通过找到重叠的PatientId的那些行索引,然后删除该行。

train_overlap_idxs.extend(train_df.index[train_df['PatientId'] == patient_overlap[idx]].tolist())
valid_overlap_idxs.extend(valid_df.index[valid_df['PatientId'] == patient_overlap[idx]].tolist())
valid_df.drop(valid_overlap_idxs, inplace=True)

Congratulations!

你已经解决了数据集的第一个挑战!

作业解读只介绍了部分重点,更深刻的理解需要自己去做一做作业。

欢迎继续阅读下一次内容~~~

文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
在这里插入图片描述

吴恩达-医学图像人工智能专项课程-第一课第一周13-15节-迁移学习+数据增强

回顾一下医学图像深度学习面临的三个挑战三个挑战我们将讨论医学图像训练算法的三个关键挑战:类不平衡挑战、多任务挑战和数据集大小挑战。对于每一个挑战,我们将介绍一到两种应对方法。类别不平衡:可以... 查看详情

吴恩达-医学图像人工智能专项课程-第一课第一周19-20节(代码片段)

让我们回顾一下上一节提出的医学图像创建数据集的三个挑战第一个挑战涉及到我们如何使这些测试集独立第二个挑战涉及我们如何对它们进行采样第三个挑战涉及我们如何设置groundtruth让我们来讨论第二个挑战:集合抽样... 查看详情

吴恩达-医学图像人工智能专项课程-第一课第一周4-5节总结(代码片段)

...了令人难以置信的成绩。然后我们将进入为医学影像构建人工智能模型的训练过程。最后ÿ 查看详情

吴恩达-医学图像人工智能专项课程-第一课第一周1-3节(代码片段)

欢迎来到医学人工智能专业。如果你已经完成了深度学习专业化或机器学习课程,并且你正在寻找更深入掌握人工智能的应用领域,这是一个很好的专业化学习。要想成为真正优秀的机器学习,最重要的事情之一就是... 查看详情

吴恩达-医学图像人工智能专项课程-第一课第一周6-10节总结+作业解读(代码片段)

现在,您已经了解了深度学习在医学图像分类问题上的一些前沿应用。本文将介绍第一课第一周6-10节的内容。主要讲解构建一个分类模型去识别胸片的肿块。以及分类模型将面临的三个挑战:类不平衡挑战、多任务挑战... 查看详情

吴恩达-医学图像人工智能专项课程-第一课第一周16-18节-如何确保数据集病人不重叠+作业解说(代码片段)

模型测试既然你已经了解了如何训练医学诊断模型,那么让我们来谈谈如何测试这样的模型。接下来你会学习如何测试这样的一个模型。您将学习如何正确使用训练、验证和测试集。以及为了评估你的模型需要强大的groundtrut... 查看详情

吴恩达-医学图像人工智能专项课程-第一课第一周12-13节多任挑战总结(代码片段)

前面我们已经学习了如何处理类别不平衡。这节课我们来探讨第二个挑战-多任务挑战目前为止,我们已经研究了二分类,我们关心的是一个例子是否是有mass疾病。然而,在现实世界中,我们关心的是对许多此类... 查看详情

吴恩达-第一课第二周1-7节总结-医学深度学习模型的评估汇总(代码片段)

医学深度学习模型的评估汇总本周我们将深入探讨医学深度学习模型的评估。在医学上,由于决策具有很高的影响力,我们关心的是准确地了解模型何时对患者起作用,什么时候不起作用。您将学习一下指标,包... 查看详情

第一课第三周大作业--mri脑肿瘤自动分割教程(代码片段)

...1骰子相似系数4.2softdiceloss5创建模型5.1训练6评估作业文件吴恩达-医学图像AI专项课程-作业/第一课/第一 查看详情

吴恩达深度学习课程第一课—神经网络与深度学习—第一周练习

...网络和深度学习 第一周-深度学习简介 第1题“人工智能是新电力”这个比喻指的是什么?A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力。B.通过“智能电网”,人工智能正在传递新一波的电... 查看详情

吴恩达-第一课第二周8-10节-什么是置信区间,有什么作用

在这节课中,我们将了解评估医学模型的另一个非常重要的方面,即报告我们的评估中的可变性。我们将研究如何使用置信区间来显示这种可变性。假设一家医院有5万名病人,我们想知道我们的胸部x光模型对每个人... 查看详情

第一课第一周大作业-胸部14种疾病分类-代码详解(代码片段)

...01;您将通过使用Keras构建最先进的胸部X射线分类器来探索医学图像诊断。你将学会一下内容:预处理真实世界的X射线数据集使用迁移学习重新训练DenseNet模型以进行X射线图像分类学习一种处理类别不平衡的技术 查看详情

吴恩达实验(神经网络和深度学习)第一课第三周,代码和数据集,亲测可运行

代码和数据集已上传到文件中应该可以直接下载吧(第一次上传文件,感觉是),解压后把文件夹拷贝到jupyter工作空间即可注:我对下载的代码的格式稍作了修改,原来定义函数与调用函数在两个单元格里,我直接运行他总给... 查看详情

第二课第一周大作业--构建和评估一个线性风险模型(代码片段)

之前教程:第二课第一周第1节-AI用于医学预后简介第二课第一周第2节-做医学预后,你需要掌握什么?第二课第一周第3-4节-什么是预后?第二课第一周第4-7节医学预后案例欣赏+作业解析第二课第一周第8节风险得分... 查看详情

第二课第一周大作业--构建和评估一个线性风险模型(代码片段)

之前教程:第二课第一周第1节-AI用于医学预后简介第二课第一周第2节-做医学预后,你需要掌握什么?第二课第一周第3-4节-什么是预后?第二课第一周第4-7节医学预后案例欣赏+作业解析第二课第一周第8节风险得分... 查看详情

第二课第一周1节-ai用于医学预后简介

第二门课程集中于医学预后(medicalprognosis)。预后是医学的一个分支,专门预测病人未来的健康状况。例如,根据病人的实验室结果,你能估计出未来5年内心脏病发作的风险吗?或是未来10年内死亡的风... 查看详情

第一课第三周1-2节-了解医学图像分割以及探索mri数据格式以及作业解读(代码片段)

本周将学习图像分割,图像分割在许多医学影像应用中起着至关重要的作用,例如组织大小的量化、疾病的定位和治疗计划。我们将重温您在过去两周学到的一些相同的想法,看看它们是如何扩展到图像分割的。在本... 查看详情

第二课第一周2节-做医学预后,你需要掌握什么?

...设计重点在于为你提供概念和实用工具。你需要成功地为医学建立机器学习模型。对于这门课程,你不需要任何深入学习方法的背景知识,也不需要任何医学背景。不过,在你上这门课之前,我建议你先满足三个... 查看详情