雷锋网 AI 研习社按,在数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)一文中,AI 研习社介绍了结构化数据和 NLP 数据的处理方式,其中包括对 Titanic,房价预测,恶意评论分类,恐怖小说家身份识别四个比赛的详细分析。
本文将介绍图像类比赛的数据处理经验,以树叶分类竞赛(Leaf Classification)和肺癌检测比赛(Data Science Bowl 2017)为例。
正文如下,雷锋网(公众号:雷锋网) AI 研习社编译整理:
图像
到目前为止,我介绍的都是文本(语言、字符串或数字)数据集,最后我将带来两个图像数据集的分析。
我选的这两个比赛(肺癌检测和树叶分类)比我看过的其他比赛更具专业特色,这里的分析不再是基本分析,着重于探索不同技术,因此适用于更高阶的读者。
在可视化技术以及特征构建方面,我看到了很多变化。特别是肺癌比赛中,一些作者利用现有的医学知识构建极具专业特色的特征,虽然不能说这些特征的效果有多好,但是这里可视化效果令人惊叹。
树叶分类
竞赛中提供的数据集包括 1584 个按品种分类的被标记的树叶图像,参赛者需要建立一个对标记之外树叶图像分类的模型。
我选择用于分析的 EDA 是 lorinc 的 Feature Extraction From Images,selfishgene 的 Visualizing PCA with Leaf Dataset 以及 Jose Alberto 的 Fast Image Exploration。
第一步最好先仔细瞧一瞧树叶的图像。
selfishgene 检查树叶标本
Jose 绘制出各个种类的树叶,并指出每个种类有 10 张图片。他还观察了同类树叶间的相似性。
lorinc 直接跳入分析阶段,定位每片叶子的中心并应用边缘检测技术,他还将叶子的轮廓转换为极坐标,以便更有效地测量叶子的中心:
之后,当我们使用边与中心之间的距离从形状生成时间序列时,我们可能想要转换到另一种中心性度量——根据该中心的有效性。一种方法是测量中心和边缘之间的(欧几里德)距离……但是有一个更好的方法——我们将笛卡尔坐标投影到极坐标中。
selfishgene 选择看图像的方差方向:
在高维图像空间中,每个图像都可以被看成是不同的「方向」。
Selfishgene 看到的树叶图像的方差
selfishgene 也花费了一些时间来研究图像重建、平均图像周围的模型变化以及特征向量,他解释道:
最上面一行包含每个特征向量的数据分布(沿着「方向」的直方图),第二行包含了我们在前面的图中已经看到的方差方向,第四行包含了树叶的中值图像,值得注意的是,这一行对于所有的特征向量是相同的。
selfishgene 看到的模型变形
特征检测
lorinc 建议将每个样例分成两部分,并将它们作为两个样例处理(尽管他不采用这种方法)。lorinc 从时间序列中找到局部最大值和最小值(例如,绘制在极坐标中的树叶)并记录道:
我很惊讶于这个方法表现得相当不错。我认为我可以从中构建出一个非常有效的特征。但是这种方法的鲁棒性不是很好:
对于树叶#19,它没有找到树叶的末端,只找到了与中心距离最远的点。对于树叶#78,可以看到在更复杂或有旋转的叶片上效果很差。
lorinc 绘制在极坐标中所测叶子的最小值和最大值
在发现每片树叶周围存在噪音之后,lorinc 谈到数学形态学。他花了一些时间弄清楚如何去除图像中的噪点,并用可爱的图像来显示叠加在树叶上的距离图:
lerinc 测量距离叶子中心的距离
肺癌
我选择的 EDA 是 Guido Zuidhof 的 Full Preprocessing Tutorial,Mikel Bober-Irizar 的 Exploratory Data Analysis 和 Alexandru Papiu 的 Exploratory Analysis Visualization。
anokas 检查单个图像的元数据,可以看到病人出生日期被隐匿(19000101)
2017 年的 Data Science Bowl 比赛要求参赛者通过检测一组图像来预测患者是否患有癌症。虽然在这一竞赛中确实有结构化数据(自动嵌入图像中的标签信息),但其中一些数据是匿名的,也就是说,那些原本具有预测价值的特征(比如患者的年龄)用不了。这意味着所有的 kernel 只专注于图像分析。
在三个 kernel 作者中,Guido 是唯一一个结合医学图像来讨论的人,这点在他对数据集的分析中可以看出来:
Dicom 是医学影像文件标准,这些文件中包含大量元数据(例如像素大小)。不同扫描中的像素大小、粒度都不同(例如,切片之间的距离可能不同),这可能会影响 CNN 的性能。我们可以用同构重采样来处理。
另外两位作者通过对数据集和图像本身进行更全面的探索开始了他们的 EDA。
apapie 检查了图像的形状,而 anokas 开始观察每个病人的扫描次数、总扫描次数和每个病人的 DICOM 文件直方图,他还检查了 ID 和病人是否患有癌症是否存在关系(他发现没有关系,这意味着数据集的排列是很有序的)。
Alexandru 对像素进行分配并绘制图像:
Guido 在 EDA 中阐明了 HU 所代表的东西(空气,组织和骨骼):
图像
每位作者都在继续研究这些图片:
Anokas 观察一组患者图像
Alexandru 通过 X 射线看图像
Alexandru 花了一些时间研究边缘检测是否能增强图像。
提高阈值后,Alexandru 呈现出一些比较醒目的图像
Alexandru 总结道:
有趣的是,过滤器也能检测到肺里的血管,因此,一些用于区分球体和管道的三维表面探测区分技术将更适合这种情况。
同时,Guido 讨论了重采样,重点关注了 DICOM 图像的基本性质:
一次扫描可能存在一个像素间距[2.5,0.5,0.5],这意味着切片之间的距离是 2.5 毫米。对于不同的扫描,可能是[1.5,0.725,0.725],这对于自动分析来说存在一定问题(例如使用 ConvNets 的时候)。处理这一问题的常见方法是将完整的数据集重新取样到确定的等向性分辨率(isotropic resolution)中,如果我们选择将所有的数据重新采样到 1mm*1mm*1mm 的像素中,这样就可以使用 3D 卷积网络而不用担心学习缩放与切片厚度的固定。
之后,Guido 在 EDA 中合并了多个 DICOM 图像完成检测部位的三维图:
在另一个版本中,去除周围的空气以减少内存:
3D图像
点评
这次竞赛是我所见过的最与众不同的。鉴于 Guido 对医学图像的熟悉,他能够利用这一背景来得出更微妙的结论。但这并没有阻止其他两位缺乏医学背景的作者得出同样有趣的结论。
总结
-
结构化数据
对于结构化数据,分析时倾向于寻找目标变量和其他变量之间的相关性,需要花费相当多的时间进行可视化或对变量进行排序。
对于较小的数据集,可以分析的数据只有这么多列,然而,不同的参赛者使用了截然不同的可视化方法,在选择特征工程方面更极具创造性。
-
自然语言数据集
从这些 EDA 中可以看到,大家在处理自然语言数据集时有相似之处,但在特征工程的选择以及分析中,会得出不同结论,产生很大的变化。
-
图像数据集
图像竞赛中,在分析和特征工程方面表现出了极大的多样化。我所看到的图像竞赛主要是针对有一定积累的参赛者,而且是在一些特定领域,这可能会产生更超前的多样性。
当数据集变得更加专业或深奥时,介绍性的分析和解释就会减少,而比较深入和专业化的分析就会增加,而这正是我所看到的。虽然不同类型的数据有明显不同的趋势,但专业领域知识起着重要的作用。在肺癌和叶片竞赛中,引入专业领域知识到研究中,可以支撑更深层次的分析。(有趣的是,我在自己的研究中也遇到过这种情况,Jeremy Howard 在他的 fast.ai 课程里讨论了 Rossman 的数据集,以及最成功的模型是如何集成第三方数据集,如温度、存储位置等,从而做出更准确的销售预测。)
参赛者处理特征工程的时候,并没有一个统一的过程。有些人选择在分析时开始,而另一些人则在最初的分析完成之后,将其作为一个单独的步骤。
最后,我看到的每一份分析手册都有确定的读者(初学者或资深研究者),这会影响分析和写作。
在一些更受欢迎的比赛中,或是针对普通研究人员的比赛中,EDA 分析都是详尽无遗的。在这些 EDA 中,我也看到了一种趋势,即在分析的同时穿插补充或叙事来帮助初学者更好地理解技术。
相比之下,针对更资深的研究者的笔记则倾向于去掉多余的叙述性描述,许多还跳过了基本的数据分析,而是直接转到特定领域的技术中去。
特别鸣谢 Michelle Lew、Ari Zilnik、 Sean Matthews 和 Bethany Basile,感谢他们对这篇文章的审阅。
雷锋网 AI 研习社编译整理。
雷锋网版权文章,未经授权禁止转载。详情见。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/129682.html