9
1 基于 基于 基于 基于 K-最近邻算法的心脏病 近邻算法的心脏病 近邻算法的心脏病 近邻算法的心脏病诊断建模 诊断建模 诊断建模 诊断建模 教学案例 教学案例 教学案例 教学案例

教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

1

基于基于基于基于 KKKK----最最最最近邻算法的心脏病近邻算法的心脏病近邻算法的心脏病近邻算法的心脏病诊断建模诊断建模诊断建模诊断建模

教学案例教学案例教学案例教学案例

文件状态: [ ] 草稿 [√] 正式发布 [ ] 正在修改 [ ] 作废 文件标识: TipDM_03_014 当前版本: V01.00.000 作 者: 教培部 参 与 者: 研发部 完成日期: 2014-07-20 泰迪科技(www.tipdm.com)

Page 2: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

2

1.1.1.1. 概述概述概述概述 K 最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的 k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN 算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN 方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于 KNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN 方法较其他方法更为适合。 KNN 算法不仅可以用于分类,还可以用于回归。通过找出一个样本的 k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。 该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的 K个邻居中大容量类的样本占多数。因此可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的 K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。 2.2.2.2. 案例描述案例描述案例描述案例描述 心脏是一个强壮的、不知疲倦、努力工作的强力泵。心脏之于身体,如同发动机之于汽车。如果按一个人心脏平均每分钟跳 70次、寿命 70岁计算的话,一个人的一生中,心脏就要跳动近 26亿次。一旦心脏停止跳动而通过抢救不能复跳,那就意味着,一个人的生命终止了。 心脏病是人类健康的头号杀手,全世界 1/3 的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病。因此心脏病的诊断一直是医学界关注的重点之一。 心脏病的一些基本的症状包括:体力活动时有心悸、疲劳、气急等不适,或产生呼吸困难感;劳累或紧张时,突然出现胸骨后疼痛或胸闷压迫感;左胸部疼痛伴有出汗,或疼痛放射到肩、手臂及颈部;出现脉搏过速、过慢、短促或不规则;熟睡或做恶梦过程中突然惊醒,感到心悸、胸闷、呼吸不畅,需要坐起来一会儿才好转;性生活时感到呼吸困难、胸闷或胸痛;饱餐、寒冷、吸烟、看情节紧张的电影或电视时,感到心悸、胸闷或胸痛;在公共场所中,容易感到胸闷、呼吸不畅和空气不够;上楼时比以前或比别人容易出现心悸和气急;突然出现一阵心悸、头晕、眼前发黑,有要跌倒的感觉;儿童的活动能力比同龄差,活动时感觉心悸、气急、乏力、口唇青紫;感冒后轻微劳动感到心悸、疲乏,或走路稍快就觉气急;

Page 3: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

3

突然胸部不适而昏倒在地上,或有马上要“死去”的感觉;晚间睡觉枕头低时感呼吸困难,需要高枕而睡 ;出现下肢浮肿;手指或足趾末端出现肥大、变形;脸、口唇和指甲出现青紫、暗红等异常颜色;静息时自觉心跳有异常声音,或手掌握触前胸壁心脏部位时有震颤感;妊娠期出现心悸、头晕、气急或浮肿;左肩痛长期不愈。 本例用 K-最近邻算法对心脏病进行诊断,使用的数据来自 UCI 机器学习数据库中的Heart 数据集,其中的条件属性是有可能导致心脏病的多个因素,决策属性是最终的诊断结果。其中的指标总共有 13 个,分别为:年龄(Age),性别(Sex),胸部疼痛类型(共四种,Pai),平静状态下的血压(Rbp),血清胆固醇含量(单位 mg/dl,Cho),未进食状态下的血糖浓度(Fbs),平静状态下心电图结果(ECG),最大心跳速率(Rat),运动是否引起心绞痛(Ang),运动试验引起 ST 段的下降值(对比平静状态时的值,Ope),ST 段峰值的趋势(Slope),透视中被染色的主血管个数(0-3,Ca),是否海洋性贫血(Tha)。类别 1表示没有心脏病,类别 2 表示有心脏病,样本共有 270 个,为了提高分类的准确率,事先对数据归一化[0,1]区间,样本数据如下:

heart.xls

3.3.3.3. 建模过程建模过程建模过程建模过程 本案例通过太普数据挖掘套件(http://www.tipdm.cn)实现建模过程。 更多关于此软件工具的介绍详见:http://www.tipdm.com

� 方案管理方案管理方案管理方案管理

Page 4: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

4

� 数据管理数据管理数据管理数据管理

� 预处理预处理预处理预处理 针对14个评价指标,进行相关性分析。 1、 导入样本

Page 5: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

5

2、 参数设置

3、 属性选择

Page 6: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

6

� 预测建模预测建模预测建模预测建模

1、 导入数据 导入260条记录作为训练样本,用于建模:

2、 参数设置

Page 7: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

7

3、 交叉验证

4、 模型训练

Page 8: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

8

5、 模型验证 导入剩下的10条非训练样本来验证模型:

通过实际值和预测值的比对可以看出预测的效果还是蛮不错的。

6、 模型预测 模型训练并经验证满足所需精度要求后,接下来就可以进行预测了:

Page 9: 教学案例Pai O @ Ç ¹ ^ Ñ[ 9 Rbp O @ ÑÒÓÔÕÖ 9b Á mg/dl O Cho O @ × æ Ø ^ Ñ ÙÚÛ 9 Fbs O @ Ç ¹ ÜÍ m 9 ECG O @ Bw h Ý 9 Rat O @ Þ ýU ß45à Y 9 Ang O @ Þ ý

9

更多数据挖掘算法建模过程参见:http://www.tipdm.org/information/index.jhtml