分类器方法性能的比较——基于威斯康星州乳腺癌数据集(R语言)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分类器方法性能的比较——基于威斯康星州乳腺癌数据集

1引言

目前,机器学习领域有众多的分类算法。有的想法朴素,有的理解抽象,但是对于不同分类方法的分类性能没有直观展示,解释清楚分类器的分类性能是复杂困难的,本文就是以威斯康星州乳腺癌数据集为例简单探讨不同分类器性能的比较。

2 乳腺癌数据集介绍

威斯康星州乳腺癌数据集包含699个细针抽吸活检的样本单元,其中458个为良性样本单元,241个为恶性样本单元。对于每一个样本来说,另外九个变量是与判别恶性肿瘤相关的细胞特征。这些细胞特征得分为1(最接近良性)至10(最接近病变)之间的整数。这十个变量分别是:

➢X1 代表肿块厚度

➢X2代表细胞大小的均匀性

➢X3代表细胞形状的均匀性

➢X4代表边际附着力

➢X5代表单个上皮细胞的大小

➢X6代表裸核

➢X7代表乏味染色体

➢X8代表正常核

➢X9代表有丝分裂

➢Class代表类别(类型变量)

任一变量都不能单独作为判别良性或恶性的标准,建模的目的是找到九个细胞特征的某种组合,从而实现对恶性肿瘤的准确预测。

在R软件中读取数据之后的前十行数据如图1所示。

图1 数据集的前十行数据

3 数据预处理

首先对数据的概况进行观察,数据描述如图2所示。观察数据概述图可知,该数据集由699个观测和10个变量组成。区分了1个分类变量和9个其他变量,其中9个其它变量为数值类型,一个分类变量为因子类型,变量X6缺失了16个。数值类型的9个变量分别给出了他们的缺失值个数、数据完整率、均值、标准差、直方图等参数。其中变量X6的完整率为97.7%与缺失了16个观测有关。

下面再用另外一种方法来直观显示缺失值的分布。利用VIM包中的aggr()函数来直观显示数据集中缺失值的数目如图3所示。因为数据集的观测比较多,从简易的角度考虑,采取删除这16个观测的做法,其结果如图4所示。

图2 数据集的数据概述图

图3 未处理之前的数据集

图4 处理好的数据集

处理好数据集中的缺失值之后,对除分类变量之外的其他变量进行相关性分析,采用corrplot包中的corrplot()函数绘制自变量的相关性图示,如图5所示。对数据集进行划分,按照数据集的70%为训练数据,30%为测试数据划分为训练数据集和测试数据集。之后对训练数据集进行各种模型测试,在测试数据集上检验分类效果。

图5 变量的相关性图示

4 不同分类器

4.1 逻辑回归

逻辑回归是一种将一系列连续型变量和类别型变量来预测二值型的结果变量的方法。利用线性回归的方法进行回归拟合值,将回归拟合值通过sigmoid函数变为[0,1]之间的值,设定阀值为0.5,以此为依据进行分类。

在R语言中利用glm函数来实现,第一次进行逻辑回归实验,且结果如图6所示。发现其中的X2、X3、X5变量不显著,考虑将其去除以简化模型,重新进行实验其结果如图7所示。观察图7可发现每个变量都显著,之后在测试集上进行测试其结果如图8所示。观察图8,可以知道训练模型在测试集上的分类准确率为97.6%。

图6 第一次逻辑回归结果

图7 改进之后的逻辑回归结果

图8 逻辑回归在训练集上的测试结果

4.2 决策树

决策树首先选定一个最佳预测变量将全部样本单元分为两类,实现两类中的纯度最大化。如果预测变量连续,则选定一个分割点进行分类,使两类纯度最大化;若预测变量为分类变量,则对各类别进行合并后再分类,之后对每一个子类别继续执行上述过程,直至子类别中所含的样本单元数过少,或者没有分类法可将不纯度下降到一个阈值以下。最后依据每个终端节点中样本单元的类别众数来判别这一终端节点的类别。

该算法一般会得到一颗较大的树,出现过拟合现象,导致模型在测试集上表现不佳,为解决这一问题可采用10折交叉验证法选择预测误差最小的树。

在R语言中可采用rpart()函数实现。rpart函数返回的cptable值中包括不同大小的数对应的预测误差,可用于辅助设定最终的树的大小,其结果如图9所示。

图9 cptable值截图

其中,复杂度参数cp用于惩罚过大的树、树的大小即分支树nsplit、rel error栏即训练集各种树所对应的误差、交叉验证误差xerror(基于训练样本所得的10折交叉验证误差)、xstd为交叉验证误差的标准差。最后得到的最优模型如图10所示

图10 最终预测树

4.3 随机森林

随机森林是一种组成式的有监督学习方法。在随机森林中,我们同时生成多个预测模型,并将模型的结果汇总以提升分类效果,其类别采用多数决定原则。

在R语言中采用randomForest包中的randomForest函数来生成随机森林。函数默认生成500棵树,并且默认在每个节点处抽取3个变量,其实现结果如图11所示,其中袋外误差(OOB)即在训练集上的分类错误率为2.93%。

图11 随机森林实现结果

只有对训练的模型在测试集上,进行测试,其结果如图12所示。

图12 测试集上的测试结果

4.4 支持向量机

支持向量机(SVM)旨在在多维空间中找到一个能将全部样本单元分成两类的最优平面,这一平面使得两类中的距离最近的点的间距尽可能大,在间距边界上的点称为支持向量,分割的超平面位于间距的中间。

在R语言中采用e1071包中的svm函数实现,其实现结果如图13所示。

图13 支持向量机实现结果

之后在测试集上进行测试,得到的结果如图14所示。

图14 SVM在测试集上的结果

5 性能比较

对于一个分类结果,我们除了观察它的分类准确率是多少,我们还关心以下四个问题:

⚫良性结果中有多大比例成功鉴别

⚫恶性结果中有多大比例成功鉴别

⚫如果一个人被诊为恶性,这个判别有多大概率是准确的

⚫如果一个人被诊为良性,这个判别有多大概率是准确的

这些问题涉及一个分类器的敏感度、特异性、正例命中率、负例命中率,这四个指标的概念如图15所示。

图15 指标图解

本次文章中通过设计指标函数,使得函数返回值为这五个指标,以此来评价分类器的性能,其结果如图16所示。

图16 分类性能图

由图16观察可得,在该数据集上,分类性能均较好都达到了90%以上,最好的分类器是支持向量机(SVM),其次是随机森林和逻辑回归,决策树最差,在各个分项指标上基本也是SVM表现最佳。这些方法复杂度各异,相对简单的如逻辑回归和决策树,一些复杂、黑箱式的如随机森林和支持向量机,在分类效果基本相同时优先选择较简单的,只有当简单方法分类效果不佳时再考虑复杂度较高的方法。

相关文档
最新文档