基于心脏病数据的两种机器学习预测模型比较研究
代倩,黄希芬
云南师范大学数学学院,云南昆明
收稿日期:2023年7月26日;录用日期:2023年8月23日;发布日期:2023年8月30日
摘要
现如今中国正面临的两大主要压力是人口老龄化进程加快和代谢危险因素流行,心血管疾病的发病率和患病率一直保持上升状态,并成为了我国居民死亡的首要原因。与此同时,医学与统计相结合,建立出具有一定预测效果的模型,可以帮助更有效地治疗和控制病情,使心脏病风险预测模型成为公共卫生安全的重要工具。本文首先对心脏病数据集进行预处理,再通过混合采样的方法获得平衡数据,依次构建随机森林和全连接神经网络模型,对它们分别进行比较研究,阐述了随机森林算法在预测心脏病患病情况时有显著优势。建立恰当的模型之后可以有效地对患者进行方便快捷的心脏病预测,有效提高临床诊断的准确率,帮助心脏病患者尽早进行医疗干预获得健康。
关键词
心脏病预测模型,不平衡数据,随机森林
ComparativeStudyofTwoMachineLearningPredictionModelsBasedonHeartDiseaseData
QianDai,XifenHuang
SchoolofMathematics,YunnanNormalUniversity,KunmingYunnan
Received:Jul.26th,2023;accepted:Aug.23rd,2023;published:Aug.30th,2023
ABSTRACT
Keywords:HeartDiseasePredictionModel,ImbalancedData,RandomForest
ThisworkislicensedundertheCreativeCommonsAttributionInternationalLicense(CCBY4.0).
1.引言
1.1.研究背景及意义
1.1.1.研究背景
随着工业化、城镇化、人口老龄化进程加快以及生态环境、生活行为方式等发生改变,慢性非传染性疾病已成为居民的主要死亡原因和疾病负担[1]。心脑血管疾病、癌症、慢性呼吸系统疾病、糖尿病等慢性病导致的负担占总疾病负担的70%以上,成为阻碍提高健康预期寿命的重要原因之一[2]。
心脏病是一种常见的循环系统疾病,它涉及心脏、血管和调节血液循环的神经体液组织。会严重影响患者的劳动能力,是内科疾病中的常见病。心脏病和脑血管病的特点是患病率高、致残率高、复发率高和死亡率高,给社会和经济发展带来了沉重的负担[3]。据统计,我国现有的高血压患者达2.7亿、脑卒中患者1300万、冠心病患者1100万。高血压、血脂异常、糖尿病等是心脑血管疾病的主要危险因素,而肥胖、吸烟、缺乏运动、不健康的饮食习惯等也会增加患病的风险[4]。中国18岁以上居民中,约四分之一的人患有高血压,接近一半的人血脂异常,并且这些比例还在上升。对这些危险因素进行干预,不仅可以预防或延缓心脑血管疾病的发生,还可以与药物治疗配合,预防其复发。
1.1.2.心脏病研究意义
心脏病是一种致死率高的危险疾病,需要尽早发现。但很多心脏病患者在早期没有胸闷、气短、乏力、心绞痛等典型症状,这就是“沉默的心脏病”。这导致很多病人无法及时发现自己有心脏病,错过了最佳治疗时机。因此,通过了解身体各项指标和日常生活习惯,来判断是否有心脏病对降低心脏病的死亡率非常重要。
机器学习是一门新兴的学科,它通过周围的环境学习来模拟人类的智能。随机森林是一种基于决策树的集成学习算法,它可以减少过拟合的风险,提高模型的泛化能力。因为每个决策树只使用了部分样本和特征,所以每个决策树都是独立的,并且随机森林可以通过多个决策树的投票或平均值来降低单个决策树的错误率。全连接神经网络有着比浅层体系结构更强的数据处理能力,可以利用出色的服务器性能对海量大数据进行特征挖掘与处理。本文主要利用随机森林和全连接神经网络两种模型对心脏病数据进行训练学习,经过对比得出最优分类算法模型,有利于构建适用于心血管疾病的预测模型,从而辅助医师对心脏病患者提供诊断评估依据。
总而言之,利用随机森林模型对是否患有心脏病提供较为准确的预测,能为医生诊断提供依据,将机器学习与医学相结合,精准诊断并治疗,提高医疗资源的利用效率,从而降低心脏病的死亡率。该方法经推广后可用于其他疾病的预测,对于控制各类疾病发生具有重要积极意义。
1.2.文献综述
2011年,G.Subbalakshmi等[5]将年龄、血压等因素作为预测患心脏病的指标,用贝叶斯分类器作为内核函数,建立支持决策的心脏病预测系统(DSHDPS)。AlickovicE.等[6]采用自回归模型提取特征,并通过k邻近算法、多层感知器和支持向量机等技术来判别心率是否正常。DimopoulosA.C.等[7]将传统心血管疾病评分系统分别与决策树、随机森林和KNN算法结合进行对比分析,发现机器学习适合风险预测研究。Gokulnath等[8]提出了SVM的优化函数,将其应用于遗传算法中,提升心脏病预测的效果。Khourdifi等[9]利用粒子群优化算法和蚁群优化算法对人工神经网络进行优化,结果证明了所提出的混合方法在处理心脏病分类数据中的有效性和鲁棒性。Valarmathi等[10]使用三种不同的超参数优化算法对随机森林和极端梯度提升算法进行参数调整与测试,研究发现随机森林通过随机搜索方式进行参数调优的心脏病预测结果更好。
本文采用来自CDC公开的2021年行为风险因素检测系统(BRFSS)的原始心脏病数据集,其数据总量为438,693条,304个特征变量。分类标签为是否患有心脏病,1代表患有心脏病病,2代表未患心脏病,在所有原始数据中共有22,831条记录为患有心脏病。其中部分特征都存在明显的关联性,且对心脏病的影响较小。
2.2.数据预处理
2)缺失值处理:统计数据包括实验数据和调查数据,在此类调查数据获取的过程中,客观因素的限制或人为原因造成数据缺失的情况是非常常见的。由于缺失情况对变量特征值损失率过高且数量较大,例如,空值,调查对象回答“不知道”或拒绝回答的,因此我们将这部分数据直接剔除。
3)离散化:离散化是指对连续的数值变量进行分段处理,可以分为等频和等长两种离散化方法。等频和等长离散化方法不仅可以提高算法的运行速度,而且更有,利于提升模型的预测精度。在此数据集中,如Sex(受访者年龄)的值为[18,65+)范围内的连续变量,按照等长离散化对年龄数据进行分段处理,得到6类分类数据。
4)哑编码:当变量不是定量特征时,无法对模型进行训练,因此引入哑变量将不能够定量处理的变量量化,然后得到可用于模型训练的特征。对于有n个分类属性的自变量,通常需要选取1个分类作为参照,因此可以产生n1个哑变量。如BMI(体重指数)分为过轻、正常、过重和肥胖四类多分类有序变量,将其赋值为1、2、3、4,通过数字的大小关系来体现程度之间一定的等级关系。
5)规范化处理:将现有数据进行规范化处理,转化为便于数据分析处理的特征形式。本文旨在分析预测是否患有心脏病,因此分类标签数值化处理为1=未患有心脏病,0=为患有心脏病。
Table1.Rawdatavariableinterpretation
2.3.患病人数总体分布情况
Figure1.Distributionofheartdiseaseaftersampling
3.模型构建
Figure2.Datafeatureimportanceranking
3.1.随机森林(RandomForest)
在随机森林模型中,我们将分别将数据的70%、30%作为训练集和测试集,建立模型进行预测分析。此方法使用Python中的开源RandomForest包来建立建模。此模型需录入年龄、食用炸土豆的频率和体重特征等不同属性的解释变量数据进行抽样,建立大量决策树预测模型[11]。为了获得最佳的变量组合形式,用OOB样本在已训练好的决策树上运行,计算袋外预测误差e1,然后固定其他不变,依次计算决策树第500个特征的特征值,得到袋子外误差ei2。其中随机森林OOB得分为0.8854,OOB错误率为0.1146。
Figure3.Randomforestconfusionmatrix
在随机森林模型测试集的3000个样本中,预测正确的共有2666个,预测错误的共有334个。其中有140个样本是将未患有心脏病的样本预测为患有心脏病的样本,而有194个样本是将实际患有心脏病的样本预测为未患有心脏病的类别。
3.2.全连接神经网络
Figure4.Fullyconnectedneuralnetworkstructurediagram
Figure5.Fullyconnectedneuralnetworkconfusionmatrix
在全连接神经网络模型测试集的3000个样本中,预测正确的共有个2375,预测错误的共有个625。其中有338个样本是将未患有心脏病的样本预测为患有心脏病的样本,而有287个样本是将实际患有心脏病的样本预测为未患有心脏病的类别。
4.模型评价
4.1.模型结果
Figure6.ROCcurvesofrandomforestandfullyconnectedneuralnetworkmodels
Table2.Randomforestconfusionmatrix
Table3.Fullyconnectedneuralnetworkconfusionmatrix
Table4.Comparisonofmodelclassificationperformanceindex
ROC曲线的横轴FPR表示假阳率,纵轴TPR表示真阳率,ROC曲线越靠近左上角,模型的性能越好[12],因为此时TPR高、FPR低,随机森林模型能够很好地区分正例和负例。