Heart disease identification based on boosted decision tree
-
摘要: 基于高能物理数据分析的ROOT框架下的梯度提升决策树(BDTG)模型,提出一种多变量分析法用于心脏病鉴别。通过大量的临床数据,分析变量的各种复杂关系提高心脏病鉴别的准确性和可靠性。使用Kaggle开源心脏病数据集,结果表明,模型在BDTG响应值为−0.4~0.5时,没有出现错误鉴别情况。当BDTG响应值的截断为−0.6或0.6时,模型的准确率、查准率、查全率和F1分数达到98%以上。该模型在心脏病诊断方面具有较高的准确性和可靠性,不仅为心脏病预测提供新视角和方法,也为其他疾病的机器学习预测研究提供参考。Abstract: A gradient boosting decision tree (BDTG) model based on high-energy physics data analysis in ROOT framework was proposed for the identification of heart disease using a multivariate analysis method. Through a large amount of clinical data, the aim is to analyze the various complex relationships of variables to improve the accuracy and reliability of heart disease differentiation. Using the Kaggle open-source heart disease dataset, the results showed that the model did not exhibit any erroneous discrimination when the BDTG responsevalues range between between −0.4 and 0.5. In addition, when the truncation of BDTG response values is −0.6 or 0.6, the model still maintained above 98% in accuracy, precision, recall and F1 scores. Therefore, the model has high accuracy and reliability in the diagnosis of heart disease. This study not only provides new perspectives and methods for predicting heart disease, but also serves as a reference for machine learning prediction research on other diseases.
-
心血管疾病是全球人口死亡的主要原因。世界卫生组织(WHO)网站报道,2019年有
1 790 万人死于心血管疾病,占全球死亡人数的32%。在我国,心血管疾病也对人们的健康造成极大威胁。据《中国心血管健康与疾病报告2022》报道,心血管疾病分别占我国农村和城市人口死因的48%和45.86%[1]。在心血管疾病中,心脏相关疾病占比近一半,对心脏病的预防和治疗显得尤为重要[2 − 3]。相较于患病后治疗,如果能对心脏病进行准确地预测鉴别,在根源上抑制心脏病的发生则更重要。近年来,随着大数据[4]和人工智能技术[5]的发展,机器学习(machine learning, ML)在心脏病学领域的研究日益成熟,涌现出大量研究成果。陈蒙蒙等[6]使用逻辑回归对心脏病进行预测;王成武等[7]对支持向量机进行改进,将心脏病鉴别准确率提高到84.04%;谭朋柳等[8]将CNN和Adaboost结合,心脏病预测模型准确率、查准率、查全率达到91.7%、92.4%和85%;赵金超等[9]使用K近邻进行数据集预处理,并使用随机森林对心脏病进行鉴别,准确率达到83.2%;刘柃伶等[10]提出基于XGBoost和SHAP的疾病鉴别方法。
本研究将高能物理学中的ROOT框架应用于心脏病鉴别,基于提升决策树(boosting decision tree, BDT)模型[11 − 12],提出梯度提升决策树(gradient boosting decision tree, BDTG)模型多变量方法,利用与事件拓扑相关的不同变量区分心脏病患者和正常人,并通过大量临床数据验证模型预测的准确性和可靠性。
1. 数据集和评价指标
1.1 数据集
本试验使用的心脏病数据集来源Kaggle数据平台。数据集总计包含
26000 个样本,每个样本包含13个特征变量。这些特征变量用于描述个体的心脏健康状况,其中标记为13表示样本所属类别。特征变量详见表1。表 1 数据集特征变量Table 1. Dataset feature variable序号 特征 描述 1 Age 年龄 2 Sex 性别 3 Cp 胸痛类型 4 Trestbps 静息血压/(mm·Hg−1) 5 Chol 胆固醇/(mg·dL−1) 6 Fbs 空腹血糖 7 Restecg 静息心电图 8 Thalach 最大心率 9 Exang 运动诱发性心绞痛 10 Oldpeak ST抑制 11 Ca 主要血管数量 12 Thal 地中海贫血 13 Target 心脏病 数据样本涵盖多种心脏病相关指标,具有丰富的临床信息,使得对心脏病的预测成为可能。其中,性别:1为男性,0为女性;胸痛类型:1为典型胸痛,2为非典型胸痛;空腹血糖大于120 mm/Hg设置为1,反之为0;静息心电图:0为正常,1为ST-T波异常,2为左心室肥大;运动诱发性心绞痛和ST抑制:1为是,0为否;主要血管数为0~3;地中海贫血:1为固定缺损,2为正常,3为可逆性缺损;心脏病:1为是,0为否。
心脏病患者标记为“signal”,正常人标记为“background”,两类数据在不同特征变量上的分布如图1所示。可以直观地发现心脏病患者与正常人间的差异,如Cp指标存在明显差异。数据分布图有助于直观了解特征变量在心脏病诊断中的作用,以及模型如何利用这些特征进行分类。
1.2 评估指标
二元分类机器学习模型的预测结果分为正类 (1) 和负类 (0)两类。结合二元分类,模型的预测结果分为4种情况,见表2。
表 2 4种预测结果类别的具体描述Table 2. Description of four prediction result categories类型 描述 TP(真正例) 真实值为1,预测值为1 TN(真负例) 真实值为0,预测值为0 FP(假正例) 真实值为0,预测值为1 FN(假负例) 真实值为1,预测值为0 以上分类有助于了解模型在不同类型预测中的表现,并为计算评估指标如准确率、查准率、查全率和F1分数提供基础[13]。
准确率(accuracy)指模型正确预测样本的百分比,衡量模型在所有样本整体的预测性能,公式为
准确率=TP+TNTP+TN+FP+FN (1) 查准率(precision)指模型预测为正类的样本中,实际为正类的样本百分比,衡量模型对正类预测的准确性,公式为
查准率=TPTP+FP (2) 查全率(recall)指实际为正类的样本中,衡量模型正确预测为正类的样本百分比,公式为
查全率=TPTP+FN (3) F1分数(F1_score)指查准率和查全率的调和平均值,衡量综合评价模型的性能,公式为
F1_score=2×查准率×查全率查准率+查全率 (4) 2. 梯度提升决策树
在高能物理的数据分析中,ROOT [14]框架集成的TMVA[15]工具包提供了一系列多变量分类算法。TMVA支持分类器的训练、测试、性能评估和应用,并可以通过用户友好的接口进行操作。TMVA中所有多变量技术都属于“监督学习”算法,利用已知的输出训练样本确定决策边界(分类)的映射函数。TMVA强大的功能和灵活性使其适用于广泛的数据分析任务,特别是在需要处理复杂数据和提高预测性能的领域。
2.1 提升决策树
决策树是一种非参数监督学习算法,用于分类和回归任务。具有层次化的树形结构,包括一个根节点、多个分支、内部节点和叶节点,如图2所示。
获得的数据集被分为训练样本和测试样本两部分。训练样本用于训练和优化决策树,测试样本用于测试训练后得到的最终分类器。每个样本包含一组特征变量x。首先,对每个特征变量事件根据值的大小进行排序,然后根据特征变量的值将训练样本中的事件划分为左右两部分。通过不断优化特征变量的划分位置,确保左右两部分分别包含大部分信号和背景。每个特征变量都进行这一过程,并最终选择能够获得最佳分离效果的特征变量及其对应的划分位置。
从根节点开始,决策树通过二元划分处理特征变量,每次划分使用当前节点特征变量的最佳分离方式,以区分信号和背景。因此,同一特征变量可在多个节点上使用,而其他特征变量可能完全不使用。树底部的叶节点表示最终划分的子集,这些子集可能包含纯信号、纯背景或少量事件。
为区分信号和背景的标准,定义信号纯度。每个事件都有1个权重 wi,分支后信号纯度公式为
P=∑sws∑sws+∑bwb (5) 式中:∑s为对信号求和;∑b为对背景求和。
当样本中都为信号或背景时,对于给定的分支,p(1−p)为0,基尼系数公式为
G=(n∑i=1wi)p(1−p) (6) 式中:n为当前分支下的所有事件。基尼系数可衡量了分支纯度,值越低表示分支纯度越高,即信号和背景的区分度越大。对该分支进行信号和背景分离的标准以最小化Gleft_son+Gright_son为目标。因此,确定1个节点拆分为两个分支时信号和背景最佳的分离标准为最大化,公式为
Criterion=Gfather−Gleft_son−Gright_son (7) 若一个叶节点的纯度大于0.5或设置的其他值,则称为信号叶节点;若纯度小于0.5,则称为背景叶节点。若事件落在信号叶节点上,则被分类为信号;若落在背景叶节点上,则被分类为背景,最终得到决策树。
2.2 梯度提升算法
提升(boosting)是在训练数据集中不断运用多变量分析算法(multi variable analysis, MVA),得到重新加权的数据版本增强分类表现的一种方式。从没有权重的事例开始建立决策树,若训练样本事例被错误分类,即信号事例分类到背景叶,或背景事例分类到信号叶,则该事例加权重,称作事例被提升。新决策树使用加了权重的事例,事例的权重不再一致,此过程不断重复,决策树越来越多,不断提高分类效果。
通过提升进行函数估计的思想可以通过简单的展开相加以理解。假设函数 F (x)为一组参数化基础函数
f(x;am) 的加权求和,这些基础函数称为“弱学习器”。因此,每个基础函数对应一个决策树,表达式为F(x;p)=M∑m=0βmf(x;am)p∈{βm;am}M0 (8) 提升过程用来调整参数P,使模型响应 F(x)与从训练样本中获得的真实值 y之间的偏差最小。该偏差常用平方误差损失函数 L(F, y)= (F(x)−y)2衡量。可以证明,损失函数完全决定了提升过程。
常用的AdaBoost提升方法[16]基于指数损失函数 L(F, y) =e−F(x) y,其发展出著名的重新加权算法。虽然AdaBoost在许多应用中表现出色,但其指数损失函数在处理异常值或标记错误数据点时不够强大,数据集存在偏差导致性能显著下降。
GradientBoost算法[17]通过引入有更强大性能的损失函数来解决这一缺陷,又保留AdaBoost的良好性能。当前TMVA中GradientBoost算法使用二项对数似然损失函数,可在具有挑战性的环境中提供更稳定的性能,公式为
L(F;y)=ln(1+e−2F(x)y) (9) 损失函数对应的提升算法不能直接获得,必须采用最陡下降法进行最小化,通过计算损失函数的当前梯度来实现。生成一个回归树,其中叶节点的值对应于由树结构定义的每个区域的梯度均值,通过迭代得到一组最小化损失函数的决策树。值得注意的是,GradientBoost在梯度计算可行的情况下适配任何损失函数。
以上通过逐步应用回归模型形成提升的决策树,每个模型拟合一个简单的决策树,将特征空间划分为许多高维立方体,模型参数见表3。
表 3 BDTG调节参数Table 3. BDTG tuning parameters参数 含义 设置 Ntree 树的数量 1000 BoostType 提升算法类型 Gradient Shrinkage GradientBoost算法学习率 0.1 nCuts 节点切割优化过程步骤数 20 MaxDepth MaxDepth 决策树最大深度 3. 训练结果
用于训练和测试分类器的变量有12个。事件在决策树中交替轮次选择,直到选出所需数量的训练和测试事件。表4列出前5个对信号和背景分离能力较强的变量。由此可知,胆固醇和静息血压是心脏病患者与正常人最显著的区分指标,这与临床表现一致。
表 4 特征变量影响排序Table 4. Influence of characteristic variable ranking排序 特征变量 影响程度 1 Chol 0.146 2 Trestbps 0.142 3 Thalach 0.125 4 Oldpeak 0.115 5 Ca 0.086 输入变量间的相关性如图3所示。由图可知,变量的相关性较弱,未显示出显著的线性依赖性,表明各变量在模型中提供了较为独立的信息,有利于提升模型的泛化能力。
训练样本和测试样本的 BDTG 响应如图4 所示。训练样本和测试样本中的信号与背景没有明显差异,训练样本中没有明显的过拟合发生。信号和背景的分离效果在较大响应范围内表现出色,具有很强的区分能力。
随着BDTG响应阈值的变化,准确率、查准率、查全率和 F1 分数变化见表5。这些评估指标接近 100%,表明 BDTG 方法具有卓越性能。
表 5 BDTG 响应在不同值截断的模型表现评价Table 5. BDTG performance measurementsBDTG响应 查准率/% 查全率/% F1分数/% −0.6 98.84 100 99.42 −0.5 99.88 100 99.94 −0.45 99.97 100 99.98 −0.4~0.5 100 100 100 0.55 100 99.86 99.93 0.6 100 99.39 99.69 将预测结果与其他心血管疾病预测模型对比,如ResNet-50模型。后者采用CNN算法,本研究预测结果的准确性高达98.92%[18]。可见,人工智能对心血管疾病的预测效果很好。由于重大疾病的诊断关系到人们的生命健康,后续将采用统计量更高的数据样本进行研究分析。
4. 结 语
本研究使用高能物理 ROOT 框架下的多变量分析方法对心脏病进行鉴别。BDTG方法展示了很好的预测能力,模型在响应值的截断为−0.6或0.6时,准确率、查准率、查全率和F1分数都达到98%以上。多种风险评估也验证了该模型的可靠性,为临床提前预测心脏病的发生提供了可能。
-
表 1 数据集特征变量
Table 1. Dataset feature variable
序号 特征 描述 1 Age 年龄 2 Sex 性别 3 Cp 胸痛类型 4 Trestbps 静息血压/(mm·Hg−1) 5 Chol 胆固醇/(mg·dL−1) 6 Fbs 空腹血糖 7 Restecg 静息心电图 8 Thalach 最大心率 9 Exang 运动诱发性心绞痛 10 Oldpeak ST抑制 11 Ca 主要血管数量 12 Thal 地中海贫血 13 Target 心脏病 表 2 4种预测结果类别的具体描述
Table 2. Description of four prediction result categories
类型 描述 TP(真正例) 真实值为1,预测值为1 TN(真负例) 真实值为0,预测值为0 FP(假正例) 真实值为0,预测值为1 FN(假负例) 真实值为1,预测值为0 表 3 BDTG调节参数
Table 3. BDTG tuning parameters
参数 含义 设置 Ntree 树的数量 1000 BoostType 提升算法类型 Gradient Shrinkage GradientBoost算法学习率 0.1 nCuts 节点切割优化过程步骤数 20 MaxDepth MaxDepth 决策树最大深度 表 4 特征变量影响排序
Table 4. Influence of characteristic variable ranking
排序 特征变量 影响程度 1 Chol 0.146 2 Trestbps 0.142 3 Thalach 0.125 4 Oldpeak 0.115 5 Ca 0.086 表 5 BDTG 响应在不同值截断的模型表现评价
Table 5. BDTG performance measurements
BDTG响应 查准率/% 查全率/% F1分数/% −0.6 98.84 100 99.42 −0.5 99.88 100 99.94 −0.45 99.97 100 99.98 −0.4~0.5 100 100 100 0.55 100 99.86 99.93 0.6 100 99.39 99.69 -
[1] 马丽媛, 王增武, 樊静, 等. 《中国心血管健康与疾病报告2022》要点解读[J] . 中国全科医学,2023,26(32):3975 − 3994. [2] 李秀清. 心脑血管疾病的危险因素及预防方法分析[J] . 亚太传统医药,2012,8(1):179 − 181. [3] 闫一鸣, 欧阳文斌, 张凤文, 等. 中国先天性心脏病介入治疗现状与展望[J] . 中国胸心血管外科临床杂志,2022,29(10):1243 − 1253. [4] 梅宏, 杜小勇, 金海, 等. 大数据技术前瞻[J] . 大数据,2023,9(1):1 − 20. [5] 肖博达, 周国富. 人工智能技术发展及应用综述[J] . 福建电脑,2018,34(1):98 − 99 [6] 陈蒙蒙, 方振红, 涂文怡, 等. 基于Logistic回归模型的心脏病预测模型构建及效果分析[J] . 医院管理论坛,2022,39(2):32 − 35. [7] 王成武, 郭志恒, 晏峻峰. 改进的支持向量机在心脏病预测中的研究[J] . 计算机技术与发展, 2022, 32(3): 175−179. [8] 谭朋柳, 徐光勇, 张露玉, 等. 基于卷积神经网络和Adaboost的心脏病预测模型[J] . 计算机应用,2023,43(S1):19 − 25. [9] 赵金超, 李仪, 王冬, 等. 基于优化的随机森林心脏病预测算法[J] . 青岛科技大学学报(自然科学版),2021,42(2):112 − 118. [10] 刘柃伶, 黄学德. 基于XGBoost和SHAP的心脏病影响因素分析[J] . 信息与电脑(理论版),2024,36(6):68 − 70. [11] ALAN S C, WESLEY D, BENJAMIN F, et al. Boosted decision trees in the era of new physics: a smuon analysis case study[J] . Journal of High Energy Physics,2021(2022):1 − 15. [12] NIKOLAY K,OLEG S. Method for improving gradient boosting learning efficiency based on modified loss functions[J] . Automation and Remote Control,2022(83):1935 − 1943. [13] ANDREAS T. ConfusionVis: comparative evaluation and selection of multi-class classifiers based on confusion matrices[J] . Knowledge-Based Systems,2022(247):3 − 12. [14] TAFFAZUL C, BISMITA C. Automated cardiovascular disease prediction models: A comparative analysis[J] . EAI Endorsed Transactions on Pervasive Health and Technology,2023(9):1 − 6. [15] RAQUEL S, VERONIKA T, CELIA O, et al. Balancing risk and profit: Predicting the performance of potential new customers in the insurance industry[J] . Journal cf Information Science,2024(15):546. [16] ASADA Y. Evaluation of the performance of a machine learning based atrial fibrillation screening algorithm using an oscillometric blood pressure monitor[J] . Scientific Reports,2024(14):1 − 18. [17] DU S S, QIU T, LI L Q, et al. Application of multi-gradient boosting tree in drug identification[J] . Computer Science and Exploration,2020(14):260 − 273. [18] SHAIMAA M, MOHAMED G, GAMAL F, et al. Cardiovascular disease prediction using modified version of resnet-50 model[C] //Proceedings of the 32nd International Conference on Computer Theory and Applications (ICCTA). Location: IEEE, 2022. -