1. 引言
心血管疾病(Cardiovascular Disease, CVD)是世界上最致命的疾病,约占人口死亡率的40%,其死亡率高于我们认为死亡率较高的疾病,如癌症,其发病率和死亡率仍在不断上升,据估计,目前中国CVD患者人数已达3亿多人,是中国居民的首要健康危险因素[1]。我国对CVD的防治工作取得了一些成绩,但仍面临一系列挑战。CVD的临床诊断主要依赖于医生对病人临床症状、既往病史以及辅助检查的综合分析。然而,这一过程不仅繁琐且价格昂贵,而且医生的经验水平也会对诊疗效率产生一定的影响[2]。同时,我国目前初级人工诊断的误诊率较高,准确评估个体风险对CVD的预防具有指导作用。尽管机器学习以其卓越的分析处理能力在疾病诊断领域得到了广泛应用,但对于CVD,简单地将其应用于某个机器学习模型可能无法获得预期效果,因为不同模型在不同的数据集上一般会产生不同的结果,应针对不同的疾病选择匹配的分类算法,以提高预测的准确性。鉴于CVD医疗数据的复杂性和多样性,本研究考虑当前CVD的主要影响因素,将机器学习的单一模型和组合模型分别应用到CVD预测领域上,并对不同模型的预测结果进行评估,得到最精准的模型,以期辅助医生进行诊断,降低该病临床误诊率。
2. 材料与方法
2.1. 数据来源
本文使用的数据集来自Kaggle数据分析在线平台,该数据集有7万条数据,包括年龄、性别、收缩压、血糖、是否吸烟等影响CVD主要因素的11个特征。为便于后续分析,对数据集中的变量解释如表1所示。
Table 1. Explanation of variables
表1. 变量解释
原始数据字段名(单位) |
变量解释 |
变量类型 |
cardio |
是否患心血管疾病 |
分类 |
gender |
性别 |
连续 |
age (day) |
年龄 |
连续 |
height (cm) |
身高 |
连续 |
weight (kg) |
体重 |
连续 |
续表
ap_hi (mmhg) |
收缩压 |
连续 |
ap_lo (mmhg) |
舒张压 |
连续 |
cholesterol |
胆固醇等级 |
分类 |
gluc |
血糖等级 |
分类 |
smoke |
是否吸烟 |
分类 |
alco |
是否饮酒 |
分类 |
active |
是否经常锻炼 |
分类 |
2.2. 数据预处理
首先,对该数据集进行缺失值检查,检查结果显示,该数据集不含缺失值,因此无需进行缺失值处理。其次,对身高、体重、收缩压和舒张压等连续型变量进行分析,其平均值、最大值和中位数等数值特征见表2。
Table 2. Distribution of variables
表2. 变量分布情况
|
age |
height |
weight |
ap-hi |
ap-lo |
Min |
10798.00 |
55.00 |
10.00 |
−150.00 |
−70.00 |
1st Quartile |
17664.00 |
159.00 |
65.00 |
120.00 |
80.00 |
Median |
19703.00 |
165.00 |
72.00 |
120.00 |
80.00 |
Mean |
19468.87 |
164.36 |
74.21 |
128.82 |
96.63 |
3rd Quartile |
21327.00 |
170.00 |
82.00 |
140.00 |
90.00 |
Max |
23713.00 |
250.00 |
200.00 |
16020.00 |
11000.00 |
Std |
2467.75 |
8.21 |
14.40 |
154.00 |
188.47 |
由表2可以看出,该数据集中存在异常值,例如体重最小值为10 kg,收缩压最小值为−150 mmhg,最大值为16,020 mmhg,舒张压最小值为−70 mmhg,最大值为11,000 mmhg,这些数据都不在血压计刻度的正常范围内[3]。这些异常数据的出现很可能是由于记录数据时出现错误,可以直接删除,处理后的数据分布如3所示。
由表3可以看出,各个变量的数值大小已经在正常范围内,将1578条异常样本数据剔除后,数据集还有68,422条数据,剔除样本占原始样本总数的2.25%,为便于后续研究分析,年龄单位由天改为年。
Table 3. Distribution of variables (after the processing of abnormal values)
表3. 变量分布情况(异常值处理后)
|
age |
height |
weight |
ap-hi |
ap-lo |
Min |
10798.00 |
130.00 |
30.00 |
70.00 |
50.00 |
1st Quartile |
17656.00 |
159.00 |
65.00 |
120.00 |
80.00 |
Median |
19701.00 |
165.00 |
72.00 |
120.00 |
80.00 |
Mean |
19464.00 |
164.40 |
74.08 |
126.50 |
81.25 |
3rd Quartile |
21324.00 |
170.00 |
82.00 |
140.00 |
90.00 |
Max |
23713.00 |
198.00 |
183.00 |
197.00 |
130.00 |
Std |
2468.51 |
7.84 |
14.25 |
16.29 |
9.28 |
数据集包括影响心血管疾病的11个自变量,因变量为患心血管疾病的情况,为二分类变量。对患病情况进行分析,分布情况如图1所示。从图1中可以看出,有病和无病的受试者个数基本相同,说明数据集为平衡数据,因此无需考虑不平衡处理。
Figure 1. Distribution of disease
图1. 患病分布情况
Figure 2. Variable correlation heat map
图2. 变量相关性热力图
为确保后续分析的准确性,对数据集中各变量之间的多重共线性问题进行检验,变量之间的相关性热力图如图2所示。从图2中可以看出,大多数变量之间的相关性很小,但收缩压和舒张压之间的相关系数为0.75,两者之间存在明显的线性关系。无论是舒张压还是收缩压高于正常值,都可以被认为是高血压,而在医学诊断中,一般更关注收缩压,收缩压的升高比舒张压的升高对身体的影响更大。因此,本研究将舒张压这一变量排除在外。对于身高和体重,引入体重指数(Body Mass Index, BMI),这是一个综合衡量指标,通常用于衡量超重和肥胖程度,计算公式如下:
. (1)
上式单位为kg/m2,最后对连续变量进行归一化处理,对离散变量进行因子化处理。随后根据上述处理的数据进行分析研究。
2.3. 方法
本研究主要研究机器学习算法在心血管疾病预测中的应用,为有效结合不同单一机器学习模型在稳定性和准确性方面的优势,本研究将从组合机器学习模型的角度展开研究。根据以往的经验,选择六种主流的机器学习算法,包括逻辑回归(Logistic Regression, LR)、K最近邻(K Nearest Neighbors, KNN)、支持向量机(Support Vector Machines, SVM)、朴素贝叶斯(Naive Bayes Classifier, NBC)、决策树(Decision Tree, DT)以及随机森林(Random Forest, RF)。将经过上述预处理后的数据集按照3:7的比例分为训练集和测试集,利用上述机器学习方法建立经过网格搜索方法调参后的模型,并根据评价指标综合分析选择合适的单一模型,然后与其他模型串联或并联,最终得到效果最好的心血管疾病的预测模型。
2.3.1. 单一机器学习
1) LR
LR模型是统计学家David Cox于1958提出的广义线性回归模型,常用于解决二分类和多分类问题。基于广义线性回归模型的思想,建立一个线性模型,将输入特征与sigmoid函数的输出相结合,进而预测模型输出的概率[4]。心血管疾病预测是一个二分类问题,根据疾病是否存在,疾病状态被分为两类。通常0表示没有患病,1表示患病。sigmoid函数的输出值介于(0, 1)之间,表示样本属于某一类别的概率,如果输出概率小于0.5,则表示当前样本未患病,反之则表示当前样本患病。
2) KNN
KNN是Cover和Hart于1968年提出的较为经典的机器学习算法之一。其核心思想是如果假定一个样本在特征空间中有K个最近的邻居,同时这K个邻居中的大多数属于某一类,那么该样本也会被归入这一类,并具有这一类样本的特征[5]。要对一个新的样本进行分类,需要计算它与训练集中所有样本的距离,再根据K个最近邻居样本的类别,通过投票或加权投票来确定要分类样本的类别。因其算法简单直观、性能良好,常被应用于分类问题中。
3) SVM
SVM算法的基本模型是线性分类模型,其学习方法是区间最大化,可转化为解凸式二次编程问题[6]。支持向量机的模型从简单到复杂依次为:线性可分离SVM、线性SVM以及非线性SVM。在心血管疾病预测中,本研究根据训练数据集是否线性可分离来选择合适的模型:当数据集线性可分离时,选择线性可分离的SVM,并通过硬区间最大化来学习模型;当训练数据近似可线性分离时,即去除几个特殊样本点后训练数据可线性分离时,将通过软区间最大化来学习线性分类器;当训练数据线性不可分离时,将通过引入核函数和软区间最大化学习非线性SVM。
4) NBC
NBC是一种基于贝叶斯定理的概率分类算法,是一种简单而有效的分类方法,广泛应用于自然语言处理等领域[7]。核心思想是通过计算后验概率进行分类,给定一个待分类的样本,算法会根据训练数据中的特征和类别信息计算样本属于不同类别的概率,并选择概率最高的类别作为分类结果。
5) DT
DT是一种常见的机器学习算法,常用于解决分类和回归问题[8]。它基于树状结构模型,对数据进行特征选择和数据切分,最终完成分类或回归预测。算法关键在于特征选择和特征最佳分割点,根据不同的分裂标准分为三种类型:ID3、C4.5以及CART。在心血管疾病预测中,使用的是决策树分类方法。
6) RF
RF是Bagging中的一种典型算法,常用于解决分类和回归问题[9]。它基于决策树的集成方法,通过组合多个决策树进行预测,从而提高预测的准确性和稳定性。对于分类问题,每棵决策树都会对输入样本进行预测,采用投票机制来确定最终预测结果,即预测结果是得票最多的类别。RF可以处理大量的特征和样本,具有良好的泛化能力,对缺失数据和噪声具有鲁棒性,此外,它还能估计特征的重要性,以便进行特征选择和可视化分析。
2.3.2. 组合机器学习
1) 串行模型
构建串行组合模型(Serial Model)的思路是,首先用训练数据集构建一个基础的分类模型,再利用该模型对所有样本点进行分类预测,并将这些分类结果作为下一个模型的输入变量,构建一个全新的模型。与第一个分类模型相比,第二个分类模型增加了一个分类变量,其值由第一个模型的预测结果决定。串行组合模型能够整合多种机器学习算法的优势,但同时也会带来一些问题。例如,在顺序训练模型的过程中,如果前一个基础模型出现错误,那么这个错误就会被传递到后续的模型中,最终影响整个组合模型的预测结果。因此,每一个模型的选择都至关重要,它直接影响了最终模型的预测准确性和应用稳定性。串行组合模型的建模流程图如图3所示。
Figure 3. Flowchart of building a serial model
图3. 构建串行模型流程图
2) 并行模型
与串行组合模型不同,并行组合模型(Parallel Model)中每个单一模型的训练过程中保持相对独立,输出结果间互不影响。该模型的预测结果实质上是每个单一模型预测概率值的加权平均值,这意味着每个模型可以同时进行学习,随后将各自的预测结果传送到一个集成器中进行融合,最终形成一个并行的预测模型。并行组合模型的建模流程图如图4所示。
2.3.3. 网格搜索调参
网格搜索是一种广泛用于机器学习模型的超参数调优技术,旨在寻找模型最优的超参数配置。超参数是在模型训练前需要设定的参数,例如学习率、正则化参数以及决策树的深度等。通过这种方法,系统会穷举所有预定义的参数组合,以确定最佳的超参数设置。具体而言,网格搜索首先定义每个超参数的一系列候选值,并构建一个参数网格,然后,它遍历每个可能的参数组合,运用交叉验证或其他评估方法对模型进行训练和测试,以优化模型性能。
Figure 4. Flowchart of building a parallel model
图4. 构建并行模型流程图
2.3.4. 评价指标
使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)以及受试者工作特征曲线下面积(Area Under the Curve, AUC)等指标对上述模型进行评估。
3. 结果
3.1. 单一模型
使用上述六种基础模型对心血管疾病数据集进行预测,各模型ROC曲线和AUC值如图5所示,具体结果如表4所示。
Figure 5. ROC curve
图5. ROC曲线图
Table 4. Performance results of each model
表4. 各模型性能结果
评价指标 |
LR |
KNN |
DT |
RF |
SVM |
NBC |
AUC |
0.7916 |
0.7295 |
0.7149 |
0.7359 |
0.7343 |
0.7163 |
Accuracy |
0.7291 |
0.7300 |
0.7161 |
0.7365 |
0.7351 |
0.7174 |
Precision |
0.7579 |
0.6846 |
0.6180 |
0.6822 |
0.6700 |
0.6287 |
Recall |
0.6632 |
0.7474 |
0.7622 |
0.7598 |
0.7644 |
0.7578 |
F1 Score |
0.7074 |
0.7147 |
0.6826 |
0.7189 |
0.7141 |
0.6872 |
从图5和表4中可以看出,六种模型对心血管疾病的预测效果都比较好,在AUC值的比较中,LR的AUC值最高,比DT模型高出近8%;在Accuracy的比较中,RF的Accuracy最高,LR和RF的Accuracy相差不大,两者之间的差距只有0.74%;在Precision的比较中,LR的Precision最高,比其余模型高10%左右;作为疾病预测模型,通常更关注模型的召回率,因为更关注有多少患者能被识别出来,比较几个模型的召回率发现,SVM的召回率最高。
3.2. 组合模型
3.2.1. 串行模型
因在六种基础模型中,模型LR的AUC值最高,因此串行组合模型中使用的基础模型为决策树、随机森林、支持向量机以及朴素贝叶斯,分别利用上述基础对所有样本进行预测,将预测结果作为输入变量加入到模型LR中。各串行组合模型的效果如表5所示,在四个串行组合模型中,RF + LR模型的性能最好,在所有五个评价指标中都取值最高。具体来说,该模型的AUC值比其他组合模型高出近4%,准确率、精确率、召回率以及F1得分均比其他组合模型高出约10%。
Table 5. Performance results of various serial models
表5. 各串行模型性能结果
评价指标 |
DT + LR |
RF + LR |
SVM + LR |
NBC + LR |
AUC |
0.7930 |
0.8313 |
0.7937 |
0.7914 |
Accuracy |
0.7296 |
0.8101 |
0.7371 |
0.7272 |
Precision |
0.7580 |
0.8485 |
0.7625 |
0.7627 |
Recall |
0.6648 |
0.7504 |
0.6792 |
0.6499 |
F1 Score |
0.7083 |
0.7982 |
0.7184 |
0.7081 |
3.2.2. 并行模型
本研究构建的并行组合模型的预测概率是通过对模型决策树、随机森林、支持向量机以及普通贝叶斯与逻辑回归的输出概率进行不同权重的加权得到,测试样本的所属类别根据模型的输出概率判断得到,具体而言,如果输出概率小于0.5,则表示当前样本未患病,反之则表示当前样本患病。各并行组合模型的最佳权重组合如表6所示。
Table 6. Performance results of parallel model for each optimal weight combination
表6. 各最佳权重组合的并行模型性能结果
评价指标 |
0.2*DT + 0.8*LR |
0.4*RF + 0.6*LR |
0.2*SVM + 0.8*LR |
0.3*NBC + 0.7*LR |
AUC |
0.7913 |
0.7913 |
0.7916 |
0.7913 |
Accuracy |
0.7285 |
0.7348 |
0.7012 |
0.7261 |
Precision |
0.7614 |
0.7578 |
0.6549 |
0.7622 |
Recall |
0.6558 |
0.6806 |
0.8347 |
0.6473 |
F1 Score |
0.7047 |
0.7171 |
0.7340 |
0.7000 |
由表6可以发现,四种并行组合模型在预测心血管疾病方面都有较好的效果,性能差别不大。但单从召回率来看,组合模型SVM + LR的召回率最高,比其他模型高出近20%,说明该模型与其他模型相比能更好地识别患者。
3.3. 结果比较
由上述的结果可知,串行模型中的RF + LR和并行模型中的SVM + LR是上述两种组合模型中最有效的,将它们与应用于它们的基础模型进行比较,模型效果如表7所示。
Table 7. Performance comparison of basic model and combined model
表7. 基础模型与组合模型性能比较
评价指标 |
LR |
RF |
SVM |
Serial Model |
Parallel Model |
AUC |
0.7916 |
0.7359 |
0.7343 |
0.8313 |
0.7916 |
Accuracy |
0.7291 |
0.7365 |
0.7351 |
0.8101 |
0.7012 |
Precision |
0.7579 |
0.6822 |
0.6700 |
0.8485 |
0.6549 |
Recall |
0.6632 |
0.7598 |
0.7644 |
0.7504 |
0.8347 |
F1 Score |
0.7074 |
0.7189 |
0.7141 |
0.7982 |
0.7340 |
由上表可知,串行组合模型的性能最佳。具体而言,在基础模型中,LR在测试集上的表现优于RF和SVM,但三个模型之间的预测准确率差异并不显著。与三种基础模型相比,两种组合模型的预测性能都有明显的提高,其中串行组合模型的优势更为明显,其AUC值比基础模型高出约10%,比其他单一模型高出约12%。在组合模型中,串行组合模型的预测准确率比并行组合模型高出约11%,预测精确率高出约20%,AUC值高出约4%。
因此,在预测心血管疾病的问题上,使用串行组合模型得到的预测精度优于只使用单一模型和并行组合模型得到的预测精度,并且,使用随机森林和Logistic回归模型构建的串行模型的预测精度要优于其他的组合模型。因此,当单一模型的分类效果达到上限时,可以通过组合模型来提高模型的泛化能力。
4. 讨论
本研究利用Kaggle数据分析在线平台上的心血管疾病的临床诊疗数据,首先构建了六种机器学习分类模型,对比分析了各个模型在心血管疾病预测问题上的性能表现。再进一步尝试建立基于Logistic回归模型与其他五种模型的串行和并行的两种组合机器学习模型,以提升对心血管疾病的患病情况的预测准确性。
本研究主要基于机器学习算法和数据分析技术展开,首先对六种传统的单一模型在心血管疾病预测上的效果进行了考察。结果显示,Logistic回归模型的预测效能最好,随机森林和支持向量机也呈现出了较好的效能。具体地,Logistic回归模型的AUC值最高,比决策树模型高出近8个百分点,同时,在准确率方面,Logistic回归也展现出较高的水平,而在精确率这一关键指标上,Logistic回归更是以约10个百分点的优势,明显超越了其他五个分类模型。之后将逻辑回归模型与其余五种模型分别通过串行组合和并行组合的方式构建出新的模型,以此来提升模型预测的准确性和应用的稳定性,结合各项评价指标的结果显示,无论是串行组合模型还是并行组合模型对心血管疾病的患病情况的预测效果都要优于单一模型。在所有的模型中,基于随机森林和逻辑回归的串行组合模型的综合性能最优,具体地,该模型的AUC值比Logistic回归模型高出约4个百分点,相较于随机森林、K最近邻以及支持向量机模型,其优势更为明显,高出约10个百分点,而与决策树和朴素贝叶斯模型相比,其领先幅度更是达到了约12个百分点。此外,与并行组合模型相比,该串行组合模型在AUC值上高出约4个百分点,预测准确率提升了约11个百分点,而预测精确率则提高了约20个百分点。这些数据充分展现了该串行组合模型在心血管疾病预测上的卓越性能。性能的显著提升首先是因为这两种模型在处理数据时具有互补性,能够从不同角度捕捉数据的特征,Logistic回归是一种线性模型,擅长处理线性可分离的数据,而随机森林能够很好地处理非线性关系,两者结合可以更好地拟合数据的真实分布。其次,Logistic回归的正则化能力和随机森林的集成学习效应都降低了过拟合的风险,增强了模型的泛化能力。最后,随机森林的加入提高了模型的复杂性,从而提升了处理复杂数据模式的能力,增加了模型的准确性。
在利用机器学习算法对心血管疾病进行预测的研究领域上,传统单一模型的研究已经取得了一定的成果,如有学者使用该数据集基于Logistic回归的方法进行预测,获得了0.7258的准确率[10],有学者基于支持向量机的方法对该数据集进行预测,获得了0.726的准确率[11],还有学者基于CatBoost的方法对该数据集进行预测,取得了0.8011的AUC [12]。然而,组合模型的构成更为灵活,它能够将各个基础模型的优势有效地融合在一起。由于在模型的选择和组合方式上存在多种可能性,因此这种方法在心血管疾病预测问题上是有必要且值得研究的,正如本研究所得到的结果,组合模型能够更精确地预测患者的患病情况。此外,该模型还能够识别出对心血管疾病具有显著影响的因素,从而为心血管疾病的治疗提供有力的依据。医生也可以结合机器学习算法的预测结果和自身的临床经验,做出更为准确的判断,从而提高诊断的可信度并降低误诊率。
基金项目
福建理工大学科研启动基金(GY-S24002)。