论文部分内容阅读
摘要:【目的/意义】旨在利用机器学习中决策树算法,构建心脏病预警模型,为临床医生及患者提供心脏病预警,反映患者心脏病发病情况。【方法/过程】以python为语言基础,运用机器学习中决策树所涵盖的算法理论对心脏病数据集建立预警模型,并构建用户程序界面。【结果/结论】根据实验结果,决策树算法预测准确率相对较理想,能够较为准确的反应患者的患病情况,可为患者提供心脏病发病预警信息以及协助临床医生进行诊疗。
关键词:心脏病发病预警;机器学习;决策树
中图分类号:TP311.1 文献标识码:A
文章编号:1009-3044(2020)19-0187-03
开放科学(资源服务)标识码(OSID):
1 相关研究及问题提出
心脏病是一种临床常见非传染性的慢性疾病。临床上多表现为心绞痛,呼吸困难,心悸,胸痛不适等症状,对人的身体健康有着极为不利的影响,是当今社会导致死亡的主要疾病类型之一[1]。
决策树算法( Decision Tree)作为机器学习中进行分类与回归的代表性算法。该算法可用于分类树形结构,其中对某一属性的一次测试看作一个内部节点,根据测试所得结果看作一条边,将某个类或类的分布作为叶子节点。其中每节点判断条件由对象属性表示,其分支表示符合节点条件的对象,对象所属的预测结果由此决策树的叶子节点表示[2]。心脏病起病隐匿,病程时间长,病因复杂。传统的医疗决策模型往往难以对这类疾病进行精准分析诊断,从而导致患者发现晚、治疗不及时。通过机器学习正确诊断此类疾病,对现有医疗数据进行有效提取处理,可准确构建预测模型,预测患者是否发病,从而获得诊断结果[3]。
目前国外诸多学者对心脏病发病预警模型进行了研究[4]。2009年,Tan K C.Teoh EJ[5]提取加州欧文分校机器学习数据库心脏病数据集,在LIB支持向量机和Weka上实现,得到84.07%的预测准确率。Chaurasia、Pal[6]在2013年使用朴素贝叶斯、J48、引导聚集算法对UCI数据集中的11个特征项进行预测,获得结果显示朴素贝叶斯准确率为82.31%,J48准确率为84.31%,引导聚类算法准确率为85.03%。Parthiban、Srivat-sac7]2012年利用来自印度金奈某研究所的心脏病数据集,使用Weka平台实现朴素贝叶斯及支持向量机诊断心脏病患病率.分别得到准确率74.00%、94.60%。2015年Vem bandasamy等人[8]使用朴素贝叶斯算法对印度金奈某研究所的心脏病数据集进行分类预测,得到86.42%预测准确率。机器学习算法涵盖广泛,在模型研究时,特征变量,算法的选择不同,均会导致预测准确率差异[9]。
基于上述情况,本模型利用决策树算法对UCI克利兰夫医学研究中心的心脏病数据集构建研究模型。
2 决策树算法描述
决策树生成:一是向根节点输人数据;二是利用信息熵(或基尼系数)度量,选择数据某个特征来把数据划分成不相交的节点;三是根据数据的不确定性大小对节点进行转化分割[10],根据模型研究需求选用基尼系数作为度量。
基尼系数定义如下:
条件基尼系数根据A的不同取值{a1,……,am}对y进行限制后,先对y分别计算基尼系数,再将m个基尼系数根据特征取值本身的概率加权求和,从而得到总条件基尼系数。因此条件基尼系数越小,y被A限制后总不确定性越小,A可以帮助提供决策。
根据基尼系数度量方式从数据集中训练出一系列的划分规则,使得这些规则能够在数据集上集中体现构成了决策树的生成过程。
3 基于决策树算法的心脏病发病预警模型实现
基于决策树算法的心脏病发病预警模型实现,如下图1所示:
3.1 原始心脏病数据集特征筛选
研究采用来源UCI机器学习知识库的心脏病数据集,共有303个样本和76个特征,基于该数据集选用心脏病致病原因的14个特征构成特征子集,如下表1所示。
3.2 Python语言构建决策树预警模型
对本心脏病数据集进行处理过程中,可知模型预测结果为:患病(设值1)或不患病(设值0),因此将此类预测看作二分类。
Stepl数据预处理的拆分与拟合。本研究特征子集中在14个特征里提取target列作为标签列,由于此时target作为预测目标结果,在特征子集中将此列丢弃,同时对特征子集进行拆分和交叉验证。导人Skleam中train_test_split,将数据集分割为训练集和测试集,设测试集占比25%。拆分后对数据集进行拟合操作,并对数据集吻合度进行评分。
Step2决策树CART算法优化参数模型。在Sklearn模块中,根据拟合后结果,对比训练集评分数据与测试集评分数据。本研究中,特征子集中含有14个特征,样本数较大,评分对比中易呈现训练集评分高于测试集,出现决策树过拟合现象,需采用前剪枝操作。采用决策树CART算法,通过max_depth參数优化模型,获得决策树bestdepth最佳深度值。再利用min_impurity_decrease参数优化模型,由于此参数为基尼系数指定阈值,当决策树分裂后,若其增益低于此阈值bestmin即立刻停止分裂,以此限制决策树生长。
Step3决策树预警学习模型及测试。以基尼系数为度量原则,构造一棵系数值下降最快的树,遍历现有特征子集中13个特征,选择最优特征为分裂特征生成树。又将两组参数best-depth最佳深度值及阈值bestmin,代人模型,获取模型得分(tees_score)、查准率、召回率、二分类模型精确度指标( Fl_score),以上数值均在0-1间。
3.3 预警模型界面程序构建 利用上述步骤中处理后的数据集特征,获取特征标签并存储,导人训练集部分,并顺序对应特征集创建心脏病发病预警诊断的审核按钮。通过创建并设置顺序输入栏,引导用户在输入框中输入自身实际情况,生成测试数据列表带人模型测试,进行结果判断并输出。数据判断结果“1=患病”“0=不患病”对应条件输出。设置页面布局构建预警界面,达到直观清晰的结果输出,便于用户使用。
4 实验结果及研究意义
4.1 实验结果
由上述步骤,逐步得出以下实验结果。决策树模型在数据预处理过程中获得训练集评分为1.0,大于测试集评分0.77049,通过两组评分,可发现决策树出现过拟合现象。需对决策树做进一步前剪枝操作,利用参数模型优化得max_depth的最佳深度为5.0,由此可知5.0深度为该决策树生长的最大深度。获取min_impurity_decrease中bestmin值为0.008,为不纯度最小减少值,即节点再分裂过程中必须满足减少的不纯度大于这个0.008。根据预警学习模型测试得到测试结果如下表2所示。由表可知决策树算法所得出的预测结果及F1一score数值为0.81081,达到实验结果较理想。
4.2 研究意义
通过决策树算法构建心脏病发病预警模型,发现可直观且准确地反映患者心脏病患病情况。模型的程序实现可为临床医生决策提供支持与决断,判断患者患病情况;也可应用于各医疗软件及微信小程序,为用户提供心脏病预警信息,争取早发现、早治疗,不延误病情,及时就诊。同时本研究也为医疗程序开发者提供新思路,尽可能在基础医疗需求上满足用户。
5 结束语
本课题利用机器学习中决策树算法,构建心脏病预警模型。为用户构建预警界面,测试患者是否患有心脏病,为临床医生及患者提供预警信息。通过完整的实验流程,决策树算法预测准确率为0.81081,结合其他研究结果,本数据结果相对理想,可较准确的反应患者的患病情况,但预测数据结果仍未达到高准确率,本模型仍存在改善空间。通过本课题研究,可将模型用于多类应用程序,具有一定研究意义。下一步研究重点,将着重改进预警模型的预测准确率,提升模型使用效率,并广泛利用机器学习中算法,对多种疾病进行算法分析、模型构建、预警研究。
参考文献:
[1]张泽奎,心脏病发病的自我急救办法[J].饮食保健,2019,6(39): 259-260.
[2]张思民.Python程序设计案例教程:从入门到机器学习微课版[M].北京:清华大学出版社,2018: 233-243.
[3]梁书彤,郭茂祖,赵玲玲.基于机器学习的医疗决策支持系统综述[J].计算机工程与应用,2019,55(19): 1-11.
[4] Fatima M, Pasha M. Survey of machine learning algorithms fordisease diagnostic[J]. Journal of Intelligent Learning Systemsand Applications, 2017, 9(1): 1-16.
[5] Tan K C,Teoh E J,Yu Q,et al.A hybrid evolutionary algo-rithm for attribute selection in data mining[J]. Expert SystemsWith Applications, 2009, 36(4): 8616-8630.
[6] Chaurasia V,Pal S.Data mining approach to detect heart dis-ease[J].International Journal of Advanced Computer Scienceand Information Technology, 2013, 2(4): 56-66.
[7] Parthiban G,Srivatsa S K.Applying machine learning meth-ods in diagnosing heart disease for diabetic patients[J]. Interna-tional Journal of Applied Information Systems, 2012, 3(7):25-30.
[8] Vembandasamy K,Sasipriya R,Deepa E.Heart diseases de-tection using nalve Bayes algorithm[J]. International Joumal ofInnovative Science, Engineering and technology, 2015(2):441-444.
[9]楊东红,吴邦安,孙晓春,基于机器学习的网络评论信息有用性预测模型研究[J].情报科学,2019,37(12): 34-39,77.
[10]何宇健.python与机器学习实战:决策树,集成学习、支持向量机与神经网络算法详解及编程实现[M].北京:电子工业出版社,2017: 89-91.
【通联编辑:谢媛媛】
基金项目:皖南医学院大学生科研资助金项目:基于机器学习的心脏病发病预警模型研究(项目编号:WK2019S51);皖南医学院校级教学研究项目:大数据背景下医学数据挖掘课程实践教学研究(项目编号:2018jyxml0)
作者简介:叶苏婷(1998-),女,安徽铜陵人,皖南医学院,学士,主要研究方向为医学信息方向。
关键词:心脏病发病预警;机器学习;决策树
中图分类号:TP311.1 文献标识码:A
文章编号:1009-3044(2020)19-0187-03
开放科学(资源服务)标识码(OSID):
1 相关研究及问题提出
心脏病是一种临床常见非传染性的慢性疾病。临床上多表现为心绞痛,呼吸困难,心悸,胸痛不适等症状,对人的身体健康有着极为不利的影响,是当今社会导致死亡的主要疾病类型之一[1]。
决策树算法( Decision Tree)作为机器学习中进行分类与回归的代表性算法。该算法可用于分类树形结构,其中对某一属性的一次测试看作一个内部节点,根据测试所得结果看作一条边,将某个类或类的分布作为叶子节点。其中每节点判断条件由对象属性表示,其分支表示符合节点条件的对象,对象所属的预测结果由此决策树的叶子节点表示[2]。心脏病起病隐匿,病程时间长,病因复杂。传统的医疗决策模型往往难以对这类疾病进行精准分析诊断,从而导致患者发现晚、治疗不及时。通过机器学习正确诊断此类疾病,对现有医疗数据进行有效提取处理,可准确构建预测模型,预测患者是否发病,从而获得诊断结果[3]。
目前国外诸多学者对心脏病发病预警模型进行了研究[4]。2009年,Tan K C.Teoh EJ[5]提取加州欧文分校机器学习数据库心脏病数据集,在LIB支持向量机和Weka上实现,得到84.07%的预测准确率。Chaurasia、Pal[6]在2013年使用朴素贝叶斯、J48、引导聚集算法对UCI数据集中的11个特征项进行预测,获得结果显示朴素贝叶斯准确率为82.31%,J48准确率为84.31%,引导聚类算法准确率为85.03%。Parthiban、Srivat-sac7]2012年利用来自印度金奈某研究所的心脏病数据集,使用Weka平台实现朴素贝叶斯及支持向量机诊断心脏病患病率.分别得到准确率74.00%、94.60%。2015年Vem bandasamy等人[8]使用朴素贝叶斯算法对印度金奈某研究所的心脏病数据集进行分类预测,得到86.42%预测准确率。机器学习算法涵盖广泛,在模型研究时,特征变量,算法的选择不同,均会导致预测准确率差异[9]。
基于上述情况,本模型利用决策树算法对UCI克利兰夫医学研究中心的心脏病数据集构建研究模型。
2 决策树算法描述
决策树生成:一是向根节点输人数据;二是利用信息熵(或基尼系数)度量,选择数据某个特征来把数据划分成不相交的节点;三是根据数据的不确定性大小对节点进行转化分割[10],根据模型研究需求选用基尼系数作为度量。
基尼系数定义如下:
条件基尼系数根据A的不同取值{a1,……,am}对y进行限制后,先对y分别计算基尼系数,再将m个基尼系数根据特征取值本身的概率加权求和,从而得到总条件基尼系数。因此条件基尼系数越小,y被A限制后总不确定性越小,A可以帮助提供决策。
根据基尼系数度量方式从数据集中训练出一系列的划分规则,使得这些规则能够在数据集上集中体现构成了决策树的生成过程。
3 基于决策树算法的心脏病发病预警模型实现
基于决策树算法的心脏病发病预警模型实现,如下图1所示:
3.1 原始心脏病数据集特征筛选
研究采用来源UCI机器学习知识库的心脏病数据集,共有303个样本和76个特征,基于该数据集选用心脏病致病原因的14个特征构成特征子集,如下表1所示。
3.2 Python语言构建决策树预警模型
对本心脏病数据集进行处理过程中,可知模型预测结果为:患病(设值1)或不患病(设值0),因此将此类预测看作二分类。
Stepl数据预处理的拆分与拟合。本研究特征子集中在14个特征里提取target列作为标签列,由于此时target作为预测目标结果,在特征子集中将此列丢弃,同时对特征子集进行拆分和交叉验证。导人Skleam中train_test_split,将数据集分割为训练集和测试集,设测试集占比25%。拆分后对数据集进行拟合操作,并对数据集吻合度进行评分。
Step2决策树CART算法优化参数模型。在Sklearn模块中,根据拟合后结果,对比训练集评分数据与测试集评分数据。本研究中,特征子集中含有14个特征,样本数较大,评分对比中易呈现训练集评分高于测试集,出现决策树过拟合现象,需采用前剪枝操作。采用决策树CART算法,通过max_depth參数优化模型,获得决策树bestdepth最佳深度值。再利用min_impurity_decrease参数优化模型,由于此参数为基尼系数指定阈值,当决策树分裂后,若其增益低于此阈值bestmin即立刻停止分裂,以此限制决策树生长。
Step3决策树预警学习模型及测试。以基尼系数为度量原则,构造一棵系数值下降最快的树,遍历现有特征子集中13个特征,选择最优特征为分裂特征生成树。又将两组参数best-depth最佳深度值及阈值bestmin,代人模型,获取模型得分(tees_score)、查准率、召回率、二分类模型精确度指标( Fl_score),以上数值均在0-1间。
3.3 预警模型界面程序构建 利用上述步骤中处理后的数据集特征,获取特征标签并存储,导人训练集部分,并顺序对应特征集创建心脏病发病预警诊断的审核按钮。通过创建并设置顺序输入栏,引导用户在输入框中输入自身实际情况,生成测试数据列表带人模型测试,进行结果判断并输出。数据判断结果“1=患病”“0=不患病”对应条件输出。设置页面布局构建预警界面,达到直观清晰的结果输出,便于用户使用。
4 实验结果及研究意义
4.1 实验结果
由上述步骤,逐步得出以下实验结果。决策树模型在数据预处理过程中获得训练集评分为1.0,大于测试集评分0.77049,通过两组评分,可发现决策树出现过拟合现象。需对决策树做进一步前剪枝操作,利用参数模型优化得max_depth的最佳深度为5.0,由此可知5.0深度为该决策树生长的最大深度。获取min_impurity_decrease中bestmin值为0.008,为不纯度最小减少值,即节点再分裂过程中必须满足减少的不纯度大于这个0.008。根据预警学习模型测试得到测试结果如下表2所示。由表可知决策树算法所得出的预测结果及F1一score数值为0.81081,达到实验结果较理想。
4.2 研究意义
通过决策树算法构建心脏病发病预警模型,发现可直观且准确地反映患者心脏病患病情况。模型的程序实现可为临床医生决策提供支持与决断,判断患者患病情况;也可应用于各医疗软件及微信小程序,为用户提供心脏病预警信息,争取早发现、早治疗,不延误病情,及时就诊。同时本研究也为医疗程序开发者提供新思路,尽可能在基础医疗需求上满足用户。
5 结束语
本课题利用机器学习中决策树算法,构建心脏病预警模型。为用户构建预警界面,测试患者是否患有心脏病,为临床医生及患者提供预警信息。通过完整的实验流程,决策树算法预测准确率为0.81081,结合其他研究结果,本数据结果相对理想,可较准确的反应患者的患病情况,但预测数据结果仍未达到高准确率,本模型仍存在改善空间。通过本课题研究,可将模型用于多类应用程序,具有一定研究意义。下一步研究重点,将着重改进预警模型的预测准确率,提升模型使用效率,并广泛利用机器学习中算法,对多种疾病进行算法分析、模型构建、预警研究。
参考文献:
[1]张泽奎,心脏病发病的自我急救办法[J].饮食保健,2019,6(39): 259-260.
[2]张思民.Python程序设计案例教程:从入门到机器学习微课版[M].北京:清华大学出版社,2018: 233-243.
[3]梁书彤,郭茂祖,赵玲玲.基于机器学习的医疗决策支持系统综述[J].计算机工程与应用,2019,55(19): 1-11.
[4] Fatima M, Pasha M. Survey of machine learning algorithms fordisease diagnostic[J]. Journal of Intelligent Learning Systemsand Applications, 2017, 9(1): 1-16.
[5] Tan K C,Teoh E J,Yu Q,et al.A hybrid evolutionary algo-rithm for attribute selection in data mining[J]. Expert SystemsWith Applications, 2009, 36(4): 8616-8630.
[6] Chaurasia V,Pal S.Data mining approach to detect heart dis-ease[J].International Journal of Advanced Computer Scienceand Information Technology, 2013, 2(4): 56-66.
[7] Parthiban G,Srivatsa S K.Applying machine learning meth-ods in diagnosing heart disease for diabetic patients[J]. Interna-tional Journal of Applied Information Systems, 2012, 3(7):25-30.
[8] Vembandasamy K,Sasipriya R,Deepa E.Heart diseases de-tection using nalve Bayes algorithm[J]. International Joumal ofInnovative Science, Engineering and technology, 2015(2):441-444.
[9]楊东红,吴邦安,孙晓春,基于机器学习的网络评论信息有用性预测模型研究[J].情报科学,2019,37(12): 34-39,77.
[10]何宇健.python与机器学习实战:决策树,集成学习、支持向量机与神经网络算法详解及编程实现[M].北京:电子工业出版社,2017: 89-91.
【通联编辑:谢媛媛】
基金项目:皖南医学院大学生科研资助金项目:基于机器学习的心脏病发病预警模型研究(项目编号:WK2019S51);皖南医学院校级教学研究项目:大数据背景下医学数据挖掘课程实践教学研究(项目编号:2018jyxml0)
作者简介:叶苏婷(1998-),女,安徽铜陵人,皖南医学院,学士,主要研究方向为医学信息方向。