机器分类模型在肺癌病例中的比较研究

3 篇文章 0 订阅
2 篇文章 0 订阅

各位朋友,我已开通微信公共号:小程在线

我会把文章及时的更新到公共号上,欢迎大家的关注。

 

机器分类模型在肺癌病例中的比较研究

 

摘要:针对机器分类方法在医学数据应用上的差异,使用HIS系统收集的肺癌数据选择不同的机器分类方法进行了实验研究,并使用R语言对决策树算法、Bagging算法、Adaboost算法、SVM、KNN、神经网络算法各种分类算法在肺癌数据进行了实验分析与评估,探索各个机器分类算法的优点和不足。结果证明在肺癌数据研究中证实Adaboost与神经网络的准确性很高,具有良好的诊断表现。

 

关键字:机器分类模型  肺癌  adaboost算法 神经网络

0 引言

如今,数据挖掘技术在医学领域中的应用越来越广泛。在疾病诊治、基因研究、图像分析、药物开发等方面都获得了可喜的成果。随着电子病历的推广,HIS系统里的医学数据真实可靠、稳定性较强。这样对挖掘结果的维护、不断提高挖掘模式的质量都是非常有利的条件。从这样的数据集中运用各种数据挖掘技术了解各种疾病之间的相互关系、各种疾病的发展规律,总结各种治疗方案的治疗效果对疾病的诊断、治疗和医学研究都是非常有价值的。

分类是指按照种类、等级或性质分别归类,其最重要的特征就是事先已经知道类别,应用不同的分类算法结果可能会各不相同,不同的机器分类方法在医学不同的疾病上具有不同的应用场景,针对不同的疾病选择什么类型模型必须进行选择性的比较研究,提高每个算法在医学不同情境下的应用效率。

    本文针对医院管理信息系统(全称为Hospital Information System)即HIS系统收集的肺癌数据选择不同的机器分类方法实际效果进行对比进行了实验研究,探索各个机器分类算法的优点和不足,并使用R语言对决策树算法、Bagging算法、Adaboost算法、SVM、KNN、神经网络算法各种分类算法在肺癌数据进行了实验分析,结果证明在肺癌数据研究中Adaboost与神经网络的准确性很高,适合于此疾病的分析。 

1 机器模型方法比较

(1)  Adaboost算法

Adaboost是一种迭代分类算法,不断地通过加权再抽样改进分类器,每一次迭代时都针对前一个分类器对某些观测值的误分缺陷加以修正,通常是在放回抽取样本时对那些误分的观测值增加权重,相当于对正确分类的减少权重,这样就形成一个新的分类器进入下一轮迭代。在每轮迭代时都对这一轮产生的分类器给出错误率,最终结果由各个阶段的分类器的按照错误率加权投票产生[1]。算法步骤:

Given:(,),…,() where

Initialize .

For t=1,…,T:

     Train weak learner using distribution .

     Get weak hypothesis :X{-1,+1} with error

                

Choose .

Update:

                     

                               

Whereis a normalization factor(chosen so that  will be a distribution).

Output the final hypothesis:

              

现在,boost算法有了很大的发展,出现了很多的其他的boost算法,例如:logitboost算法,Real Adaboost算法等。本文主要研究Adaboost算法的实现过程。

(2)人工神经网络

人工神经网络是由人工建立的,以由有向图为拓扑结构的动态系统,它通过对连续或断续的输入作状态响应而进行信息处理。简单的说就是:人工神经网络是一种旨在模仿人脑结构及其功能的信息处理系统[2];它可以有效地解决很复杂的有大量互相相关变量的回归和分类问题,我们同样可以用之建立临床数据集的分类模型。算法步骤:

(1) 一组连线。分别来自各个输出Xi,每条连接线上的全重为第一个下标是指当前的神经元,第二个小标是指权重所指向的突触的输入。

(2) 加法器。将输入信号Xi与对应的突触权重相乘进行累加。该造作会建立一个线性加法器。

(3) 激活函数,限制神经元输出值的幅度。

(4)一个外部的偏差。偏差可能会增大或者减小激活函数的净输入,这取决于该偏差是负值还是正值。

 

 (3) 决策树算法

    决策树是一种逼近离散函数值的典型分类算法,决策树的本质是利用归纳算法生成可读的规则和决策树,通过一系列规则对数据进行分类的过程。决策树经典算法主要有CART、C4.5算法。本文实验使用的是CART算法。

CART方法[3]是一种基于最小距离的Gini index标准的决策树分类方法。利用CART方法处理数据分类时,当生成的决策树中某一分枝结点上的子数据集的类分布大致属于一类时,就可以利用多数表决的方式,将绝大多数记录所代表的类作为该结点的类标识,并将该结点变为叶结点。在决策树构造时,由于训练数据中的噪音或孤立点,许多分枝反映的是训练数据中的异常,使用这样的判定树对类别未知的数据进行分类,分类的准确性不高,CART算法经常采用事后剪枝方法。

(4) Bagging算法

    Bagging算法[4]是一种集成学习算法,其子分类器具有相同的加权权重。通常认为具有更高分类准确度的分类器分类性能较好,性能好的分类器要比性能差的分类器的结果更为可信。Bagging算法是用来提高学习算法准确度的方法之一,它通过构造一个预测函数系列, 然后以一定的方式将它们组合成一个预测函数,从而将弱学习算法提升为任意精度强学习算法。Bagging利用了自助法(bootstrap)放回抽样。它对训练样本做许多次(比如k次)放回抽样,每次抽取和样本量同样的观测值,于是产生k个不同的样本。然后,对每个样本生成一个决策树。这样,每个树都对一个新的观测值产生一个预测,由这些树的分类结果的多数(“投票”)产生bagging的分类。

Bagging算法的具体描述为:

(1)For t=1,…,T Do  

(2)随机从训练集中提取 m个输入:,,A,,

①训练得到模型;

②将训练样本放回;

(3)输出: Breiman指出,稳定性是Bagging能否提高预测准确率的关键因素: Bagging对不稳定的学习算法能提高预测的准确度 ,而对稳定的学习算法效果不明显, 有时甚至使预测精确度降低 。

  (5)支持向量机(SVM)算法与KNN算法

支持向量机(Support Vector Machine)是一种分类算法,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。支持向量机在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性,即对特定训练样本的学习精度和学习能力之间寻求最佳折衷,以期获得最好的泛化能力[5]。

K最近邻方法是是一种简洁而有效的非参数分类方法的经典的分类算法,其基本算法思想为以待测样本的k个最近距离的样本点的所属类别进行投票决定待分类样本点的类别。在机器学习分类算法中占有相当大的地位。它是一个理论上比较成熟的方法。既是最简单的机器学习算法之一,也是基于实例的学习方法中最基本的,又是最好的文本分类算法之一。算法流程略。

下面我们列表比较各种机器分类算法的优缺点,如表1所示。 

  

             

分类算法

优点

缺点

决策树

能同时处理数据型和常规型属性,可通过静态测试来对模型进行评测、容易理解和解释。在短时间内能够对大型数据源做出可行且效果良好的结果。

忽略属性之间的相关性;处理缺失数据时有困难;信息增益的结果偏向于那些具有更多数值的特征。

SVM

在解决高维问题、非线性问题方面比较突出,可以避免神经网络结构选择和局部极小点问题。可以提高泛化性能。SVM学习问题可以表示为凸优化问题,可利用已知的有效算法发现目标函数的全局最小值。

对缺失数据敏感;对非线性问题没有通用解决方案;必须谨慎选择Kernelfunction来处理。

 

Adaboost

可将不同的分类算法作为弱分类器,并能较好地利用了弱分类器进行级联。具有很高的精度;相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。

AdaBoost迭代次数不好设定;数据不平衡导致分类精度下降;训练比较耗时。

神经网络

可映射任意复杂的非线性关系,学习规则简单。有很强的非线性拟合能力、鲁棒性、记忆能力、非线性映射能力以及强大的自学习能力。

解释推理过程和推理依据能力差;数据不充分时无法进行工作。问题特征的数值表示导致丢失信息。

邻近算法

无需估计参数,无需训练,算法简单,易于理解与实现;适合对稀有事件进行分类;在多分类问题,KNN比SVM的表现要好。对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

计算量较大;输出的可解释性不强,无法给出像决策树那样的规则;类别评分不是规格化的。样本容量较小的类域比较容易产生误分。

Bagging算法

Bagging的训练集是随机的,各训练集是独立的,Bagging的每个预测函数(即弱假设)没有权重,Bagging的各个预测函数可以并行生成,对于像神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销。

Bagging算法不稳定,数据集的小变动能够使得分类结果显著的变动。

2   机器分类模型的比较与评估

(1) 数据来源

论文实验使用的数据集是HIS系统收集的人工肺癌数据集。数据集中每条连接记录共有10个属性:3个离散属性和7个连续属性,数据集共168条数据,随机选取112条数据作为训练集,剩下的数据作为测试集。

                     

inst

time

status

age

sex

ph.ecog

ph.karno

pat.karno

meal.cal

wt.loss

3

455

2

68

1

0

90

90

1225

15

5

210

2

57

1

1

90

60

1150

11

12

1022

1

74

1

1

50

80

513

0

7

310

2

68

2

2

70

60

384

10

11

361

2

71

2

2

60

80

538

1

6

81

2

49

2

0

100

70

1175

-8

...

...

...

...

...

...

...

...

...

...

 

(2)模型评估方法

模型在训练集数据上的误差不能反映其在新数据集上的误差情况。为了更好地估计模型在新数据集上的错误率,我们使用更复杂的方法,称作交叉验证(cross validation),它严格地使用训练集数据来评价模型在新数据集上的准确率。交叉验证为我们在实际使用分类模型时提供了一种估计准确率的方法。使得我们能够挑选出最适于应用场景的模型。常用的交叉验证方法是holdout方法和K-fold交叉验证方法。Holdout 方法是同一份训练数据既用于数据拟合又用于准确率评估,会导致过度乐观。最容易的规避方法是分别准备训练和测试的两个子数据集,训练子集仅用于拟合模型,测试子集仅用于评估模型的准确率。随机地选择一部分训练数据仅用于训练过程。通常保留30%的数据作为测试数据。另一种交叉验证方法是K-fold交叉验证。K-fold交叉验证也依赖于训练数据的若干个相互独立子集。主要的区别在于K-fold交叉验证一开始就随机把数据分割成K个不相连的子集。每次留一份数据作为测试集,其余数据用于训练模型。实验使用的是Holdout 方法[6]。

 

3. 实验与结果分析

一、各模型算法的交叉验证

 

现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive),混淆矩阵如图3所示,其中TP (True positives)为正例且被分类器划分为正例的实例数,FP (False positives)为负例但被分类器划分为正例的实例数;FN(False negatives)为正例但被分类器划分为负例的实例数;TN (True negatives)为负例且被分类器划分为负例的实例数。

表3 混淆矩阵

 

 

预测类别

 

 

 

 

Yes

No

总计

Yes

TP

FN

P(实际为Yes)

No

FP

TN

N(实际为No)

总计

P’被分为Yes)

N’被分为No)

P+N

 

 

1、Adaboost算法

R语言实现代码如下:

 

 

weka.adab=boosting(ph.ecog~.,data=a[samp,],mfinal=15,control=rpart.control(maxdepth=5))

weka.pred<-predict.boosting(weka.adab,newdata=a[-samp,])

weka.pred[-1

weka.predt<-predict.boosting(weka.adab,newdata=a[samp,])

weka.predt[-1]

 

 

预测类别

训练集分类结果

测试集分类结果

真实类别

0

1

2

3

0

1

2

3

0

15

3

0

0

22

1

0

0

1

10

35

2

0

0

38

0

0

2

0

3

16

0

0

1

20

0

3

0

0

0

0

0

0

0

0

   

通过R语言对测试集进行了使用交叉分类的因素分析,建立在每个因子水平组合的列连表计数,结果如表5所示。在测试集中,绝大部分的数据组出现在对角线上,但是属于0类的数据组有1组分为了1类;属于2类的数据组有1组分为了1类。

    图2是Adaboost算法的影响因素比图,ph.karno占据很高的比重,虽然aage,time,inst,wt.loss也占用一定的比例,但是ph.karno占有决定性的优势,对Adaboost算法的准确性举足轻重。

2、决策树算法

利用R语言实现代码实现的决策树图如图3所示,代码省略。

          

图3可以看出决策树一共绘制了83组数据,在ph.karno不小于75分的情况下,有61组数据,他们的ph.ecog生存状态值平均为0.67(数值越小,表明生存状态越好);在ph.karno不小于95分的情况下,有15组数据,占到18%,他们的ph.ecoh生存状态值平均为0.067;在ph.karno不小于85分且inst不小于12的情况下,有8组的生存状态值平均为0.38,占到10%,在inst小于12的情况下有15组数据,生存状态值平均为0.8,其他的生存状态值平均为1.1;在ph.karno小于75且体重减少7.5的情况下,有7组数据生存状态值平均为1.6,在体重减少大于7.5的情况下,有15组数据生存状态值平均为2.1。总体来说生存状态良好。

 

 

预测类别

训练集分类结果

测试集分类结果

真实类别

0

1

2

3

0

1

2

3

0

16

9

0

0

19

3

0

0

1

7

29

5

0

4

33

3

0

2

0

1

17

0

0

2

18

0

3

0

0

0

0

0

0

1

0

                  

通过R语言对测试集进行了使用交叉分类的因素分析,对建立在每个因子水平组合的列连表计数,结果如表3所示。如果全部分类正确,对角线上的数字全部大于0,而不在对角线的数字都为0。在测试集中,绝大部分的数出现在对角线上,但是属于0类的数据组有3组化为了1类;属于1类的数据组有4组分为0类和有3组分为3类;属于2类的数据组有2组分为了1类;属于3类的数据组有1组分为了2类。

3、Bagging的分类

利用R语言实现代码实现的决策树图如图3所示,代码省略。

 

 

 

预测类别

训练集分类结果

测试集分类结果

真实类别

0

1

2

3

0

1

2

3

0

11

2

0

0

14

1

0

0

1

14

34

1

0

8

36

2

0

2

0

5

17

0

0

3

18

1

3

0

0

0

0

0

0

0

0

 

通过R语言对测试集进行了使用交叉分类的因素分析,对建立在每个因子水平组合的列连表计数,结果如表5所示。在测试集中,绝大部分的数据组出现在对角线上,但是属于0类的数据组有1组分为了1类;属于1类的数据组有8组分为0类和2组分为2类;属于2类的数据组有3组分为了1类和有1组分为了3类。

 

图4是bagging算法的影响因素比,发现ph.karno的条形图的高度远远大于其他因素,其他几个因素可以忽略不计,说明了ph.karno对bagging的算法的影响远远大于其他属性。

4、神经网络算法、K最邻近算法与支持向量机

利用R语言实现代码实现的神经网络算法、K最邻近算法、支持向量机如表6—表8所示,代码省略。

表7  神经网络算法的列连表

 

预测类别

训练集分类结果

测试集分类结果

真实类别

0

1

2

3

0

1

2

3

0

12

12

1

0

22

0

0

0

1

8

28

4

1

1

39

0

0

2

1

6

11

0

0

0

20

0

3

0

0

0

0

0

0

0

1

         

通过R语言对神经网络算法测试集进行了使用交叉分类的因素分析,对建立在每个因子水平组合的列连表计数,结果如表6所示。在测试集中,绝大部分的数据组出现在对角线上,属于1类的数据组有1组分为0类。

 

表8  最邻近算法的列连表

 

预测类别

训练集分类结果

测试集分类结果

真实类别

0

1

2

3

0

1

2

3

0

11

10

3

0

10

13

2

0

1

1

40

0

1

2

37

2

0

2

 

8

11

0

0

7

11

0

3

0

0

0

0

0

0

0

0

 

    通过R语言对K最邻近算法测试集进行了使用交叉分类的因素分析,对建立在每个因子水平组合的列连表计数,结果如表7所示。在测试集中,绝大部分的数据组出现在对角线上,但是属于0类的数据组有13组分为了1类和2组分为了2类;属于1类的数据组有2组分为0类和2组分为2类;属于2类的数据组有7组分为了1类。

 

                             

 

预测类别

训练集分类结果

测试集分类结果

真实类别

0

1

2

3

0

1

2

3

0

18

1

0

0

9

1

0

0

1

4

38

1

0

15

35

1

0

2

0

1

19

1

1

5

17

0

3

0

0

0

0

0

0

0

0

 

通过R语言对支持向量机训练集与测试集进行了使用交叉分类的因素,建立在每个因子水平组合的列连表计数,结果如表8所示。在测试集中,绝大部分的数据组出现在对角线上,但是属于0类的数据组有1组分为了1类;属于1类的数据组有15个分为0类和1个分为3类;属于2类的数据组有1组分为了0类和有5组分为了1类。

二、各算法的预测率比较

由混淆矩阵可以计算以下评价指标,我们得到6种算法的错误率(error rate),错误率则与正确率相反,描述被分类器错分的比例, 对某一个实例来说,分对与分错是互斥事件,错误率越低,分类器越好;

图6表示的是6种算法的错误率,Adaboosthe 和神经网络的错误率为2.4%,决策树和bagging的错误率在20%以下,SVM和KNN在30%左右,为了更直观的表现如图5 所示:

 

Algorithm

Number

Adaboost

0.024

ANN

0.024

Decision Tree

0.158

Bagging

0.18

SVM

0.273

KNN

0.309

根据实验数据得到的预测结果发现:Adaboost算法和神经网络的正确率高达97.5%,以上,而决策树和Bagging算法的正确率达80%以上,K最邻近和SVM表现最差,正确率在70%左右。                        

对于分类模型,我们介绍了几个用于上述流程中步骤3的模型性能指标。这些技术包括简单的准确率计算,混淆矩阵。

 

4  结论

本文提出了机器分类模型在肺癌数据上的研究比较,发现Adaboost和神经网络的预测率高达95%以上,而决策树和Bagging算法的预测率达80%以上,K最邻近和SVM表现最差,预测率在70%左右。ph.ecog占据决定性的影响因素,在一定程度上可以根据ph.ecog的分数对病人进行疾病诊断,实验结果对临床上的诊断有一定的参考价值。另一方面,选择分类模型的过程中需要根据数据集情况尝试运用不同的分类方法,并用交叉验证的方法对模型进行检测,最后选择准确性高的分类模型,以实现数据的最高利用价值。不同的机器分类方法在医学不同的疾病上具有不同的应用场景,针对不同的疾病选择不同类型模型可提高医学数据不同情境下的应用效率,从而提高疾病的诊断准确率。

 

参考文献:

[1]Freund Y,SehaPireRE,ADecision-Theoretie Generalization of Online Leaming and an Application to Boosting[J}.Journal of ComPuter and System Seiences,1997,55(l):119-139

[2]DONG Jun,HU Shang-xu. The progress and prospects of neural network research[J].Information and Control,1997,26(5):360-368.

[3]Breiman L, Friedman J H, Olshen R A et al. Classification and regression trees[C]. California:

Wadsworth, 1984

[4]Peter B,Yu Bin.Analysing Bagging[J].Annals of Statistics,2002,30(4):927-961.

[5]ZHANG Xue-gong. Statistical learning theory and support vector machines[J]. Acta Automatica Sinica,2000,26(1):32-41.

[6]http://mp.weixin.qq.com/s?__biz=MzA4OTg5NzY3NA==&mid=400646509&idx=2&sn=573555e859351897026b1238a7a7da42&3rd=MzA3MDU4NTYzMw==&scene=6

[7]Robert E.Schapier ,Yoram Singer.Improved Boosting Algorithms Using Confidence-rated Predictions,Machine Learning,1999,37(3):297-336.

[8](英)汉德.H,Heikki Mannla,Padhraic Smyth著.数据挖掘原理(第一版)。张银奎,廖丽,宋俊等译。北京:机械工业出版社,2003.

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值