数学建模心脏病判别.docx
- 文档编号:377223
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:38
- 大小:300.89KB
数学建模心脏病判别.docx
《数学建模心脏病判别.docx》由会员分享,可在线阅读,更多相关《数学建模心脏病判别.docx(38页珍藏版)》请在冰点文库上搜索。
数学建模心脏病判别
30组徐康仪、沈舒林、刘靖宇
心脏病的判别
摘要
本文主要解决的是如何通过对250个就诊者的各项生理指标数据进行分析得出一套能够预测就诊者是否患心脏病程度的函数和准则,并确定哪些生理指标是判断就诊者患心脏病程度的关键因数,从而减少化验指标。
首先,我们对题目提供的数据进行了分类和归一化处理,并对异常数据做出了合理的猜测和替换。
对于问题一:
我们分别建立了BP人工神经网络模型和多元Fisher模型,然后利用SPSS软件和MATLAB软件对数据进行处理和求解,得出了判断心脏病患病程度的判别函数,并将两种模型得出的结果进行了比较。
两种模型判断患病程度正确率如图:
Fisher判别模型
BP人工神经网络模型
正确率
67.4%
88.2%
对于问题二:
在问题一中得到的判别函数的基础上,运用MATLAB软件,我们将44名就诊人员13项数据代入判别函数,得出各自患病情况。
对于问题三:
题目要求找出判断心脏病患病程度的关键因素。
根据主因子分析法,我们将BP神经网络分析中重要性较低的因素逐一剔除,结合SPSS软件,观察剔除单一各因素后函数判断患心脏病程度正确率的变化,得出关键因素为A、C、E、G、H、I、J、K。
对于问题四:
我们结合在问题三中提取的关键因素,运用SPSS软件,修改了在问题一中得到的Fisher判别函数,并重新将44名就诊人员的13项指标数据代入判别式中得出了各自患病程度结果。
在将得出结果与问题二中结果进行比较,我们发现只有5个就诊者的判别结果稍有误差,并且他们的患病程度很接近。
这说明我们提取的关键因素是准确的。
本文最后对所建模型优缺点进行了分析与评价,并提出了改进与推广。
关键词BP人工神经网络多元Fisher判别模型主因子分析法
1、问题重述
1.1问题背景
心脏是维持全身血液循环的最重要器官。
由于现代人不正确的饮食和运动习惯等因素,心脏病患者人数逐年上升,心脏病已经成为威胁人类生命的十大疾病之一,除了老年人,中青年也成为心脏病猝死的高危人群。
年轻人的心脏病突发往往没有明显先兆,突然发作时很危险,心脏病的病因很多,有时很难判断一个人是否患有心脏病。
附录二是到某医院做心脏病检测的一些确诊者的生理指标数据。
(指标A,B,…M的含义见附录一,指标N表示是否确诊为心脏病以及患病的程度)
1.2需解决问题
问题一:
根据附录二中的数据,提出判别心脏病以及患病程度的方法,并检验你提出方法的正确性。
问题二:
按照问题一提出的方法,判断附录三中的44名就诊人员的患病情况。
问题三:
能否根据附录二的数据特征,确定哪些指标是影响人们患心脏病的关键或主因素,以便减少化验的指标。
问题四:
根据问题三的结果,重复问题二的工作,并与问题二的结果对比作进一步分析。
2、模型假设
假设一:
通过题目已给的十三个指标就可以判断心脏病的患病情况。
假设二:
不考虑就诊人员其他身体因素对其患心脏病的影响。
假设三:
附录表二中异常数据-9均为指标正常情况值缺失的代替值。
3、符号说明
符号
符号说明
归一化后得到的数据
总的样本数目
抽取样本的数目
指标数目
对应神经元的激发函数
分别表示指标
从神经元
到
的连接权
分区变量
学习速率
动量系数
指标因素的最小值
指标因素的最大值
Fisher判别函数
,Fisher判别式系数
I
组间离方差
和组内离方差
的比值
4、问题分析
4.1问题一:
要求我们根据附录二中的数据,提出判别心脏病以及患病程度的方法。
并检查该方法的正确性。
针对这样一个判别性问题,我们首先对多种可以使用的判别方法进行了分析,分别是传统的距离判别法,非线性fisher判别法,朴素bayes算法,Logistic回归判别法以及BP神经网络的分层网络判别法。
(1)距离判别法:
该方法不能考虑各总体本身在出现的可能性和无法克服错误数据造成的损失。
由于本题附录中有大量异常数据的存在,所以距离判别法不适用于本题。
(2)Logistic回归判别法:
因变量与自变量是通过一种已知或未知非线性函数关系相关联,尽管我们可以通过logit函数在一定范围内将它们转化为线性关系,但这种转换必将导致更大的计算量和结果误差,所以我们也放弃了Logistic回归判别法。
(3)BP神经网络:
BP神经网络拥有强大的容错能力,较符合本问题提供的数据情况,同时神经网络具有通过学习逼近任意非线性映射的能力,用BP神经网络法来发别心脏病以及患病程度有着明显的优越性。
BP神经网络虽有诸多益处,但现阶段我们所掌握的知识还不能使我们从已运行的BP网络结果中提取相关参数并用MATLAB软件建立
仿真函数来预测不含心脏病诊断结果N值结果的独立数据,为弥补这一缺陷,我们同时建立了BP神经网络和多总体Fisher判别模型来进行求解。
4.2问题二:
在问题一的基础上,我们对附录表三的数据进行处理,然后运用第一问得到的Fisher判别函数,将处理后44名待诊断者的数据代入判别式中,即可得到判别结果。
4.3问题三:
该问题需要找出患心脏病的主要因数,我们先运用BP神经网络中的自变量重要性分析得出各因数的初步重要性结果,然后按照主因子分析法的思想在Fisher判别式中逐一剔除一些重要性偏低的因素并观察剔除后的判断患病程度的正确率,若正确率浮动比较小择可以确定该因素为非主要因素。
4.4问题四:
只需根据问题三中主要因素建立修改后的Fisher判别式,重复第二问操纵即可。
5、数据的分析与处理
附录表二中给出了250组心脏病检测的样本,通过观察易知250组数据中包含大量异常数据。
如血清中胆固醇含量
不可能出现-9,
坡段值-9超界等,基于BP神经网络拥有强大的容错能力,我们仍保留这些异常数据以保证样本的多样性。
为了提高神经神经网络的训练效率,我们需要对样本数据输入和目标数据归一化处理,使其均落在[0,1]之间。
处理方法如下:
其中,
与
分别表示每一项指标因素中最小和最大的值。
处理后数据如表5.1:
表5.1:
250组心脏病检测的样本数据归一化处理后的数据表
序号
A
B
C
D
E
F
G
H
I
J
K
L
M
1
0.3158
1
0.3333
0.4444
0.4869
0.9
0.8182
0.8333
0
0
0
0
0
2
0.5526
0
0.6667
0.6296
0.3088
0.9
0.8182
0.6852
0
0.2
0.9167
0
0
3
0.2368
1
0.3333
0.3519
0.4771
0.9
0.9091
0.1481
0
0
0
0
0
4
0.5263
0
1.0000
0.4259
0.3644
0.9
0.8182
0.2407
1
0.3
0.9167
0
0
…
…
…
…
…
…
…
…
…
…
…
…
…
…
247
0.6842
1
0.2593
0.2941
0.9
0.8182
0.5093
0
0.4
0.8330
0
0
248
0.6842
1
0.6667
0.2593
0.4020
0.9
0.8182
0.6296
1
0.3
0
0
1
249
0.5263
1
1.0000
0.2778
0.4641
0.9
0.9091
0.6296
1
0.4
1
0
0
250
0.4474
1
1.0000
0.3519
0.3725
0.9
0.9091
0.4444
1
0.2
0.9167
0
0
用Fisher模型求解则需要人工剔除和改动一些数据。
觉察到因素中的异常数据均为-9,我们假设-9为因素缺失值的代替,然后对异常数据进行处理,将指标E中有-9的样本剔除;将指标FGKM中的-9替换为正常值(将F、G中的-9换成0;K中的-9换成2;M中的-9换成3)。
并预测出现-9较频繁的因素为非主要因素。
如图5.2
5.2:
对250组样本数据进行剔除和改动后得到的数据表
序号
A
B
C
D
E
F
G
H
I
J
K
L
M
N
1
40
1
2
140
289
0
0
172
0
0
2
-9
3
0
2
49
0
3
160
180
0
0
156
0
1
2
-9
3
1
3
37
1
2
130
283
0
1
98
0
0
2
-9
3
0
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
230
48
1
4
106
263
1
0
110
0
0
2
-9
3
1
231
55
1
2
120
256
1
0
137
0
0
2
-9
7
0
232
55
1
2
160
292
1
0
143
1
2
2
-9
3
3
233
48
1
4
122
275
1
1
150
1
2
3
-9
3
2
我们将经过数据处理后的250个案例根据
值分成两组,然后对其13项指标求平均值结果如表5.3:
表5.3:
:
正常人和患者13项生理指标的平均值
指标
1.A
2.B
3.C
4.D
5.E
6.F
7.G
8.H
9.I
10.J
11.K
12.L
13.M
正常人
46.28
0.657
2.61
131
237
0.042
0.210
145
0.105
0.196
1.97
-8.8
3.17
患者
49.18
0.867
3.59
136
270
0.144
0.233
130
0.656
1.261
2.01
-8.9
3.51
从上表我们很容易发现,心脏病判别的13项指标对样本是患病的影响区别很大。
如患者的第7、9、10项指标的值比正常人大很多。
我们搜索了相关资料来逐一查询附录表一中列举的各种因素与患心脏病之间的关系。
查阅后发现年龄A、性别B、地中海贫血M、静息时心电图结果G、血清中胆固醇含量E、运动时是否诱发心绞痛I与患心脏病有很大关系。
据此可初步判断静息时心电图结果G、运动是否诱发心绞痛I和运动心电图ST下降程度J为判断心脏的关键因素。
6、模型的建立与求解
6.1问题一的模型与求解:
6.1.1BP人工神经网络模型
神经网络系统是迄今为止功能最强、效率最高的最完美的信息处理系统,它所具有的非线性映射及并行处理能力在非线性系统的辨识和控制中发挥了独特作用,成为研究非线性预测控制的一种新工具,且BP(Backpropagation)神经网络是被研究得最为深入,应用最为广泛的人工神经网络之一。
BP人工神经网络通过模仿生理神经网络的结构和功能来进行信息处理。
大量的人工神经元以一定的规则连接成神经网络,神经元之间的连接及各链接权值的分布表示特定的信息。
神经网络分布式存储信息,具有很高的容错性。
BP网络能学习存储大量的输入—输出模式映射关系,而无需事先揭示描述这种关系的数学方程。
它的学习规则是使用最速下降法,通过反馈不断调整各层神经元之间的权值和阈值(误差反向传播法),使网络的误差平方和最小。
模型拓扑结构包括输入层(input),一层或多层隐层(hidelayer)和输出层(outputlayer),具体神经元模型可用下图表示:
a、BP人工神经网络模型的建立
BP神经网络拥有多层网络结构,其中隐层和输出层上的每个神经元都对应一个传递函数或激发函数和一个阈值。
BP神经网络隐层与输出层上的神经元j输出
由下式决定;
其中,
表示该神经元对应的传递函数激发函数,
表示神经元
到神经元
的连接权值,
表示神经元
的输入,
表示神经元的阈值,传递函数采用连续可微的非线性的Sigmoid函数
。
BP算法所采用的学习过程由正向传播和反向传播组成。
在正向传播过程中,如果输出层不能得到期望结果,就是实际输出与期望输出值之间有误差,那么转入反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播计算,再经过正向传播,如此反复,以使误差达到最小。
神经元的训练中权重和阈值的更新如下:
权值更新:
阈值更新:
其中,
为学习速率,
为动量系数。
利用神经网络对心脏病检验的一些确诊者的生理指标数据,最终判断其是否患病及患病的程度
综上,BP神经网络模型如下:
b、问题一利用BP神经网络模型进行求解:
我们用SPSS中的神经网络算法直接求解,具体操作步骤如下:
1.打开SPSS软件,新建一个数据。
2.导入含有分组变量N的数据库。
3.在分析里选择神经网络的多层感知器
变量的设置:
将患病程度N设为因变量,年龄A、性别B设为协变量,其余因素归为自变量,协变量重标度设为第二个标准化(0—1标准化),
导入分区标量。
5,设置分区变量
当
时,个案将会被作为训练样本,
时,将会被列入检验样本,
时,个案被分配到坚持样本中。
据此当
我们将个案151到175之间的25个案例
值设为0,其余置1,这样我们就将样本分成了两组,包含225个案的训练组和25个案的检验组。
6、设定网络体系结构
点开体系结构选择自定义体系结构,将隐藏层中的层数设定为两层,单位数设定为自动,激活函数设为
。
将输出层的激活函数设定为
。
在培训组中将培训类型设为批处理,优化算法设为梯度下降。
在设置输出时,选中描述,键结值,模型汇总,分类结果,
曲线,累计增益图,增益图,观察预测图,个案处理摘要,自变量重要性分析。
经过BP神经网络处理后,我得到如下结果如下表6.1:
表6.1:
BP神经网络处理结果表
分类
样本
已观测
已预测
0
1
2
3
4
正确百分比
训练
0
130
10
0
0
0
92.9%
1
18
16
0
0
0
47.1%
2
10
11
0
0
0
.0%
3
5
15
0
0
0
.0%
4
2
8
0
0
0
.0%
总计百分比
73.3%
26.7%
.0%
.0%
.0%
64.9%
分类
样本
已观测
已预测
0
1
2
3
4
正确百分比
训练
0
130
10
0
0
0
92.9%
1
18
16
0
0
0
47.1%
2
10
11
0
0
0
.0%
3
5
15
0
0
0
.0%
4
2
8
0
0
0
.0%
总计百分比
73.3%
26.7%
.0%
.0%
.0%
64.9%
测试
0
15
0
0
0
0
100.0%
1
0
0
0
0
0
.0%
2
0
1
0
0
0
.0%
3
0
1
0
0
0
.0%
4
0
0
0
0
0
.0%
总计百分比
88.2%
11.8%
.0%
.0%
.0%
88.2%
测试
0
15
0
0
0
0
100.0%
1
0
0
0
0
0
.0%
2
0
1
0
0
0
.0%
3
0
1
0
0
0
.0%
4
0
0
0
0
0
.0%
总计百分比
88.2%
11.8%
.0%
.0%
.0%
88.2%
因变量:
N
自变量重要性及其标准化重要性分析结果如图6.1:
图6.1自变量重要性及其标准化重要性分析结果图
从上表很容易看出13个因素对判断患心脏病程度影响的大小有很大差异,因素
在BP神经网络中判断患心脏病程度的重要性明显弱于因素
,
。
6.1.2Fisher判别模型:
a、Fisher模型的建立:
由于心脏疾病的诊断结果N有0、1、2、3、4五种不同的值,对应的我们将总体n分成5组。
Fisher模型判别基本思想是从总体
中抽取p个具有
个指标的样本观测数据,借助方差分析的思想构造一个判别式:
其中系数
,
,
,…,
使5组的区别最大,而使每组内离差最小。
对于一个新的样品,我们则只需要将其
个指标代入Fisher判别式求出
值,然后与各临界值比较,以确定它属于哪一组,即是否患病和患病程度。
此时要求5组间的离差平方和越大越好,组内的离差平方和越小越好。
5组间离差平方和为
:
组内离差平方和
:
即要求比值
据此,我们直接运用SPSS软件可求出使
值最大时的
,从而得出Fisher判别式:
综上,我们建立的Fisher判别模型为:
b、对问题一利用Fisher判别模型进行求解:
运用SPSS软件求解结果如表6.2
表6.2:
Fisher判别模型求解结果表
我们将上述参数代入Fisher判别式得到结果如下:
运用SPSS得到Fisher判别函数判断患心脏病程度正确率结果如表6.3:
表6.3:
Fisher判别函数判断患心脏病程度正确率结果表
分类结果a
N
预测组成员
合计
0
1
2
3
4
初始
计数
0
115
20
3
2
3
143
1
6
18
3
4
3
34
2
2
5
7
2
5
21
3
3
2
2
8
7
22
分类结果a
N
预测组成员
合计
0
1
2
3
4
初始
计数
0
115
20
3
2
3
143
1
6
18
3
4
3
34
2
2
5
7
2
5
21
3
3
2
2
8
7
22
4
1
1
0
2
9
13
%
0
80.4
14.0
2.1
1.4
2.1
100.0
1
17.6
52.9
8.8
11.8
8.8
100.0
2
9.5
23.8
33.3
9.5
23.8
100.0
3
13.6
9.1
9.1
36.4
31.8
100.0
4
7.7
7.7
.0
15.4
69.2
100.0
4
1
1
0
2
9
13
%
0
80.4
14.0
2.1
1.4
2.1
100.0
1
17.6
52.9
8.8
11.8
8.8
100.0
2
9.5
23.8
33.3
9.5
23.8
100.0
3
13.6
9.1
9.1
36.4
31.8
100.0
4
7.7
7.7
.0
15.4
69.2
100.0
a.已对初始分组案例中的67.4%个进行了正确分类。
6.2问题二的求解:
在问题一得到的Fisher判别函数的基础上,我们将44名就诊人员的13项指标代入Fisher判别函数式,得到结果如表6.4:
表6.4:
附录三中44名就诊人员的患病情况表
序号
患病情况
序号
患病情况
序号
患病情况
序号
患病情况
1
2
12
0
23
0
34
0
2
2
13
0
24
4
35
0
3
2
14
1
25
0
36
1
4
1
15
0
26
0
37
0
5
0
16
1
27
0
38
0
6
4
17
0
28
1
39
0
7
0
18
2
29
1
40
0
8
0
19
0
30
4
41
0
9
0
20
2
31
0
42
1
10
0
21
0
32
0
43
0
11
0
22
1
33
2
44
1
6.3问题三的解答:
基于BP神经网络对13个指标重要性的分析,我们初步判断因素L、M、A、G、B、F、D、J为判断心脏病患病情况的非关键因素。
根据主因子分析法用少数几个因子去描述许多指标或因素之间的联系的思路,我们逐一剔除上述因子并观察其对正确率变化的影响。
我们发现当我们试图剔除因子A,G和J,Fisher判别正确率会下降到65.2%,64.8%和64.8%,而单独剔除其它因子则几乎不会影响判断正确率。
因此,我们认为因子A,G,J为判断患心脏病程度的关键因素。
综上,我们得出判断心脏病患病程度的关键因素为:
A:
年龄
C:
胸痛类型
E:
血清中胆固醇含量
G:
静息时心电图结果
H:
最大心跳速率
I:
运动是否诱发心绞痛
J:
运动心电图ST下降程度
K:
ST段斜坡
6.4问题四的解答:
根据在问题三种得出的关键因子,我们重新修改了Fisher判别函数,结果如表6.5:
表6.5:
Fisher判别式系数表
根据分类函数系数表格我们可以得到新的Fisher判别函数为:
然后再将44名待诊断者8项关键生理指标代入上述各类型的Fisher判别函数,判断出44名诊断者患病情况如表6.6:
表6.6:
将8项关键生理指标代入后附录三中44名就诊人员的患病情况表
序号
患病情况
序号
患病情况
序号
患病情况
序号
患病情况
1
2
12
0
23
0
34
1
2
2
13
0
24
4
35
0
3
2
14
1
25
0
36
1
4
2
15
0
26
0
37
0
5
0
16
1
27
0
38
0
6
4
17
0
28
1
39
0
7
0
18
2
29
1
40
0
8
3
19
0
30
3
41
0
9
0
20
2
31
0
42
0
10
0
21
1
32
0
43
0
11
0
22
1
33
2
44
1
从上表可知,44名待诊断者中,未患病的有24名,患心脏病程度为1的有9名,患心脏病程度为2的有7名,患心脏病程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 心脏病 判别