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

图1: 常见心血管疾病类别的概念性示意,仅作为背景介绍。 请点击此处查看该图的放大版本。
图1 仅供高级上下文参考,不代表本研究分析数据集或拟议计算方案的任何输出数据。
特别是,许多现有研究强调性能结果,却未明确区分单个方法学组成部分的贡献,如特征选择时机、类平衡或集合配置15、16、17、18。这种变异性凸显了需要一个可重复的基准测试框架,系统地通过一致的预处理流水线和公开数据集的评估协议来评估集合机器学习方法。
假设集合学习方法,特别是堆叠方法,在标准化的预处理和验证条件下评估时,将展示出比单个基分类器更好的分类准确性和均衡的类别性能。
因此,本研究的目标是利用公开的Kaggle数据集,对心血管疾病预测中的集成机器学习方法进行计算基准分析。该过程包括标准化的数据预处理、使用随机森林算法对特征重要性进行排序,以及采用不同的集合技术,包括硬投票、软投票和叠加。逻辑回归被用作堆栈中的元分类器算法。这确保了不存在过拟合,因为它使用交叉验证的预测。
本研究纯粹作为公开数据集基准分析。其发现受限于单一数据集及潜在数据集特异性偏差,因此不意味着临床验证或部署。在考虑任何临床应用之前,必须通过独立数据集进行外部验证和前瞻性评估。
以下研究问题指导本研究:
本研究考察了不同的集合机器学习方法,包括硬投票、软投票和堆叠,在应用于公开心血管疾病数据集时,分类准确度的比较。
Access restricted. Please log in or start a trial to view this content.
该协议描述了一种可重复的计算流程,用于利用公开的心血管疾病数据集进行集成机器学习模型的基准测试。
数据集选择
该研究采用了从Kaggle数据库获得的公开心血管疾病数据集。该数据集包含1190个实例,包含11个特征。模型训练中,80%的数据被利用,剩余20%用于性能评估。 表1 详细描述了数据集特征。数据集通过 pandas 库(版本 1.5.3)加载到 Python(版本 3.9)。通过检查缺失值、重复记录和不一致的数据类型,验证了数据集完整性。
表1 总结了心血管疾病数据集中包含的人口统计、临床和实验属性,以及它们的数据类型和编码格式。这些特征构成了所有后续模型训练和评估程序的输入变量。
| SL. 不 | 特色名称 | 数据类型 | 描述 |
| 1 | 年龄 | 数值 | 患者的年龄(以年龄计)。 |
| 2 | 性 | 名义上 | 男性表示为1,女性表示为0。 |
| 3 | 胸痛类型 | 范畴 | 1:典型 2:典型心绞痛 3:非心绞痛疼痛 4:无症状 |
| 4 | 静息血压 | 数值 | 静息时的血压以毫米汞柱(mmHg)为单位测量。 |
| 5 | 胆固醇水平 | 数值 | 血清胆固醇(毫克/分升)指标。 |
| 6 | 空腹血糖 | 名义上 | 空腹期间血糖超过120 mg/dl的血糖表示为1(真值)和0(假值)。 |
| 7 | 静息心电图 | 分类 | 分配三个不同的数值如下:正常为0,ST-T波异常为1,左心室肥厚为2。 |
| 8 | 最大心率 | 数值 | 达到峰值心率 |
| 9 | 运动心绞痛 | 名义上 | 运动诱发的心绞痛,0代表NO,1代表Yes。 |
| 10 | 老峰 | 数值 | 运动时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实现的随机森林特征重要性实现的。特征重要性评分基于杂质的平均减少度计算,并据此对特征进行排名。排名前N的特征被保留用于后续分析。特征选择是在所有预处理步骤完成后、列车-测试拆分之前进行的,确保所有分类模型和集合配置中使用固定且一致的特征集(见图4)。

图4: 使用随机森林特征重要性计算的特征重要性评分。特征按归一化重要性值进行排名。 请点击此处查看该图的放大版本。
特征根据随机森林特征重要性的平均减少率进行排名,random_state = 42;但所有可用特征(N = 11)都被保留用于后续模型训练。特征选择是在预处理后、列车-测试拆分前进行的,确保所有模型的特征集固定。
模型训练与集合构建
数据集被按80:20的比例与train_test_split()函数划分为训练和测试子集。训练数据专门用于模型开发和集成构建,测试数据则保留用于性能评估。基础分类器,包括决策树、随机森林、AdaBoost和XGBoost,除非另有说明,均使用默认超参数设置在训练数据集上进行训练。
使用投票分类器构建了硬投票和软投票集合模型,所有基础分类器权重相等,以确保客观比较。采用逻辑回归作为元分类器实现了堆叠集成模型。该元分类器基于通过对基础分类器进行五重交叉验证生成的非折叠预测训练,减少了过度拟合,并实现了对集合性能的无偏估计。
拟议模型
所提出的集合框架被实现为利用多种集合学习策略构建复合分类器。所有训练数据均经过标准化,测试数据采用相同的预处理步骤,以确保训练与评估阶段的一致性。基础分类器通过硬投票、软投票和叠加机制进行了集成,堆叠元分类器则通过逻辑回归对交叉验证的预测进行训练。集合框架的整体架构和数据流(见图5)。

图5: 拟议模型的架构。 请点击此处查看该图的放大版本。
一级:
在集合框架的第一级,四个基础分类器——随机森林、决策树、XGBoost和AdaBoost——使用缩放训练数据集进行训练。这些基础分类器被组合起来构建了硬投票和软投票的集合模型。为保持客观性并防止在集成构建过程中因权重差异而产生的偏差,所有基础分类器均被赋予相等权重。
第二级:
在第二级,通过结合基础分类器生成的预测实现了堆叠集合分类器。基础分类器通过五折交叉验证训练,每个折叠生成了非折叠预测。这些折叠外的预测随后被用作输入特征,用于训练逻辑回归元分类器,从而减少过拟合,实现对集合性能的无偏估计。
Access restricted. Please log in or start a trial to view this content.
本节介绍了数据预处理和特征选择的影响,比较单个和集合分类器的性能,并总结了跨标准评估指标的基准测试结果。数据预处理,包括缺失值消除、类平衡和特征缩放,使所有分类器之间的输入分布保持一致。在预处理数据上训练的模型在重复的5折交叉验证运行和训练-测试分段中表现变异性低于未处理基线。特别是,阶级平衡在所有评估模型中持续提升了少数族裔阶级的回忆率。
采用基于随机森林的特征重要性排序来评估每个特征的相对贡献;但所有可用的输入特征都被保留用于模型训练,并在所有分类器中统一应用。特征选择提高了模型稳定性并减少了过拟合,表现为5重交叉验证运行中性能指标的更低标准差。在本研究中,“优化”特指对特征集和集合配置的细化,而非超参数调优。
在性能评估中,使用分类准确性、类别特定精度、召回率和F1分数等指标以确保错误感知性能评估。.RF、DT、XGBoost和AdaBoost等个别分类器的性能因类别而异,而硬投票、软投票和堆叠等集合技术则提升了准确性和召回性的权衡,尤其是对少数群体而言。
比较了单...
Access restricted. Please log in or start a trial to view this content.
本研究表明,基于堆叠的集合学习在标准化的预处理和基准测试条件下,始终优于单个分类器和基于投票的集合实现了更优越且更稳定的分类性能。
本研究观察到的集合表现一致性,强化了方法论严谨性在比较机器学习研究中的重要性(19,20,21,22,23,24,25)。通过控制所有模型的预处理、特征选择和验证程序,所提框架最大限度地减少了实验偏差,并使得对集合学习策略的评估更加可靠,这与以往基准研究中已确立的最佳实践一致(26,27
Access restricted. Please log in or start a trial to view this content.
作者声明与本研究工作无利益冲突。本稿中呈现的结果、分析或结论,均未受到任何财务、个人或职业关系的影响。
作者承认使用了支持本研究的公开数据集和开源软件资源。作者还感谢各自机构,包括布巴内斯瓦尔斯里斯里大学和SOA大学,为开展这项工作提供了必要的学术环境和研究设施。
Access restricted. Please log in or start a trial to view this content.
| Name | Company | Catalog Number | Comments |
|---|---|---|---|
| AdaBoost分类器 | scikit-learn 开发者 | 无 | 用于基准测试的集合提升分类器 |
| 朱皮特笔记本 | 朱比特计划 | 无 | 计算笔记本环境 |
| Kaggle Heart 统计日志(克利夫兰–匈牙利)数据集 | 卡格尔 | 无 | 公开心血管数据集(1190个实例,11个特征)。网址:https://www.kaggle.com/datasets/sid321axn/heart-statlog-cleveland-hungary-final |
| 逻辑回归 | scikit-learn 开发者 | 无 | 堆叠集合中使用的元分类器 |
| Matplotlib | Matplotlib 开发团队 | 无 | 数据可视化库 |
| 数字派 | NumPy 开发者 | 无 | 数值计算库 |
| pandas(版本 1.5.3) | 熊猫开发团队 | 无 | 数据预处理与处理 |
| Python(版本3.9) | Python 软件基础 | 无 | 用于实现的编程环境 |
| 随机森林分类器 | scikit-learn 开发者 | 无 | 基分类器和特征重要性计算 |
| 海本 | 海本开发团队 | 无 | 相关矩阵的热图可视化 |
| 标准缩放器 | scikit-learn 开发者 | 无 | 特征缩放函数 |
| 投票分类器 | scikit-learn 开发者 | 无 | 硬投票和软投票集合的实现 |
| XGBoost分类器 | DMLC | 无 | 梯度提升分类器作为基础学习器使用 |
Access restricted. Please log in or start a trial to view this content.
Request permission to reuse the text or figures of this JoVE article
Request Permission