本方案概述了一种计算流程,旨在利用公开可获取的基准数据,在可重复的预处理与评估框架内,构建并评估用于心脏病预测的集成机器学习模型。
研究文章
本方案概述了一种计算流程,旨在利用公开可获取的基准数据,在可重复的预处理与评估框架内,构建并评估用于心脏病预测的集成机器学习模型。
本文提出了一种针对集成学习算法在心脏病预测中进行计算基准评估的方法,通过单一框架整合了多种机器学习算法,例如硬投票、软投票和堆叠(stacking)。评估使用了从Kaggle资源库公开获取的心血管疾病数据集(https://www.kaggle.com/datasets/sid321axn/heart-statlog-cleveland-hungary-final),该数据集包含1,190个实例和11项临床特征。研究过程包括数据预处理,如处理缺失值、剔除异常值、变量标准化以及类别平衡,以确保输入特征的一致性;基于随机森林(RF)的特征选择方法用于剔除不必要的特征。在所评估的模型中,堆叠集成分类器在测试数据集上取得了最高的整体准确率,达到91.88%。尽管还计算了精确率、召回率和F1分数等其他指标以进行对比分析,但本研究的重点仍在于方法学上的基准比较,而非临床验证。
多种基础分类器,包括决策树、随机森林、AdaBoost 和 XGBoost,被分别应用并独立测试。随后,通过集成技术将这些模型结合,采用硬投票、软投票和堆叠方法。在堆叠中,使用逻辑回归作为元模型,该模型基于交叉验证得到的折外样本预测结果进行训练,以避免过拟合。
评估以准确率作为主要比较标准,以便在相同的预处理和验证环境中对各个分类系统及其组合策略进行统一比较。尽管提供了性能指标以供对比参考,但该方法的重点在于策略的开发与评估,而非其临床评估。
本方案便于在公开的心血管数据集上比较集成机器学习算法,并有助于系统性地比较数据预处理和集成配置方法。
公开可用的心血管疾病数据集在机器学习研究中被广泛用作基准问题,以评估分类算法和预测建模技术1,2,3。这类数据集包含临床和人口统计学属性,为在受控实验条件下比较预处理策略、特征选择方法以及集成学习架构提供了标准化且可重复的基础。因此,这些数据集通常用于评估算法行为,而非支持临床推断或实际应用4,5。
既往研究已探讨了多种用于预测心血管疾病的机器学习方法,例如逻辑回归(LR)、支持向量机(SVM)、随机森林(RF)和梯度提升模型6,7,8,9。近年来,研究重点转向集成学习技术,例如硬投票、软投票和堆叠(stacking),以提高模型的稳定性与性能10,11,12,13,14。然而,这些研究在数据预处理、特征处理、验证方式以及结果评估指标等方面存在差异,导致难以直接比较所报告的结果。为提供文献中常见的心血管疾病分类的高层次背景概览,图1展示了相应的概念示意图。

图1: 常见报道的心血管疾病类别的概念性示意图,仅用于提供背景信息。请点击此处查看此图的放大版本。
图1 仅用于高层次的背景参考,不代表本研究分析的数据集所得出的数据,也不代表所提出计算方案的任何输出结果。
特别是,许多现有研究强调性能结果,却未能明确区分各个方法学组成部分的独立贡献,例如特征选择时机、类别平衡或集成配置15,16,17,18。这种不一致性凸显了建立一个可重复基准测试框架的必要性,该框架应在公开可用的数据集上,采用统一的预处理流程和评估协议,系统地评估集成机器学习方法。
人们推测,在标准化的预处理和验证条件下进行评估时,集成学习方法(特别是堆叠方法)与单个基础分类器相比,将表现出更高的分类准确性和更平衡的各类别性能。
因此,本研究的目的是利用公开可用的 Kaggle 数据集,对用于心血管疾病预测的集成机器学习方法进行计算基准分析。该过程包括标准化的数据预处理、使用随机森林算法对特征重要性进行排序,以及采用多种集成技术,包括硬投票、软投票和堆叠法。在堆叠法中,逻辑回归被用作元分类器算法。通过使用交叉验证的预测,可确保不存在过拟合问题。
本研究严格作为公共数据集的基准测试调查。其研究结果受限于单一数据集以及潜在的数据集特异性偏差,因此并不意味着临床验证或实际应用。在考虑任何临床应用之前,需使用独立数据集进行外部验证以及前瞻性评估。
本研究由以下研究问题引导:
本研究探讨了不同的集成机器学习方法(包括硬投票、软投票和堆叠)在应用于公开的心血管疾病数据集时,分类准确率的比较情况。
访问受限。请登录或开始试用以查看此内容。
本方案描述了一种可重复的计算工作流程,用于利用公开可用的心血管疾病数据集对集成机器学习模型进行基准测试。
数据集的选择
本研究采用了一个从 Kaggle 仓库获取的公开心血管疾病数据集。该数据集包含 1190 个实例,共涵盖 11 个特征。其中 80% 的数据用于模型训练,其余 20% 用于性能评估。表 1 详细描述了数据集的特征。使用 pandas 库(版本 1.5.3)将数据集加载至 Python(版本 3.9)环境中,并通过检查缺失值、重复记录及不一致的数据类型来验证数据集的完整性。
表1汇总了心血管疾病数据集中包含的人口统计学、临床和实验特征,以及它们的数据类型和编码格式。这些特征构成了所有后续模型训练和评估过程的输入变量。
| 序号 | 特征名称 | 数据类型 | 描述 |
| 1 | 年龄 | 数值型 | 患者年龄,单位为年。 |
| 2 | 性别 | 名义型 | 男性用1表示,女性用0表示。 |
| 3 | 胸痛类型 | 类别型 | 1:典型心绞痛;2:非典型心绞痛;3:非心绞痛性疼痛;4:无症状 |
| 4 | 静息血压 | 数值型 | 静息状态下测量的血压,单位为毫米汞柱(mmHg)。 |
| 5 | 胆固醇水平 | 数值型 | 血清胆固醇浓度,单位为毫克每分升(mg/dL)。 |
| 6 | 空腹血糖 | 名义型 | 空腹期间血糖水平是否高于120 mg/dL,高于则用1表示(真),否则用0表示(假)。 |
| 7 | 静息心电图 | 类别型 | 三个不同取值如下:0表示正常,1表示ST-T波异常,2表示左心室肥厚。 |
| 8 | 最大心率 | 数值型 | 达到的最高心率。 |
| 9 | 运动诱发心绞痛 | 名义型 | 由运动引起的心绞痛,0表示无,1表示有。 |
| 10 | Oldpeak | 数值型 | 运动时相对于静息状态的ST段压低程度。 |
| 11 | ST段斜率 | 类别型 | 运动峰值时ST段斜率分类如下:0:正常;1:上斜型;2:水平型;3:下斜型。 |
表1:用于心脏病预测的数据集特征描述。
数据预处理
使用 Python 库进行数据预处理。通过 pandas.DataFrame.dropna() 函数删除包含缺失值的行。使用四分位距(IQR)方法并结合箱线图可视化来识别和剔除数值型特征中的异常值,箱线图展示了各特征的分布情况及检测到的异常值(图 2)。所有数值变量均使用 scikit-learn 库(版本 1.2.2)中的 StandardScaler 函数进行标准化。在模型训练前,通过随机欠采样方法解决类别不平衡问题,以获得均衡的类别分布。

图2:心血管疾病数据集中所有属性的箱线图。请点击此处查看此图的放大版本。
采用皮尔逊相关系数(PCC)评估特征之间的关系。所得到的相关性矩阵以热图形式可视化,展示了成对特征间相关性的强度与方向,并突出了可剔除的冗余属性(图3)。

图 3:心脏病数据集的相关性矩阵。请点击此处查看该图的放大版本。
该模型生成一个美观的关联矩阵热图,能够更快地帮助理解数据中不同特征之间的相关性。该热图利用颜色来显示数值之间的相关程度及其方向,是探索性数据分析中的重要工具。较浅的颜色表示较强的正相关,较深的颜色表示较强的负相关,而较多的绿色则表示相关性接近零。
特征提取
采用开源机器学习库中的 RandomForestClassifier 实现的随机森林特征重要性方法进行特征选择。特征重要性评分基于纯度平均减少量(mean decrease in impurity)进行计算,并据此对特征进行排序。保留排名前 N 的特征用于后续分析。特征选择在完成所有预处理步骤后、训练集与测试集划分前进行,以确保在所有分类模型和集成配置中使用固定且一致的特征集(图 4)。

图 4: 使用随机森林特征重要性计算得到的特征重要性得分。特征按归一化的重要性值进行排序。请点击此处查看此图的放大版本。
采用随机森林特征重要性方法(random_state = 42)基于平均不纯度减少对特征进行排序;但保留所有可用特征(N = 11)用于后续模型训练。特征选择在预处理后、训练集–测试集划分前进行,以确保所有模型使用固定的特征集。
模型训练与集成构建
使用 train_test_split() 函数按照 80:20 的比例将数据集划分为训练集和测试集。训练数据仅用于模型开发与集成构建,而测试数据则保留用于性能评估。基础分类器包括决策树、随机森林、AdaBoost 和 XGBoost,均在训练数据集上使用默认超参数设置进行训练,除非另有说明。
使用 VotingClassifier 构建了硬投票和软投票集成模型,并为所有基分类器分配相等的权重,以确保客观比较。采用逻辑回归作为元分类器实现了堆叠集成模型。元分类器在基分类器通过 5 折交叉验证生成的跨折预测结果上进行训练,从而减少了过拟合,并实现了对集成模型性能的无偏估计。
提出的模型
采用所提出的集成框架,通过多种集成学习策略构建一个组合分类器。所有训练数据均进行了标准化处理,并对测试数据应用了相同的预处理步骤,以确保训练阶段与评估阶段之间的一致性。基础分类器通过硬投票、软投票和堆叠机制进行集成,其中堆叠的元分类器使用逻辑回归在交叉验证的预测结果上进行训练。该集成框架的整体架构与数据流如(图5)所示。

图 5:所提出模型的架构。请点击此处查看此图的放大版本。
一级:
在集成框架的第一级中,使用经标准化处理的训练数据集对四种基础分类器——随机森林、决策树、XGBoost 和 AdaBoost——进行了训练。这些基础分类器被组合起来,构建了硬投票和软投票两种集成模型。所有基础分类器被赋予相等的权重,以保持客观性,并防止在集成模型构建过程中因权重调节不均而引入偏差。
二级模型:
在第二级中,通过整合基学习器生成的预测结果,构建了一个堆叠集成分类器。基学习器采用五折交叉验证进行训练,并为每一折生成折外预测结果。这些折外预测结果随后被用作输入特征,以训练一个逻辑回归元分类器,从而减少过拟合,并实现对集成模型性能的无偏估计。
访问受限。请登录或开始试用以查看此内容。
本节介绍了数据预处理和特征选择的效果,比较了单个分类器与集成分类器的性能,并总结了在标准评估指标下的基准测试结果。数据预处理包括缺失值去除、类别平衡和特征缩放,使所有分类器的输入分布保持一致。与未经处理的基线相比,基于预处理数据训练的模型在多次重复的5折交叉验证和训练-测试划分中表现出更小的性能波动。特别是,类别平衡在所有评估模型中均持续提升了少数类的召回率。
基于随机森林的特征重要性排序用于评估每个特征的相对贡献;然而,模型训练保留了所有可用的输入特征,并在所有分类器中统一应用。特征选择提高了模型稳定性并减少了过拟合,这体现在5折交叉验证运行中性能指标的标准差降低。本研究中,“优化”特指特征集和集成配置的改进,而非超参数调优。
在性能评估中,采用分类准确率、类别特异性精确率、召回率和F1分数等指标,以确保进行考虑误差的性能评估。RF、DT、XGBoost和AdaBoost等单个分类器的性能在不同类别间有所差异,而硬投票、软投票和堆叠等集成方法则改善了精确率与召回率之间的权衡,尤其对少数类别效果更为显著。
访问受限。请登录或开始试用以查看此内容。
本研究表明,在标准化预处理和基准测试条件下,基于堆叠的集成学习方法相比单个分类器和基于投票的集成方法, consistently 实现了更优且更稳定的分类性能。
本研究中观察到的集成模型性能的一致性,进一步强调了在比较性机器学习研究中坚持方法学严谨性的重要性19,20,21,22,23,24,25。通过在所有模型中统一控制数据预处理、特征选择和验证流程,所提出的框架最大限度地减少了实验偏差,从而能够更可靠地评估集成学习策略,符合既往基准研究中确立的最佳实践标准26,...
访问受限。请登录或开始试用以查看此内容。
作者声明,他们与本项研究工作不存在任何利益冲突。本稿件中所呈现的结果、分析或结论未受到任何财务、个人或专业关系的影响。
作者感谢使用了支持本研究的公开数据集和开源软件资源。作者还感谢各自的机构,包括印度布巴内斯瓦尔的Sri Sri大学和布巴内斯瓦尔的SOA大学,为开展此项工作提供了必要的学术环境和研究设施。
访问受限。请登录或开始试用以查看此内容。
| 姓名 | 公司 | 目录编号 | 评论 |
|---|---|---|---|
| AdaBoost分类器 | scikit-learn 开发者 | N/A | 用于基准测试的集成提升分类器 |
| Jupyter Notebook | Project Jupyter | N/A | 计算型笔记本环境 |
| Kaggle 心脏病统计数据库(克利夫兰–匈牙利)数据集 | Kaggle | N/A | 公开的心血管疾病数据集(1190个样本,11个特征)。URL: https://www.kaggle.com/datasets/sid321axn/heart-statlog-cleveland-hungary-final |
| 逻辑回归 | scikit-learn 开发者 | N/A | 在堆叠集成中使用的元分类器 |
| Matplotlib | Matplotlib 开发团队 | N/A | 数据可视化库 |
| NumPy | NumPy 开发者 | N/A | 数值计算库 |
| pandas(版本 1.5.3) | pandas 开发团队 | N/A | 数据预处理与处理 |
| Python(版本 3.9) | Python 软件基金会 | N/A | 用于实现的编程环境 |
| 随机森林分类器 | scikit-learn 开发者 | N/A | 基础分类器及特征重要性计算 |
| Seaborn | Seaborn 开发团队 | N/A | 相关性矩阵的热图可视化 |
| StandardScaler | scikit-learn 开发者 | N/A | 特征缩放函数 |
| VotingClassifier | scikit-learn 开发者 | N/A | 硬投票与软投票集成实现 |
| XGBoost分类器 | DMLC | N/A | 作为基础学习器使用的梯度提升分类器 |
访问受限。请登录或开始试用以查看此内容。
申请许可以重复使用本 JoVE 文章的文本或图表
申请许可