孙铁铮 于泽灏
摘要:本文选取国外医疗研究中心心脏病患者数据集为研究对象,在对数据进行虚拟变量变换操作的基础上,探究相关致病因素与目标患者之间的联系,通过引入Logistic回归、KNN、SVM、朴素贝叶斯、决策树、随机森林六类机器学习算法对病例类别进行分类预测,以准确率与混淆矩阵作为输出结果的评判标准,对其分类识别预测的能力做出对比分析。
关键词:机器学习;多算法对比;心脏病预测
中图分类号:TP3 文献标识码:A
文章编号:1009-3044(2021)26-0096-02
开放科学(资源服务)标识码(OSID):
1 研究背景
心脏病为临床上不具有传染性的慢性疾病,致死率较高,传统的医疗决策方法难以准确分析和诊断此类疾病。随着大量临床检查、治疗报告和电子病历数据的产生,为信息技术介入医疗诊断和辅助医疗病理决策提供了数据依据。通过对大量的医学数据进行有效的提取与加工,机器学习算法可以为疾病做出正确的诊断、预测疾病的概率或患者病例,结合相关领域的专家知识和平衡潜在的数据处理分析,以求达到更好的疾病诊断结果,提高疾病预防、诊断和研究现状。
2 研究现状
以计算机学科为研究背景的诸多学者提出了多种理论与技术手段用以提高心脏病预测的检测水平。Subbalakshmi等人[1]以朴素贝叶斯分类器为核函数,开发了一种支持决策的心脏病预测系统(DSHDPS),从历史数据中提取隐藏知识,通过使用年龄、性别、血压等医疗体征指标来预测患者患病的可能性。Amin等人[2]对关键特征进行提取并通过遗传神经网络进行回归分析。周孟然等[3]利用自适应人工蜂群算法对ELM算法隐含层的权值与偏置值进行优化,通过对最优特征子集的训练提升了ELM算法在心脏病辅助诊断中的表现。刘宇,乔木[4]将聚类与XGBOOST算法相结合,通过K-means算法对数据进行特征区分并利用XGBOOST算法对心脏病进行预测分析。叶苏婷等[5]利用决策树算法构建了心脏病数据集预警模型并编写了用户程序界面。
3 数据及可视化
本研究数据来源于克利夫兰数据库(Cleveland Clinic UCI)所构建的开源心脏病例数据集。样本数据共303条,包含13类影响因素指标与患病标签量,其中年龄、血压值、胆固醇含量、最快心率四项因素为连续型数值,其余为离散型数值变量。通过对不同数据类型的关系映射以及数据虚拟化操作,将其统一为相同量级的数据结构为机器学习算法的训练做准备。数据变量列表如表1所示。
图1以年龄、静息血压、最大心率、胆固醇量、患病标签构建相关性矩陣图,患病样本年龄呈现正态分布状态,健康样本年龄呈负偏态分布状态。静息血压呈现正偏态分布趋势,其中患病样本静息血压尖峰状态更加明显。30-40岁年龄段中患病人数的分布情况多集中于峰值,其对应的血压值均高于120mm,其众数与50-60岁年龄段基本持平,表明对于30-40岁人群来说较高的静息血压值可作为重要的患病评判依据。健康样本最大心率值呈正态分布,患病样本则呈现负偏态分布。其表明以53岁为分界点,样本年龄区间处于30-53岁的个体其最大心率值越高,患病趋势越明显,大部分的非患病个体其最大心率值均保持在160以下。而样本年龄区间处于53-70岁的个体其最大心率值越低,患病趋势越明显,大部分非患病个体的最大心率要高于患病个体。由此可推断以患病率为前提年龄与最高心率值呈反比关系。胆固醇值患病与非患病样本均呈现正偏态分布且患病样本尖峰程度仍明显高于健康样本。患病者胆固醇数值随年龄变化不明显,但整体患病群体表现为胆固醇值偏低。静息血压值越低且最大心率值越高患病概率越大,静息血压值越低且胆固醇值越低患病风险越大。当最大心率值越大且胆固醇含量较低时患病概率也会大大增加。
4 实验过程与结果分析
本文选取逻辑回归、K近邻、支持向量机、朴素贝叶斯、决策树、随机森林,六种机器学习经典算法对目标患者标签进行分类预测,通过虚拟化操作统一数据量纲,以数据集80%的数据量作为各算法的训练集,其余20%作为模型验证集。选取分类预测准确度作为模型输出表现的评价指标,并根据各算法验证集表现情况建立混淆矩阵,对模型的实际分类预测能力进行评判,实验流程如图2所示。
其中逻辑回归算法迭代训练次数设为1000次,当训练迭代进行到约500次时其损失函数可达到最小值,整体趋于收敛。对于K近邻算法来说,当近邻群数取为7时所对应的分类准确度最高,证明此时的分类预测效果最好。
以分类准确度作为评判依据,在该数据集上K近邻算法相较于其他算法具有最高的适用性与最佳表现,其分类准确度达到90.16%,逻辑回归、朴素贝叶斯以及随机森林算法也具有较高的分类预测能力,其准确度分别可达到:85.25%、85.97%、85.25%。决策树算法在所有模型中表现最差,其分类准确度仅为75.41%。对比结果如表2所示。
对于分类算法评估指标除准确度外还有召回率,精确度等。而这些指标均基于混淆矩阵进行构建。矩阵每一列代表一个类的预测情况,每一行表示一个类的实际样本情况。其中正例样本数量记为P,负例样本数量记为N,被正确预测的正例数量记为TP,负例样本被预测呈正例样本数量记为FP,正例样本被预测成负例样本数量记为FN,正确预测到的负例样本数量记为TN。分类准确度,即正负样本分别被正确分类的概率,其计算公式为:
[Accuracy=TP+TNP+N] (1)
召回率,即正样本被识别出的概率,计算公式为:
[Recall=TPP] (2)