基于集成学习的风险预测模型研究与应用
2022-04-21张文静郭莹莹
彭 岩,马 铃,张文静,李 晓,郭莹莹
(首都师范大学 管理学院,北京 100056)
0 引 言
随着人工智能的快速发展,机器学习技术广泛应用于疾病的风险预测,预测的模型从简单到复杂,逐步由单一模型发展为集成模型[1]。基于机器学习算法,研究者提出一系列经典的疾病预测模型。Yan Jianzhuo等[2]构建Random Forest模型、张春富等[3]构建XGBoost模型进行糖尿病风险预测,为糖尿病的诊断、筛查提供了科学指导。同时,基于回归分析[4]、神经网络[5]的模型在糖尿病及其并发症的预测中均取得良好的预测精度。但单一的机器学习算法在样本多、指标复杂的疾病数据中,存在泛化差、精度低等弊端。随着大数据、云计算技术的发展,基于集成学习算法,结合患者的多项检查指标来构建疾病风险预测模型,是近年来疾病预防的研究热点。Chen P等[6]构建LogitBoost模型,验证了基于Boosting的集成算法对糖尿病早期筛查具有重要意义。Syna Sreng等[7]、吴健等[8]基于Bagging算法构建糖尿病眼病集成预测模型,为糖尿病眼病的早期筛查提供了有效手段。
基于此,本研究提出一种基于差异性大、性能好的XGBoost、Random Forest算法的集成预测模型,并应用在糖尿病并发视网膜病变的研究,旨在解决单一预测模型精度提升有限、泛化性能较低的问题,为医生临床实践中对类似疾病的风险评估提供有效辅助,从而有效减少严重后果的产生及诊治费用。
1 相关算法描述
1.1 Logistic回归模型
Logistic回归[9]是一种广义线性回归分析模型,按因变量的类型,可分为二分类Logistic回归和多分类Logistic回归。由于因变量只有患病与不患病两种情况,因此采用二分类Logistic回归。该模型可用于寻找发生某种疾病的关联因素、确定不同因素对疾病发生影响的相对重要程度以及预测在不同自变量下发生该病的概率。Cox回归模型[10]引入Logit变换,建立以Logit(P)为因变量拥有p个自变量的Logistic回归模型如式(1)所示
Logit(P)=β0+β1x1+…+βpxp
(1)
1.2 XGBoost模型
XGBoost模型也称为极端梯度提升树模型,由Chen等[11,12]基于GBDT改进而来,是一种通过Boosting思想将基函数与权重进行组合形成的集成学习算法。它将多棵树的预测结合在一起,将每个树的预测分数相加以得到最终分数,算法步骤如下:
步骤1 确立优化目标。
步骤2 二阶泰勒展开和移除常数项操作。
1.3 Random Forest模型
随机森林是树结构分类器组成的集合[13],它可以使用ID3、C4.5、CART等[14]决策树算法作为基本分类器。随机森林基本思想可以概括为:在给定原始样本集和输入向量X的情况下,采用Bootstrap重抽样方法从初始样本集中抽取特定份额的样本,对每个样本建立决策树模型,从而得到不同的分类结果。每个决策树分类器通过对不同分类结果投票来决定最优的分类结果。在分类问题中,Random Forest的组合模型可以表示为式(2)
(2)
1.4 XGB-RF预测模型
模型集成是一种通过增加算法的多样性、减少泛化误差来提高模型效能的有效手段。Random Forest是Bagging型算法,XGBoost是Boosting型算法。Bagging主要关注降低方差,而Boosting主要关注降低偏差。这是两种完全不同的机器学习算法,具有差异性大、性能好等特点。集成学习需针对实际问题设计合适的学习方案,才能得到性能更优的解决策略。本研究受到Stacking融合的启发,基于单一的Random Forest、XGBoost模型,设计一种XGB-RF集成预测模型,并在糖尿病数据集上进行仿真实验,构建过程如图1所示,算法描述如下:
图1 XGB-RF模型构建过程
步骤1 特征集划分。在Pearson 相关系数单因素分析的基础上,利用多因素 Logistic 回归算法提取影响糖尿病并发视网膜病变的显著特征。经特征筛选后,将仅含特征变量的数据整理为特征集,并进行特征集的划分,数据集中75%的数据作为训练集记为Train Data,余下的25%作为测试集记为 Test Data。
步骤2 单一模型训练。使用步骤1中划分的特征集训练XGBoost模型和Random Forest模型,采用网格搜索算法优化模型的参数。
步骤3 单一模型五折交叉验证。对单一模型进行五折交叉验证,每一次交叉验证需对原始训练集(Train Data)进行划分,每次选取4折作为训练集记为train,余下1折为测试集记为test,将得到5个训练后的RF模型,5个XGBoost模型,并在原始测试集(Test Data)上进行预测。因此,每个模型将生成5个针对原始测试集的预测数据,即X-1…X-5,R-1…R-5。此外,在单一模型参数的基础上,搜索集成模型的最优参数。
步骤4 输出预测结果。由于随机森林模型的预测结果优于XGBoost模型,对步骤3中输出的10个预测结果进行加权融合时,XGBoost模型的权重设置为1.7,Random Forest模型的权重设置为2,相乘后取相对平均作为最终预测结果。
2 实验过程
2.1 数据来源
为了验证模型的有效性,本研究基于糖尿病并发视网膜病变数据进行仿真实验。该数据来自国家人口健康科学数据共享服务平台的糖尿病数据集,该数据集包含7499例个案。研究基于Pearson相关系数单因素分析的结果[15],采用多因素Logistic回归模型进行直接关联因素分析,共筛选出11个关联因素,即全血糖化血红蛋白、丙氨酸氨基转移酶、尿素、肌酐、葡萄糖、尿白细胞、尿胆原定性实验、尿红细胞、尿酵母细胞、尿酮体实验、尿浊度。将以上11个因素的数据进行合并,形成集成模型输入的特征集。
2.2 模型评价标准
模型用于预测糖尿病并发视网膜病变的患病情况,针对的是一个二分类问题,因此采用ACC、AUC、Precision这3个指标进行模型的评价。ACC是正确率,反映了样本中获得正确分类的样本占全部分类样本的比例。AUC(area under curve)是ROC(receiver operating characteristic curve)曲线下的面积,一般用于评价一个分类器的性能。Precision为精准率,反映预测为正的样本占所有样本的比重。ACC与Precision的公式如下
(3)
(4)
其中,TP代表将正类预测为正类的样本个数,FN代表将正类预测为负类的样本个数,FP代表将负类预测为正类的样本个数,TN代表将负类预测为负类的样本个数。
2.3 模型调参
算法参数的确定直接决定机器学习模型的预测效能,常用的调参方法有专家经验法以及网格搜索法[16]。GS算法[17],即网格搜索法,是一种通过遍历既定参数组合来优化模型性能的方法,其原理是在一定的范围内,通过对待搜索参数划分成的网格的所有可能取值进行遍历的方式来计算相应的实验结果,最优参数即为最佳实验结果获取的对应参数。
2.4 预测模型的构建
2.4.1 XGBoost模型的构建
XGBoost模型有众多参数,不同参数有不同功能,这些参数设定是否合理,对于模型的好坏有重要影响。基于Python平台建立XGBoost模型,根据前人研究经验,将树的个数(n_estimators)设置在10~1000的区间,采用GS算法,每隔50个单位进行一次参数搜索,并绘制n_estimators与预测准确率的折线图,由图2(a)可知,将n_estimators设置为60时,ACC出现最大值。
在参数调节中,某些参数存在相互影响,需要对其进行联合调参。将树的最大深度(max_depth)设置在3~10的区间,最小叶子节点权重和(min_child_weight)设置在1~6的区间,每隔1个单位进行一次参数搜索,实验结果表明,max_depth设置为4,min_child_weigh设为3时,ACC最高。其次,将最小损失函数下降值(gamma)设置在0~0.5的区间,采用GS算法进行参数搜索,并绘制gamma与预测准确率的折线图,由图2(b)可知,将gamma设置为0.3时,ACC出现最大值。此外,将随机采样比例(subsample)和随机采样的列数的占比(colsample_bytree)设置在0.5~1的区间进行参数搜索,实验结果表明,subsample设置为0.8,colsample_bytree设为0.5时,ACC最高。除此之外,将模型的学习率(learning_rate)设置为0.05。
图2 XGBoost模型参数与ACC变化曲线
2.4.2 Random Forest模型的构建
Random Forest模型基于Python平台进行构建。首先需确定森林中树的数量,即确定树的个数(n_estimators),该参数主要用于降低整体模型的方差。将n_estimators设置在1~500的区间,采用GS算法,每隔10个单位进行一次参数搜索,绘制n_estimators与预测准确率的折线图,由图3(a)可知,将n_estimators设置为291时,ACC出现最大值。criterion即节点划分标准,将criterion设置为“gini”和“entropy”,图3(b)表明gini指数效果更优。
图3 Random Forest参数与ACC变化曲线
将最大特征数(max_features)设置在1~15的区间,每隔1个单位进行一次参数搜索,由图3(c)可知,将max_features设置为3时,ACC出现最大值。将树的最大深度(max_depth)设置在1~20的区间,每隔1个单位进行一次参数搜索,由图3(d)可知,将max_depth设置为16时,ACC出现最大值。max_features和max_depth存在相互影响,需要对其进行联合调参。根据先前实验,将max_features设置在6~15的区间,max_depth设置在12~20的区间,每隔1个单位进行一次参数搜索,实验表明,max_features设置为11,max_depth设为13时,ACC最高。
2.4.3 XGB-RF模型的构建
在XGB-RF模型的构建过程中,将特征集作为输入数据集,基于XGBoost模型和Random Forest模进行XGB-RF模型的训练和预测。为了提高XGB-RF模型的预测效果,在单一模型最优参数的基础上,对XGB-RF模型的参数进行了调整,各参数具体数值见表1。
表1 XGB-RF模型参数
3 对比实验与分析
为了验证XGB-RF模型的有效性,本研究利用国家人口与健康科学数据共享服务平台提供的糖尿病患者数据集进行了仿真实验,并设置了两组对比实验:
(1)采用GS算法优化的XGB-RF模型与使用默认参数的XGB-RF模型的对比;
(2)构建的XGB-RF模型与使用传统XGBoost以及Random Forest单一算法对比。
3.1 模型参数优化对比分析
为验证通过GS算法优化参数的有效性,取10次实验的预测结果的均值,将使用默认参数的XGB-RF模型预测结果与使用GS算法优化参数后的XGB-RF模型的预测结果进行了对比,对比结果见表2。
表2 模型参数优化对比/%
由表2可知,运用GS算法进行参数优化后,XGB-RF模型的ACC、AUC、Precision值均显著提高,表明使用GS算法优化的XGB-RF模型能够更好预测糖尿病并发视网膜病变。
3.2 XGB-RF模型与单一模型对比分析
为了验证XGB-RF集成模型的预测效能,取10次实验的预测结果的均值,将XGB-RF融合模型的预测效果与XGBoost以及Random Forest单一算法进行了对比研究,对比实验结果见表3。
表3 模型结果对比情况/%
在Random Forest模型、XGBoost以及XGB-RF模型的构建中,均将11个特征作为输入变量。表3、图4是各模型预测效果的对比结果。由表3可知,与单一模型相比,XGB-RF模型的ACC增加了2.1%~3%,AUC增加了2.5%~3.1%,Precision增加了6%~7.2%。
图4 模型结果对比
综上所述,就模型的分类预测效能而言,XGB-RF模型具有良好稳定性和较高预测准确性,针对糖尿病并发视网膜病变具有更高的预测精度,弥补了单一模型的弊端。此外,运用GS算法对模型参数进行的优化工作,使得模型预测效能有效提升。
4 结束语
本文构建了一种基于XGBoost模型、Random Forest模型融合的XGB-RF预测模型,提出了一种提高疾病预测准确率的集成学习方法。为了验证所提方法的性能,与单一模型进行了对比实验研究,实验结果表明,与Random Forest模型、XGBoost模型相比,XGB-RF模型在糖尿病并发视网膜病变的预测中具有较高的准确率和分类效能,预测的结果均高于80%,AUC和Precision高于85%,验证了本文方法的可行性。XGB-RF模型还可以用于糖尿病其它并发症的辅助预测与诊断,同时,能够广泛识别和处理其它回归预测和分类问题。