您好, 访客   登录/注册

基于XGBoost的糖尿病风险预测

来源:用户上传      作者:

  【摘 要】糖尿病作为一种常见慢性疾病,目前无法根治,但却能通过科学有效的干预、预防和治疗,来降低发病率和提高患者的生活质量。本文以真实脱敏的用户体检信息数据为基础,使用eXtreme Gradient Boosting (XGBoost)算法以及随机森林模型构建预测模型,以用户血糖含量为目标变量进行预测。结果表明:在现有数据的基础上,该模型可以有效预测糖尿病,为学术界和精准医疗提供有力的技术支撑,相比于传统的方法,精度更高。
  【关键词】高潜用户;XGBoost;模型融合
  中图分类号: R587.1 文献标识码: A 文章编号: 2095-2457(2019)02-0155-002
  0 引言
  截至2010年,全球糖尿病患者已达2.85亿,我国20岁以上成年人糖尿病患病率为9.7%,总数达9240万。糖尿病起病隐匿,早期症状不明显,其慢性并发症严重危害人类健康。近年有关预测糖尿病患病风险的研究较多。传统糖尿病的判定标准为:空腹血糖大于或等于7.0毫摩尔/升,或餐后两小时血糖大于或等于11.1毫摩尔/升,即可确诊[1]。传统的方法是从大量的糖尿病患者中找出可能导致糖尿病的高危因素,这些因素主要与生活习惯有关,然后通过宣传来预防糖尿病,然而这些高危因素很可能提取的并不全面,而且无法预测糖尿病的患病概率。
  为了更好的、更科学的预测糖尿病,本文提出了一种使用XGBoost算法的糖尿病风险预测模型。模型针对用户的体检数据构建预测模型,以血糖含量作为评判标准,最后对模型的结果进行模型融合,计算均方误差(MSE)作为评分标准,据此预测出用户患有糖尿病的概率,以此作为参考。
  1 数据描述
  本文的全部数据来源于阿里提供的数据,包括性别,年龄,体检日期,天门冬氨酸氨基转换酶,丙氨酸氨基转换酶,碱性磷酸酶等共计40项基本数据以及血糖含量。用户体检数据可以大概分为用户信息和用户当时数据,(1)用户信息:性别,年龄,体检时期等,此项所有用户都有,无缺失值;(2)用户当时数据,如天门冬氨酸氨基转换酶等,数据为数值型数据,该数据可能存在缺失值,也可能存在极端值。
  对数据的预处理是非常必要的环节。由于原始数据存在缺失值,我们先要做的就是填补空值,由于平均值会受到极端值的影响,因此可以通过中位数进行填充。由于XGBoost仅适用于处理数值型向量,因此处理训练集和测试集时需要将所有类别型数据转换为数值型数据,独热编码(one-hot)是常用的转换方式[2]。本文数据集中的性别数据需要经one-hot编码后才能进行训练。
  2 XGBoost算法介绍
  XGBoost属于一种迭代决策树算法,并且是在GBDT算法的基础上进行改进,但二者皆属于boosting提升方法。XGBoost不同于GBDT,XGBoost可以支持多线程计算,这是因为特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在每轮迭代时同时对所有特征进行计算,就可以做到并行,因此,实现并行化后在同等条件下比同类算法速度提升1个数量级以上[3]。XGBoost允许特征值为缺失值,此时XGBoost将缺失值分别划入左子树或右子树,计算两者间哪儿个更准确就把缺失值放入哪儿个子树,这能大大减少特征的处理时间。XGBoost内部包含大量的CART回归树,使用残差来提升模型,内部的正则化则可以预防过拟合,从而保证模型的鲁棒性。XGBoost算法支持自定义损失函数,因此非常灵活。下面是该算法的一些重要推导公式:
  3 实验过程与结果
  我们的数据是由阿里提供的数据作为样本。根据所提供的数据,预测用户的血糖含量,以此作为目标变量来判断用户患有糖尿病的可能性。我们尝试不同的参数来确定最有参数,并且还将数据带入随机森林算法中,将其结果与XGBoost算法的结果、随机森林与XGBoost的结果的均值做对比,从而选出最合适的预测模型,以均方误差(MSE)作为評分标准。
  初始参数值设为弱分类器个数为300,特征取样比例0.7,步长0.01,lambda为1,此时随机森林,XGBoost,两者均值的结果分别为1.5223,1.4840,1.4759。然后再取弱分类器个数为400时,三者结果为1.5324,1.4404,1.4665,弱分类器个数为500时,三者结果为1.5237,1.4294,1.4660。经比较取弱分类器个数为400,此时特征取样比例选取0.6,三者结果为1.5182,1.4424,1.4649,特征取样比例选取0.8,三者结果为1.5259,1.4466,1.4709.经比较选取特征取样比例为0.7。最后选择lambda为2时,三者结果为1.5339,1.4355,1.4610。
  由实验结果可以发现,无论何种参数,XGBoost算法总体上都比随机森林的拟合程度要更高。同时考虑到当弱分类器个数为300时,XGBoost算法明显欠拟合,弱分类器个数为500时,XGBoost算法开始过拟合。横向对比特征取样比例,当比例为0.7时,均方误差(MSE)最小。最后当lambda正则化参数设为2时,进一步处理了模型过拟合,从而减小了均方误差。由于随机森林算法引是基于bagging的,因此泛化性较好[4]。而XGBoost算法是基于boosting的,准确度较高。
  模型融合的思想是训练多个模型,然后按照一定的方法集成一个模型[5]。每个单模型都拥有自己的优势,而多模型融合相比于单模型,就可以获得多种单模型的优点,因此会比单模型更准确[6]。而上面的表格已经计算出了不同参数下的随机森林和XGBoost算法的结果。因此我们把随机森林和XGBoost的结果相融合起来,则结果既可以获得较高的精度,也可以有一定的泛化性能,公式如下:
  其中n表示模型的个数,Weight表示该模型权重,P表示模型i的预测概率值。由于血糖值为数值型,因此可以采用简单的平均值作为最后的结果。当然也可以单独设定单个模型的权重P,此处不再赘述。其中使用的XGBoost参数为:弱分类器个数=400,特征取样比例0.7,步长0.01,lambda:2。其中使用的随机森林参数为:弱分类器个数=500,特征取样比例0.7,步长0.01,lambda:1。最终结果均方误差(MSE)为:1.4609。以上分析结果说明,采用XGBoost算法和随机森林作模型融合可以实现预测糖尿病的概率,对于指导行业正常发展有一定的意义。
  4 结论
  本文基于一种XGBoost算法,使用阿里的数据记录,根据用户的信息和体检数据预测血糖值,把结果与随机森林算法的结果取平均作模型融合,并用MSE值进行评估。结果显示此方法得出的结果正确率相对较高,泛化性能很好,对相关行业具有实际的指导意义。
  【参考文献】
  [1]王美子,石岩.基于数据挖掘当代医家治疗糖尿病周围神经病变的组方规律分析[J/OL].中医药临床杂志,2018(12).
  [2]黄骞,郑颖尔,邓钰桥.基于XGBoost节假日路网流量预测研究[J].公路,2018,63(12).
  [3]贾锐军,冉祥来,吴俊霖,戴晨斌,祁志民,陈洁.基于XGBoost算法的机场旅客流量预测[J].民航学报,2018,2(06).
  [4]杭琦,杨敬辉.机器学习随机森林算法的应用现状[J/OL].电子技术与软件工程,2018(24).
  [5]白智远,温从威,杨锦浩,陈智,吕品.一种融合历史均值与提升树的客流量预测模型[J/OL].计算机技术与发展,2019(04).
  [6]王梦芹.基于随机森林的个人信用评价指标分析[D].安徽大学,2018.
转载注明来源:https://www.xzbu.com/8/view-15270833.htm