乳腺癌复发数据集朴素贝叶斯分类算法及结果分析
数据集基本描述
乳腺癌复发数据集来自OpenML,是由南斯拉夫卢布尔雅那大学肿瘤研究所的M. Zwitter 和 M. Soklic 于1988年捐赠。
数据集一共有286个实例,其中复发85例,没有复发的是201例。每个实例有10个属性,属性的类型全都是枚举类型,属性的具体含义见下表:
属性名 | 含义 | 取值范围 |
---|---|---|
Class | 是否复发 | no-recurrence-events, recurrence-events |
age | 年龄 | 10-19, 20-29, 30-39, 40-49, 50-59, 60-69, 70-79, 80-89, 90-99 |
menopause | 绝经情况 | lt40(40岁之前绝经), ge40(40岁之后绝经), premeno(还未绝经) |
tumor-size | 肿瘤大小 | 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59 |
inv-nodes | 受侵淋巴结数 | 0-2, 3-5, 6-8, 9-11, 12-14, 15-17, 18-20, 21-23, 24-26, 27-29, 30-32, 33-35, 36-39 |
node-caps | 有无结节冒 | yes, no |
deg-malig | 恶性肿瘤程度 | 1, 2, 3 |
breast | 肿块位置 | left, right |
breast-quad | 肿块所在象限 | left-up, left-low, right-up, right-low, central |
irradiat | 是否放疗 | yes, no |
数据集中有8个实例缺失node-caps
属性,有1个实例缺失breast-quad
属性。
数据预处理
当前数据集已经归一化,唯一的缺陷是包含了9个缺失属性的实例,由于总的实例数有286个,缺陷实例只占总数据集的0.3%,所以将其直接丢弃。
通过数据预处理,可以除去噪音,得到高质量的数据集,从而提高后面数据挖掘的质量和效率。
算法及开源工具介绍
OpenML.org是一个机器学习的平台,OpenML平台支持数据集上传和管理,数据挖掘任务的创建和管理,数据挖掘工作流的创建和管理,数据挖掘任务结果的存储和管理,目前其在线执行任务模块正在开发中,但其API已经可用,可以通过weka,moa,rapidminer等软件直接提交数据挖掘任务结果,当然也可以通过其sdk,自己写程序提交。
将处理好的数据上传到OpenML,然后创建一个数据挖掘分类任务,分类目标是属性Class
,建模的方式选用10折交叉验证的方式,对模型的准确度进行评估。在weka软件中安装openml的插件并启动,输入任务ID,并选择朴素贝叶斯分类算法进行分析。
挖掘结果分析
分析结果可以直接在OpenML查看,基于朴素贝叶斯分类算法生成的模型评价如下:
精确率的得分是0.7331,准确率得分是0.7437,F1得分为0.7366,表明模型的质量还是不错的。综合评价中预测不会复发的得分为0.8247,而预测复发的得分才0.5235。为什么预测复发的得分会这么低?是因为数据集中,不会复发有196个实例,而复发实例只有81个,可见数据集中大多数实例都是不会复发的。
在疾病中,我们总是希望早点将病测出来,进行早期的干预和治疗,所以对于乳腺癌是否复发的分类我们希望在复发的分类上召回率高点,宁可错误分类,也不能漏掉,但这个模型在复发分类上的召回率才0.4815,不是很高,所以对于真实的场景来说,这个模型的质量并不是很好。
综上,可以试着减少不会复发的实例,使之和复发的实例数相差无几可以有效的提高我们真正关心的复发的分类的综合得分,提高召回率。