1、计算机时代 2023年 第12期0 引言据不完全统计,截至2018年,我国的心血管疾病患者数量高达3.3亿1。心血管疾病死亡率高居城乡居民总死亡率首位,其中农村居民为46.66%,城市居民为43.81%。近年来人工智能辅助诊疗技术成为热门研究方向,基于机器学习的辅助医疗技术也不断成熟。就心血管疾病而言,其重要的行为风险是吸烟、酗酒、不健康饮食、缺乏锻炼等。行为风险因素的影响在个体中表现为血压高、血糖高、血脂高、超重和肥胖等。这些表现是可以量化的,根据这些影响结果的量化数据做数据分析,识别出易患病、已患病的人群,让其早日接受治疗,有助于提高人民群众健康水平。医疗预测应着重观察患病样本的预测准确性
2、。实际情况中,医疗类数据集存在数据不平衡的情况,即健康样本多于患病样本。故使用人工智能方法做预测时,可以采用数据平衡算法、引入注意力机制等方法,来提高患病样本的识别准确率。DOI:10.16644/33-1094/tp.2023.12.014基于EasyEnsemble和XGBoost的冠心病预测模型研究*彭昊1,申艳光1,李焰2(1.河北工程大学信息与电气工程学院,河北 邯郸 056000;2.河北工程大学附属医院)摘要:针对医疗样本不平衡的问题,使用集成采样EasyEnsemble算法和XGBoost算法结合,搭建冠心病预测模型,来提高患病样本识别准确率。选用公开弗雷明翰冠心病数据集,对数
3、据预处理后,先采用EasyEnsemble算法平衡数据集,后采用极端梯度提升算法XGBoost作为基分类器进行训练,调整各项实验参数,并采用准确率、召回率、ROC曲线下面积(AUC)等指标评价模型。实验结果表明,相较于XGBoost、过采样SMOTE+XGBoost、欠采样TomekLinks+XGBoost三种方法,EasyEnsemble+XGBoost模型极大地提高了召回率。关键词:冠心病;疾病预测;XGBoost;SMOTE;EasyEnsemble中图分类号:TP181;R54文献标识码:A文章编号:1006-8228(2023)12-64-04Research on coronar
4、y heart disease prediction model based on EasyEnsemble and XGBoostPeng Hao1,Shen Yanguang1,Li Yan2(1.School of Information Electrical Engineering,Hebei University of Engineering,Handan,Hebei 056000,China;2.Affiliated Hospital of Hebei Engineering University)Abstract:In response to the issue of imbal
5、anced medical samples,the integrated sampling EasyEnsemble algorithm and XGBoostalgorithm are combined to build a coronary heart disease prediction model to improve the accuracy of disease sample recognition.Selecting the publicly available Framingham coronary heart disease dataset and after preproc
6、essing the data,the EasyEnsemblealgorithm is used to balance the dataset,and then the extreme gradient boosting algorithm XGBoost is used as the base classifierfor training.Various experimental parameters are adjusted,and the model is evaluated using indicators such as accuracy,recall,andAUC(area un
7、der ROC curve).The experimental results show that compared to the three methods of XGBoost,oversamplingSMOTE+XGBoost,and undersampling TomekLinks+XGBoost,the EasyEnsemble+XGBoost model greatly improves the recall rate.Key words:coronary heart disease;disease prediction;XGBoost;SMOTE;EasyEnsemble收稿日期
8、:2023-09-14*基金项目:河北省医学科学研究项目(20220037)作者简介:彭昊(1997-),男,河北邯郸人,硕士研究生,主要研究方向:机器学习。通讯作者:申艳光(1970-),女,河北邯郸人,硕士,教授,CCF会员,硕士生导师,主要研究方向:机器学习、数据挖掘。64Computer Era No.12 2023以冠心病为例,林加仑2等人使用逻辑回归 LR、支持向量机SVM、极端梯度提升XGBoost算法进行预测;洪韵3等人使用SMOTE+logisitic、SMOTE+XGBoost算法预测,分别取得了67%、76%的准确度;Hoda4使用 KNN 算法,取得了 66.7%的准确
9、度;蒋林甫5使用PCHD-TABNET算法预测,虽然只取得了60%的准确度,但患病样本的识别准确率却有极大提升。综上,本文以冠心病预测为主题,结合患病人群和正常人群的医疗数据,运用过采样、欠采样和集成采样三种算法来平衡数据集,使用XGBoost算法进行模型训练,建立对应的冠心病的预测模型,为冠心病高危人群的防治提供参考。1 数据预处理1.1 数据来源本文数据集来是国外机器学习竞赛Kaggle网站的马萨诸塞州弗雷明翰镇居民的心血管研究数据集。该数据集可预测患者在未来十年内是否会患冠心病。数据集包含 4240例样本、15项特征属性、一项结果。样本当中,十年内发病患者644例,不发作3596例,二者
10、数量差接近六倍,存在数据不平衡现象。特征属性当中Sex(性别)、Education(教育水平)、BPmeds(是否服用降压药)、Currentsmoke(是否吸烟)、Diabetes(糖尿病)、Prevalentstroke(中风)、prevalentHyp(高血压)、CigsPerDay(吸烟数量)为离散型变量,Totchol(血清总胆固醇)、BMI(体重指数)、Glucose(血糖)、Heartrate(心率)、Age(年龄)、Sysbp(收缩压)、Diabp(舒张压)为连续型变量。TenYearCHD(未来十年内是否患病)记录结果,其中0为负例代表健康样本,1为正例代表患病样本。1.2
11、数据处理1.2.1 缺失值处理本文采用的数据集中,有七项特征存在缺失现象,依 次 为 Glucose、Education、Bpmeds、Totchol、CigsPerDay、BMI、Heartrate,分别缺失 9.15%、2.48%、1.25%、1.18%、0.68%、0.45%、0.02%,含有缺失值数据总占比 15.21%。数据缺失会增加分析预测的难度,提 高运算时间,降低结果准确性。因此,本文对Education、BPMeds采用众数填补,对Glucose、TotChol、CigsPerDay、BMI、Heartrate采用均值填补。1.2.2 离群值处理医疗样本中,必然存在一些特征中
12、的数据远超正常范围。数据分析时发现,Totchol、SysBP、Glucose等特征存在大量离群值。为了减小异常值对训练的影响,在尽量保留数据特征的情况下,本文将上述存在离群值的特征范围上界修正为当前最大值的75%,超出该范围的数据修改为范围上界。数据处理完毕后,将数据集按照8:2划分训练集和测试集。训练集 3392 例,其中健康样本 2877 例,患病样本515例;测试集848例,其中健康样本719例,患病样本129例。后续所有采样算法均只在训练集上操作。2 模型搭建2.1 XGBoost算法原理XGBoost是一种 Boosting集成树模型,核心思想是将多个弱分类器集成成为一个强分类器。
13、并且具有预测精度高、训练速度快、灵活性强、支持自定义损失函数等优点。XGBoost算法中,第t棵树的预测总值为前t-1棵树的预测值加上第t棵树的预测值。即:y(t)i=y(t-1)i+ft()xiXGBoost的目标函数为:L(t)=i=1nl()yi,y()t-1i+ft()xi+()ft+c其中,l(*)为损失函数;yt-1i为前t-1颗树对样本的预测值;xi为输入;t为训练过程的第t次迭代;()ft为正则化的惩罚项,用来限制模型的复杂程度;c为常数项。对目标函数进行二阶泰勒展开,即得:L(t)i=1nl()yi,y()t-1i+gift()xi+12hi(ft(xi)2+()ft其中,g
14、i和hi为标量,定义为:gi=y()t-1il(yi,yt-1i)hi=2y()t-1il(yi,yt-1i)由于l(yi,yt-1i)为前t-1棵树得预测误差,与第t次迭代所得模型无关,因此,可以将其从目标函数中删掉,则有:L(t)i=1n()gift()xi+12hi(ft(xi)2+()ft2.2 EasyEnsemble算法原理EasyEnsemble 算法6-7是一种基于集成思想的欠采样方法,用于解决类别不平衡数据的有监督学习中的信息缺失问题。该算法将多数类样本集分成N个子65计算机时代 2023年 第12期集,并且每个子集的样本数与少数类样本数相同。然后,将多数类样本子集依次与少数
15、类样本进行组合,形成N个新的训练集,用于训练多个分类器。所有的分类器通过 Bagging 算法集成,形成最终的分类器。在集成过程中,将N个基分类器的预测概率进行相加,然后通过sign函数来决定分类。通过集成多个分类器,可以有效降低单一分类器的过拟合风险,提高少数类样本的影响;同时通过对概率的集成和sign函数的运用,可以更好地处理类别不平衡问题。2.3 冠心病预测模型构建医疗类样本存在一定的不平衡性,若仅考虑识别准确率,将本文所有实验数据均判断为多数情况,整体准确率也能高达84.8%(719/848=0.848)。显然,这类仅关注准确率的模型毫无意义。医疗预测更加需要关 注 患 病 样 本 的
16、 识 别 准 确 性,多 数 学 者 采 用 以SMOTE算法为主的平衡算法处理数据,来扩大少数类样本的影响力。但是过采样算法生成数据普遍会引入噪声,欠采样算法删除数据会使部分特征丢失。而 EasyEnsemble集成采样算法合理使用了数据集中的全部数据,并可以多次训练集成结果。图1EasyEnsemble+XGBoost冠心病预测XGBoost 算法具有高效准确等优点,也是医疗预测中常用且效果好的一种算法。综上,本文以EasyEnsemble 算法平衡数据,以 XGBoost 算法,分类预测,构建如图1所示的EasyEnsemble+XGBoost模型作为冠心病预测模型。该算法的主要流程:重
17、新划分训练集。给定少数类样本,样本量P,给定多数类样本,样本量Q。从多数类样本中随机抽样,抽出样本量为P的子集N个,将少数类样本和多数类子样本组合,生成样本量为2P的新训练集N个。训练基分类器模型。在新训练集中训练XGBoost分类器。Hi()x=sign(j=1Sii,jhi,j()x-i)其中,Hi为第i个基分类器XGBoost模型;i,j为相应基分类器的权重;hi,j为第 i 个 XGBoost 的第 j 个基分类器;i为集成阈值。将基分类器集成。H()x=sign(i=1Nj=1Sii,jhi,j()x-i=1Ni)其中,H(x)为集成后EasyEnsemble模型。3 实验结果分析3
18、.1 参数设置本文设置四个对比实验,分别为无采样处理的XGBoost模型,过采样处理的SMOTE+SGBoost模型,欠采样处理的 TomekLinks+XGBoost 模型,集成采样的EasyEnsemble+XGBoost模型。在上述对比实现中,采用贝叶斯优化算法分别调整各个模型中XGBoost算法的四个参数:n_estimator最大生成树目、learning_rate迭代步长、max_depth最大深度和min_child_weight叶子最小权重。XGBoost中,n_estimator=167、learning_rate=0.09、max_depth=2、min_child_wei
19、ght=7。SMOTE+XGBoost 中,n_estimator=513、learning_rate=0.46、max_depth=8、min_child _weight=0.4。TomekLinks+XGBoost中,n_estimator=73、learning_rate=0.14、max_depth=3、min_child_weight=1。因为EasyEnsemble算法中,各个小样本与欠采样样本相似,故选用了 TomekLinks+XGBoost 的参数进行实验。3.2 评价指标为了评估各个模型的性能,使用了准确率(ACC)、精 确 率(PRE)、召 回 率(REC)ROC 曲 线
20、 下 面 积(AUC)、精确率和召回率的调和均值(F1)等多个评价66Computer Era No.12 2023指标进行评估。ACC=TP+TNTP+TN+FP+FNPRE=TPTP+FPREC=TPTP+FNF1=2*PRE*RECPRE+REC其中,TP表示正例识别正确;TN表示负例识别正确;FP表示负例识别错误;FN表示正例识别错误。3.3 结果分析混淆矩阵(见表1)可直观看到各类模型训练完毕后的测试集测试结果。其中负例为健康样本,正例为患病样本。相较于 XGBoost算法,SMOTE+XGBoost算法的少数类识别率提升了 2.00%,EasyEnsemble+XGBoost 算法
21、提升了 8.61%,TomekLinks+XGBoost算法则是在整体识别率未出现明显变化的情况下,对少数类样本识别率小幅提高。表1混淆矩阵方法XGBoostSMOTE+XGBoostTomekLinks+XGBoostEasyEnsemble+XGBoost预测结果负例712(83.96%)119(14.03%)663(78.18%)102(12.03%)707(83.37%)114(13.44%)441(52.00%)46(5.42%)正例7(0.83%)10(1.18%)56(6.60%)27(3.18%)12(1.42%)15(1.77%)278(32.78%)83(9.79%)真实结
22、果负例正例负例正例负例正例负例正例表 2 中给出了各类模型的量化结果,XGBoost、SMOTE+XGBoost、TomekLinks+XGBoost 模 型 的ACC 值均超过了 80%,但其 REC 值普遍偏低,均未超 过 30%。而 EasyEnsemble+XGBoost 模 型,虽 然ACC 值仅为 62%,但是 REC 值达到了 64%,相较于XGBoost 模 型 提 高 了 近 八 倍,相 较 于 SMOTE+XGBoost模型提高了约三倍。表2结果分析XGBoostSMOTE+XGBoostTomekLinks+XGBoostSMOTE+XGBoost5PCHD-TABNET
23、5EasyEnsemble+XGBoostACC0.850.810.850.820.600.62PRE0.590.330.560.210.200.23REC0.080.210.120.130.690.64F10.140.250.190.160.310.34AUC0.530.570.710.580.670.63同时,本文的SOMTE+XGBoost模型结果相较于蒋林甫5的同名算法,虽数据处理方式略有出入,但结果基本一致。相较于PCHD-TABNET这种引入注意力机制的算法,本文EasyEnsemble+XGBoost模型PRE指标上表现略优,可以更加精确的预测患病样本。4 结束语本文针对医疗数据
24、集不平衡的问题,提供了一种数据采样和集成学习相结合的冠心病预测模型,使用集成采样EasyEnsemble算法平衡数据集,将XGBoost算法作为基分类器,以ACC、REC、F1、AUC等多个指标作为模型性能的评价标准。在公开数据集弗雷明翰冠心病数据集中进行模拟,结果表明,该模型多个指标优于传统的SMOTE+XGBoost模型,显著改善了少数类识别准确率低的问题,提高了预测模型的召回率,对用户了解自身患病风险有极大帮助。但是该模型整体识别准确率有一定程度的下降,后续工作需要在保证少数类预测准确的情况下,提升整体的准确率。可以尝试通过修改模型的代价敏感函数等的方法进行试验,使得模型性能进一步提升。
25、参考文献(References):1 卢文婷,姚远,熊静,等.机器学习在心血管疾病辅助诊断模型中的效果J.中华全科医学,2023,21(1):112-117.2 林加论,余洋鑫,许磊,等.基于机器学习的冠心病预测模型研究J.中国数字医学,2023,18(01):48-52.3 洪韵,马勇,陈榕,等.基于机器学习算法的冠心病风险预测及其特征分析模型J.广东医科大学学报,2023,41(1):53-57.4 Elsayed H A G,Syed L.An automatic early riskclassificationofhardcoronaryheartdiseasesusingframingham scoring modelC/the Second InternationalConference,2017.5 蒋林甫.基于深度学习的冠心病风险分层D.杭州:杭州师范大学,2022.6陈毓,陈亮,汪琰,等.基于EasyEnsemble和XGBoost算法的焊缝超声波检测结果预测模型J.船舶工程,2022,44(4):134-139.7 张青周,高龙,胡颖迪,等.EasyEnsemble算法在金融风控不均衡数据集建模中的应用J.金融科技时代,2023,31(1):41-46.CE67