《基于机器学习方法的糖尿病预测分析》19000字_第1页
《基于机器学习方法的糖尿病预测分析》19000字_第2页
《基于机器学习方法的糖尿病预测分析》19000字_第3页
《基于机器学习方法的糖尿病预测分析》19000字_第4页
《基于机器学习方法的糖尿病预测分析》19000字_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[9]。这个算法具有更快的运行速度和更高的精准度,在许多数据挖掘竞赛中被排名前列的参赛选手使用。 XGBoost是基于决策树的集成学习(ensemblelearning)算法,由梯度决策提升树(GBDT)发展而来。XGBoost的思想与GBDT类似,是通过特征分裂生成多棵树,每个样本在每棵树中都被分配到一个有分数的叶子结点,将样本在每棵树中叶子结点对应的分数加起来就是对该样本的预测值。用数学式表示,对于一个样本xi y^i=Θxi=k=1N其中N表示树的数量,Obj(·)为目标函数,fk( 给定一个有n个样本的m维数据集在XGBoost中,目标函数被定义为损失函数和正则项之和,即 Obj(Θ)=L(Θ)+t=1NΩ(损失函数L(·)是用来评价训练集上预测值和真实值的误差的函数,表达式为 L(Θ)=i=1nl(yi,yl(yi,y^i)反映对于样本x正则项Ω(·) Ω(ft)=γT+12λ||ω||2其中γ和λ为第t棵树中的惩罚系数,T为第t棵树的叶子结点数,||ω||2为该树的叶子结点 在树提升(treeboosting)模型中,例如欧氏距离、梯度下降等传统优化方法并不适用,XGBoost使用前向分布算法优化目标函数。设y^ y^i(t)=y^i(t−1)将式(2.32)代入(2.30)得第t次迭代(第t棵树)后 Obj(t)=i=1nl其中C为常数。XGBoost使用二阶泰勒展开式(式(2.36)),这是XGBoost的特色之一。 f(x+Δx)≃f(x)+f'(x)Δ定义gi=∂y^ Obj(t)≃i=1因为对于第t次迭代来说l(yi,y^ Objt=i=1 =i=1 =j=1T[(i∈为使Lt最小,我们需要求其极值。对Lt求ωj ωj=−i∈Ijgii∈Ij当ωj满足(2.37)时Objt取最小值。将式(2.39)代入式(2.38),并定义 Obj(t)=−12j=1TGj 决策树在生成时使用ID3、Gini指数等指标选择最佳分裂特征点,XGBoost也会在生成树时选择最佳分裂特征点生成树,但并非用如上指标,而是使用Gain值,其中Gain值定义为分裂后该树目标函数的减少量,Gain值越大,目标函数减少越多,说明该树越好。定义GL2HL+λ和GR2HR+λ分别为分裂后左右子树的目标函数的Σ部分的值,则分裂前子树目标函数的 Gain=12[GL2 确定最佳分裂点的指标已经给出,现在需要查找分裂点的算法。精确贪心算法REF_Ref71579343\r\h[10]和近似算法REF_Ref71579343\r\h[10]和稀疏感知分裂算法REF_Ref71579343\r\h[10]。 精确贪心算法(exactgreedyalthogrim)的思想就是对每个特征遍历当前结点的所有样本计算Gain值,从而得出Gain最大值。Gain取最大值时的特征就是最佳分裂特征点。算法1:精确贪心算法输入:当前结点的样本集I,数据集维数(特征数)d过程: gain←0,G← fork=1tod: G forjin按xjk升序的I G GR←G−G ifgain<1 gain← split←输出:gain值最大的分裂点split 精确贪心算法枚举所有可能的分裂点,故理论上使用精确贪心算法生成的树拥有着最好的指标。但当数据多到无法完全放入内存时,精确贪心算法就无法做到一一枚举了,同时还会消耗非常多的时间。 近似算法(approximatealthogrim)是解决该问题的一种算法,是对精确贪心算法的一种近似,在全局计算(即建立一整棵树前全部计算好)和局部计算(在需要分裂结点时进行计算)时都适用。近似算法中,对于每个特征k,对其特征值按百分位数选出l个候选切分点,则可分成l+1段,这些段被称为桶(buckets)。选出切分点后,每个样本都可以根据其在特征k上的取值被划分进某一个桶。先计算好每个桶内所有样本的G和H并将其用于后续的计算,在计算分裂后的左右子树的G、H值时累加的不是一个样本的g、ℎ,而是一个桶的G、H则精确贪心算法的内层for循环的循环次数可由样本集I内样本数减少至算法2:近似算法输入:当前结点的样本集I,数据集维数(特征数)d过程: gain←0,G← fork=1tod: G 按百分位数选出分位点l个分位点S G H forv=1tol: G G ifgain<1 gain← split←输出:gain值最大的分裂点split 但在实际应用中常有输入数据稀疏的情况,造成这一情况的原因主要有3个。第一个原因是数据集中存在缺失值,第二个原因是在数据集中有较多值为0的数据项,第三个原因是数据可能被进行独热编码。XGBoost中使用稀疏感知分裂发现算法(sparsity-awaresplitfinding)REF_Ref71579343\r\h解决数据稀疏导致的计算复杂问题。 稀疏感知分裂算法对缺失值的处理是选择能使整棵树Gain值最大的方案。下列伪代码描述的算法是对精确贪心算法进行修改后适用于稀疏数据的算法,对近似算法进行类似修改同样也是可以的。算法3:稀疏感知分裂算法输入:当前结点的样本集I,数据集维数(特征数)d Ik过程: gain←0,G← fork=1tod: //枚举缺失值放在右子树 G forjin按xjk升序的I G G ifgain<1 gain← //枚举缺失值放在左子树 G forjin按xjk升序的I G G ifgain<1 gain←输出:最大gain值下的分裂点和分裂方向第3章特征工程特征工程本质是一项工程,通过分析、归纳和总结去除原始数据中的多余和不正常的部分,选取原始数据中重要的特征,将经过特征工程后的数据输入算法或模型,设计更高效的特征以表现预测任务与模型的关系。3.1缺失值处理 对于真实的数据集,我们可能因为从机器的错误到人类的失误或其他客观原因导致部分数据的丢失,造成缺失值的发生。处理缺失值的方法对于实验结果具有较大影响。对于缺失值,首先分析缺失值对应的特征对研究问题是否有影响,如果缺失值对应的特征是对研究问题没有影响的特征则可以直接将其删除。同时,如果一个特征的缺失值过多,可以考虑删除该特征值。 如果缺失值对应的特征对于研究问题有价值,且缺失值所占比例并非过高,可以根据特征的类型进行处理。如果特征属于无序型离散变量,则可以采用one-hot编码将此特征编码为多个无序型离散变量。无序型离散变量是指取值非连续且变量值在数学意义上无大小之分的变量,例如国家这一特征的取值可为中国、美国、英国等等,而这些取值并无数学意义上的大小之分,故国家这一特征属于无序型离散变量。如果特征不属于无序型离散变量可以使用均值填充法、中位值填充法、众数填充法、KNN(K-NearestNeighbor,K近邻)填充法等方法进行填充。 one-hot编码,又称独热编码,是一种处理无序离散型变量的编码方式,采用N位状态寄存器对N个状态进行编码,且值有一位有效(为1),其他位皆无效(为0)。对于基于数学原理的机器学习算法,“中国”、“美国”这样的取值是没有意义的,需要将其数字化。以表2-1数据集为例,数据集中有一sex字段,取值为”male”、”female”和缺失值,则该字段共有3种值,可将其使用one-hot编码为sex_male、sex_female、sex_null三个字段。编码后”male”对应为sex_male有效,对应编码为[100];”female”对应sex_female有效,对应编码为[010];缺失值对应sex_null值有效,对应编码为[001]。编码后的数据集如表2-2。表3-1未进行one-hot编码的数据集sexsample_1malesample_2femalesample_3表3-2one-hot编码后的的数据集sex_malesex_femalesex_nullsample_1100sample_2010sample_3001 均值填充法是指对缺失值对应的特征,计算整个数据集中该特征除缺失值以外的所有值的平均值,用平均值填充该特征的缺失值。同理,中位数填充法及众数填充法是使用缺失值对应的特征除缺失值以外的所有值的中位数或众数填充。 KNN填充法是使用基于KNN算法的一种填补缺失值的算法。KNN填充法的思想是在数据集中找到“最像”缺失数据点的k个样本,将这k个样本称为缺失数据点的k最近邻点,每个样本的缺失值使用其k近邻点的平均值进行插补。寻找“最像”的点,即寻找距离最近的点。最常被使用的距离是欧氏距离。设存在两点x(x1,x2,…,xn)和y(y1,y2,…yn),则定义点x和y的欧氏距离d(x,y)为:d(x,y)=weigℎt∗(x1−其中weight是总坐标(特征)数与现有坐标(特征)数的比值,即 weigℎt=总坐标数现有坐标数=总坐标数总坐标数−缺失坐标数 设存在点A(0,0,0,1)、B(3,NA,0,NA)、C(1,2,3,4),则点A与B的欧氏距离d(A,B)和B与C的欧氏距离为d(A,B)= d(B,C)=计算得出A为B的1最近邻点,A和C为B的2近邻点。若k=1则用A点在点B缺失值的坐标上的值填充B,即填充后的值为B(3,0,0,1);若k=2则使用点A和点C在点B缺失值的坐标上的值的平均值,即填充后的值为B(3,1,0,2.5)。3.2异常值处理 异常值是指存在于数据集中的不符合常理或不正常、不符合数据规律的值。如密度为0kg/m³,脉搏为-10等都属于异常值。识别异常值的方法有如下几种: (1)简单识别:例如血压为0这类不符合常理或规则的整数,可以直接被判定为是异常值。 (2)3∂原则:将距离平均值3∂的值,即距离平均值3倍标准差的值判定为异常值。 (3)Z-score:假定数据符合高斯分布,设置一个阈值Zthresh,设xi为数据集中某样本在某特征的取值,对xi进行Z-score归一化,即: zi=xi−μδ 其中μ为所以样本在该特征上的平均值,δ为标准差。若|zi|>Zthresh,则将xi判定为异常值。对于异常值,处理方式有三种:设为缺失值,填补或不做处理。其中填补方法同缺失值的处理方法。3.3特征筛选特征筛选的方法包括残差分析、IV值分析、ANOVA分析等。残差分析是通过计算数据分箱内正样本的比例与整个数据集中正样本的比例之差(如式3.4),分析特征对样本标签的影响重要性。 residual=PositiveiTotali−在式3.4中,Positivei, IV全称InformationValue,是信息价值、信息量的意思。IV值分析的基本思路是用IV衡量特征的预测能力。假设在一个数据集中有两个标签,对于一个待预测的样本,需要一定的信息量判断该样本属于哪个分类,而这个信息量由各个特征提供。如果一个特征提供的信息越多,其信息价值越大,则该特征的IV值越大,越应该被选择入模。 IV值的计算基于WOE(WeightofEvidence),在数据分箱后,第i组的WOE和IV值计算公式如下: WOEi=ln(NegativeiNegative IVi=(Negativei 通常IV值大于0.2的特征代表该特征对样本分类提供了较多信息,而小于0.005的特征则提供较少的信息。第4章数据处理、模型建立和结果分析 本文使用UCI机器学习数据库中的早期糖尿病风险预测数据集、Kaggle中的皮马印第安人糖尿病数据集和来自天池GDM数据集共三个数据集。本章分别对三个数据的数据处理、模型建立和结果分析进行描述。 对不同的数据集和模型的构建,我们使用不同的数据预处理和训练集测试集方案。但在所有的模型构建中,我们都使用网格搜索调参法根据F1值进行调参,并使用正确率、精确率、召回率和F1值作为评价指标。4.1评价指标计算公式 如上文所述,本文使用正确率(accuracy)、精确率(precision)、召回率(recall)和F1值作为评价指标。 为方便阐述这四个指标的计算过程,此处引入混淆矩阵(confusionmatrix)。设数据集具有n个分类,则该数据集的混淆矩阵是一个n维方阵。如本文使用的三个数据集皆为二分类数据集,则其混淆矩阵为2*2的矩阵。混淆矩阵每一行对应真实值不同类别的样本数量,每一列对应预测值不同类别的样本数量。本文三个数据集的混淆矩阵为:表4-1混淆矩阵预测PositiveNegative真实PositiveTPFNNegativeFPTN其中TP、FP、FN、TN分别代表真阳性、假阳性、真阴性、假阴性的样本数量。则正确率是指预测结果与真实值相同的数量占所有预测样本数量的比例,精确率是指真阳性样本数量占真假阳性样本数量之和的比例,召回率是指真阳性占所有阳性的比例,F1值则通过精确率和召回率计算得出。四个评价指标计算公式如下: accuracy=TP+TNTP+TN+FP+FN (4 precision=TPTP+FP (4 recall=TPTP+FN (4 F1=2∗precision∗recallprecision+recall (44.2早期糖尿病风险预测数据集的相关工作 早期糖尿病风险预测数据集是在得到医生的批准后,对孟加拉国锡尔赫特糖尿病医院的患者使用问卷调查的方式进行收集的。对该数据集的模型构建是一个二分类问题。该数据集具有520个样本,每个样本具有16个变量(特征)和1个标签,且没有缺失值。数据集部分样本如下图图4-1早期糖尿病风险预测数据集部分样本该数据集的变量(特征)描述如下表:表4-2早期糖尿病风险预测数据集变量描述变量名变量类型取值/取值范围Age整数型16-90Gender离散型Male/FemalePolyuria离散型Yes/NoPolydipsia离散型Yes/Nosuddenweightloss离散型Yes/Noweakness离散型Yes/NoPolyphagia离散型Yes/NoGenitalthrush离散型Yes/Novisualblurring离散型Yes/NoItching离散型Yes/NoIrritability离散型Yes/Nodelayedhealing离散型Yes/Nopartialparesis离散型Yes/Nomusclestiffness离散型Yes/NoAlopecia离散型Yes/NoObesity离散型Yes/No 对该数据集进行基本统计,情况如下:表4-3早期糖尿病风险预测数据集定性变量统计变量名取值百分比GenderMaleFemale63.1%36.9%PolyuriaYesNo49.6%50.4%PolydipsiaYesNo44.8%55.2%suddenweightlossYesNo58.6%41.3%weaknessYesNo58.7%41.3%PolyphagiaYesNo45.6%54.4%GenitalthrushYesNo22.3%77.7%visualblurringYesNo44.8%55.2%ItchingYesNo51.3%48.7%IrritabilityYesNo24.2%75.8%delayedhealingYesNo54.0%46.0%partialparesisYesNo43.0%57.0%musclestiffnessYesNo37.5%62.5%AlopeciaYesNo34.4%65.6%ObesityYesNo16.9%83.1%ClassPositiveNegative61.5%38.5% 对数据集中的样本按年龄分为30岁以下、31-40岁、41-50岁,51-60岁,61-70岁和70岁以上共6组,每一组分别有45、123、145、127、66、14人,每一组的糖尿病患者占比分别为33.3%、68.3%、60.0%、61.4%、74%和50%。直观上,大于30岁的人拥有者更高的糖尿病患病率。 由表4-1可知,该数据集的变量出Age外全部为取值有2种状态的离散型变量,非常适合使用one-hot编码。于是对各离散型变量进行编码,Yes对应1,No对应0;对标签Class进行编码,Positive对应1,Negative对应0。编码后,对Age使用式(4.5)进行z-score标准化,其中μ和δ分别为数据集中Age的平均值和标准差。 zi=xi−μδ 对于该数据集,我们采用了十折交叉验证的方法,即将数据集平均分成10份,每次取其中9份作为训练集,1份作为测试集,重复10次将训练和测试步骤使每一份数据都充当一次测试集,选用准确率等评定指标,其最终结果为10次测试结果的平均值,如图4-2所示。图4-210折交叉验证步骤 对于该数据集,本文首先构建BP神经网络模型。因为该数据集为二分类问题,BP神经网络使用二分类交叉熵(binarycrossentropy)作为损失函数,每层隐含层的激活函数选择sigmoid函数。二分类交叉熵的表达式如下。 L=1Ni−[yi⋅log( 使用网格搜索调参法,固定训练轮数为400,得到下表:表4-4早期糖尿病风险预测数据集神经网络模型参数初步筛选隐层层数隐层神经元数学习率F1值1100.0050.861641100.010.770041200.0050.877831200.010.775402100.0050.901562100.010.777732200.0050.890862200.010.781683100.0050.834023100.010.784183200.0050.887243200.010.82339经过初步尝试筛选出表现较好的三组参数:2层、10神经元、0.005学习率;2层、20神经元、0.005学习率;3层、20神经元、0.005学习率。对其在隐层神经元个数上进行更多的尝试,得表4-5早期糖尿病风险预测数据集神经网络模型进一步参数筛选隐层层数隐层神经元数学习率F1值2300.0050.903942400.0050.891263400.0050.941683600.0050.907503800.0050.89852最终选用3层隐层,每层隐层40个神经元,学习率设置为0.005,进行5次10折交叉验证,对每次的结果取平均值最终得到评价指标:表4-6早期糖尿病风险预测数据集神经网络模型评价指标正确率精确率召回率F1值0.902560.917760.930790.92039 第二个构建的模型是支持向量机模型。由于支持向量机是使预测的结果尽量满足ωTx+b∗yi≥1,数据集的标签为0时显然不满足,故将值为Negative的数据项修改为-1表4-7早期糖尿病风险预测数据集SVM模型不同核的评价指标核函数f1值线性核0.72056高斯核0.82049拉普拉斯和0.83716其中高斯核与拉普拉斯核的F1值表现较好且较为接近,使用该两个核函数分别对sigma和C进行调参,得:表4-8早期糖尿病风险预测数据集SVM模型sigma和C调参结果核函数sigmaCF1值高斯核1010.82049高斯核5010.80911高斯核10010.80821高斯核10100.80402拉普拉斯核1010.83716拉普拉斯核5010.81948拉普拉斯核10010.81744拉普拉斯核10100.81111其中使用拉普拉斯核、sigma=10、C=1时的表现最好,使用这组参数再进行5次10折交叉验证,对每次的结果取平均值最终得到评价指标:表4-9早期糖尿病风险预测数据集SVM模型评价指标正确率精确率召回率F1值0.805771.00.717840.83032 对该数据集最后使用的是XGBoost模型。对该数据集的预测任务是一个二分类问题,是由预测出的概率进行归类,因此在建树时设置叶子结点的初始分数为0.5,且在预测类别时需要将一棵树叶子结点的输出分数使用sigmoid函数进行转换。因为在编写代码过程中涉及损失函数的部分都可被包含一阶梯度和二阶梯度的表达式替代,此模型直接令一阶梯度为预测的概率与真实值的误差。因为概率是由sigmoid函数转换而来,所以模型中的二阶梯度就是对sigmoid函数求导。固定叶结点权重的L2正则系数为1,对建树个数、树深度和学习率进行尝试,得到如下结果:表4-10早期糖尿病风险预测数据集XGBoost模型各组参数得出的F1值树个数树深度学习率F1值230.40.92287530.40.92111560.30.94331560.40.929491030.40.950631060.40.947671060.50.957652060.40.949692060.50.954562060.60.94973由表可知,树的个数和树深度在一定范围内增加对模型表现有较为明显的提升。但当树的个数过多、树过深时,对模型的提升逐渐减少甚至降低表现,同时回成倍地增加计算时间,资源消耗大且性价比不高。因此选择建10棵树、树深度为6、学习率为0.5,计算得最终结果如下表:表4-11早期糖尿病风险预测数据集XGBoost模型评价指标正确率精确率召回率F1值0.963460.941480.984270.95765 综上,在早期糖尿病风险预测数据集中,三种模型的最佳评价指标如下表:表4-12早期糖尿病风险预测数据集三种模型评价指标正确率精确率召回率F1值BP神经网络0.902560.917760.930790.92039支持向量机0.805771.00.717840.83032XGBoost0.963460.941480.984270.95765综合以上4个指标,XGBoost模型在三种模型中表现最佳。4.3皮马印第安人糖尿病数据集相关工作 皮马印第安人糖尿病数据集(后简称PIDD)来自美国国立糖尿病与消化与肾脏疾病研究所,其中的样本是从较大的数据库中在一些条件约束下筛选出来的,都是21岁以上的皮马印第安人女性。该数据集有768个样本,具有8个变量和1个标签,没有缺失值,存在异常值。在正常情况下,Glucose、BloodPressure、SkinThickness、Insulin、BMI等值应是大于0的数,数据集中部分样本的这些变量存在0值,属于异常值,对这些值进行均值填充,得到处理后的数据集变量描述如下表:表4-13PIDD变量描述变量名变量意义变量类型取值/取值范围Preganancies怀孕次数整数型0-17Glucose口服葡萄糖测试2小时的血浆葡萄糖浓度整数型44-199BloodPressure舒张压整数型24-122SkinThickness三头肌皮肤褶皱厚度整数型7-99Insulin2小时血清胰岛素浓度整数型14-846BMI体重指数浮点型18.2-67.1DiabetesPedigreeFunction糖尿病谱系函数浮点型0.078-2.42Age年龄整数型21-81 该数据集中没有需要编码的数据项。在使用均值填充法处理完异常值后使用6折交叉验证法划分训练集和测试集。6折交叉验证法与前一节介绍的10折交叉验证法相近。对训练集和测试集的非标签部分进行z-score标准化后即用于输入模型,最后使用F1值评价模型。 首先使用的仍然是BP神经网络模型。与前一节的神经网络模型相同,该模型使用二分类交叉熵作为损失函数,每层隐含层的激活函数选择sigmoid函数。通过初步参数筛选得到部分数据下表:表4-14PIDDBP神经网络模型参数初步筛选隐层层数隐层神经元数学习率F1值1100.0050.685931100.010.728801200.0050.687681200.010.714082100.0050.550312100.010.718102200.0050.623892200.010.70143 在初步筛选时,发现在隐层层数和神经元增多时,0.005和0.01的学习率让模型在训练迭代过程中损失函数降低过慢,即学习速度过慢。因此在第二轮调参时放大学习率增加的步长,得到如下表结果表4-15PIDDBP神经网络模型第二轮调参结果隐层层数隐层神经元数学习率F1值2400.050.766702400.10.773162400.20.753682500.050.757972500.10.773682500.20.740372500.20.740373400.050.760553400.10.777883400.20.762633500.050.763313500.10.776403500.20.76221 由表可知隐层层数和隐层神经元数的增加在到达一定程度后对模型的提升帮助有限,而学习率的过度提升会使模型对数据过度学习产生过拟合。因此选用3层隐层、每个隐层40个神经元、0.1学习率这组参数,得到BP神经网络模型在这个数据集中最佳评价指标:表4-16PIDDBP神经网络模型最佳评价指标正确率精确率召回率F1值0.843750.777980.779440.77788 第二个构建的模型是支持向量机模型。对BP神经网络模型中处理过的数据集,将标签为0的数据项修改为-1即可用于支持向量机模型。在固定sigma=10、C=1的条件下分别尝试线性核、高斯核和拉普拉斯核得到下表数据:表4-17PIDDSVM模型不同核的评价指标核函数f1值线性核0.28708高斯核0.73296拉普拉斯和0.72172其中使用线性核的表现较差,说明该数据集并非线性可分,故在后续工作中舍弃线性核。使用高斯核与拉普拉斯核调整sigma和C进行第二轮调参得:表4-18PIDDSVM模型sigma和C调参结果核函数CsigmaF1值高斯核0.1100.72470高斯核1100.73296高斯核10100.71824高斯核1500.73930高斯核11000.73811拉普拉斯核0.1100.73037拉普拉斯核1100.72172拉普拉斯核10100.69681拉普拉斯核0.1500.70962拉普拉斯核0.11000.72013其中使用高斯核、sigma=50、C=1时的表现最好,使用这组参数再进行5次10折交叉验证,对每次的结果取平均值最终得到评价指标:表4-19PIDDSVM模型评价指标正确率精确率召回率F1值0.787100.648660.861540.73944 最后使用的模型是XGBoost模型。在建树时设置叶子结点的初始分数为0.5,预测类别时使用sigmoid函数转换一棵树叶子结点的输出分数。令一阶梯度为预测的概率与真实值的误差,二阶梯度为sigmoid函数的一阶导数,这些设置都与前一节的XGBoost模型相同,固定叶结点权重的L2正则系数为1,对建树个数、树深度和学习率进行尝试,得到如下结果:表4-20PIDDXGBoost模型参数初步筛选树个数树深度学习率F1值230.20.81111230.30.81540230.40.79915530.20.81325530.30.82037530.40.81856560.40.811732060.60.94973由表可知,在一定范围内树的增加会提升模型的表现。而本数据集只有8个变量,树深度设置过多(即选择过多个特征进行分裂)不仅增加时间成本,还会降低模型的表现。因此在第二轮调参过程中树深度被固定为3,在一定范围内尝试增加树的个数、调整学习率。第二轮调参结果如下表:表4-20PIDDXGBoost模型参数初步筛选树个数树深度学习率F1值1030.20.838391030.30.824711530.20.830461530.30.82388因此选择建10棵树、树深度为3、学习率为0.2,计算得最终结果如下表:表4-21PIDDXGBoost模型评价指标正确率精确率召回率F1值0.889320.861110.818050.83839综上得三种模型在皮马印第安人糖尿病数据集上的最佳评价指标:表4-22PIDD三种模型评价指标正确率精确率召回率F1值BP神经网络0.843750.777980.779440.77788支持向量机0.787100.648660.861540.73944XGBoost0.889320.861110.818050.83839由此可见,在该数据集汇中XGBoost效果仍是最好的。4.4天池精准医疗大赛妊娠期糖尿病数据集相关工作 妊娠糖尿病(GDM)是指女性在妊娠后才发生的糖尿病。妊娠糖尿病有很多危害,可能提高胎儿发生先天畸形和多种并发症的几率,而且有可能转换为2型糖尿病。天池精准医疗大赛妊娠期糖尿病数据集(下文简称GDM数据集)由青梧桐公司提供,根据女性孕妇孕前、孕中、孕后体检信息和通过孕期基因检测信息预测受检者是否患有GDM。 该数据集是一个1000样本、维度为83(具有83个特征)的高维度小样本量数据集,基于该数据集的预测任务是二分类问题。该数据集数据类型复杂,既有连续型变量也有离散型变量,还存在着大量的缺失值,是本文研究的三个数据集中最复杂的一个,也更符合目前医疗领域数据质量差、数据量少的现状。 在删除id这个对于预测结果没有影响的变量后,描述数据集的变量如表4-23,其中离散型变量和整数型变量在严格意义上都属于离散型变量,此处离散型变量指的是取值无数学大小意义的低基数离散变量,整数型变量指的是取值具有数学大小意义的变量。表4-23GDM数据集变量描述变量名变量类型取值/取值范围SNP1、SNP2、…、SNP55离散型1、2、3RBP4连续型4.12-62.13年龄整数型17-48孕次整数型1-7产次整数型1-3身高整数型140-178孕前体重整数型36-95BMI分类离散型0、1、2孕前BMI连续型14.98439126-34.62603878收缩压整数型78-170舒张压整数型46-101分娩时连续型52.5-104.5糖筛孕周连续型5.57-36VAR00007连续型1.193922-1.960095wbc连续型3.2-20.69ALT整数型3-455AST整数型11-77Cr连续型35.4-91BUN连续型1.17-8.21CHO连续型2.04-46.49TG连续型0.43-9.08HDLC连续型0.7-32LDLC连续型1-8.31ApoA1连续型0.85-27.8ApoB连续型0.15-214Lpa连续型2.87-2289hsCRP连续型2.87-2289DM家族史离散型1、2、3ACEID离散型1、2、3 GMD数据集包含469个正类样本和531个负类样本,比例接近1:1。统计GDM数据集各特征存在缺失值的样本数量,并将其可视化得到下列结果:图4-3GDM数据集缺失值数量-1图4-4GDM数据集缺失值数量-2图4-5GDM数据集缺失值数量-3图4-6GDM数据集缺失值数量-4图4-7GDM数据集缺失值数量-5 为了更好研究该数据集,本文使用了多种方案处理该数据集,并对每种方案使用不同的算法构建模型。鉴于在前两个数据集中,神经网络模型和XGBoost模型明显好于SVM模型,此数据集的研究舍弃了SVM算法。现按不同思路描述处理方案并展示预测结果。 在本节的研究工作中,神经网络模型借助Keras框架构建,XGBoost模型的构建使用官方XGBoost包。神经网络模型使用Keras内置的随机梯度下降(SGD)优化器,在该优化器中内置有基于训练轮数(epoch)的学习率调整表,并依赖优化器中的衰减系数decay参数基于以下公式调整学习率: LearningRate=LearningRate1+decay∗epocℎ (4其中本文将decay设置为0.01。在前两种思路下的方案中,根据Kolmogorov定理,隐层神经元个数被设置为2*数据集维度+1。因为该数据集的研究是二分类任务,此处设置神经网络模型的损失函数为二分类交叉熵,输出层的激活函数为sigmoid函数。 而本节研究工作中的XGBoost模型也固定了部分参数,gamma设置为0,损失函数使用二分类的逻辑回归,在XGBoost包中对应binary:logistic。 第一种思路是保留所有的特征,不对离散型变量编码,离散型变量的缺失值使用-1填充。在这种思路下,对整数型变量(如身高等)和连续型变量尝试不同的缺失值填充方式,方案1使用均值填充法,方案2使用KNN填充法。 在方案1和方案2中尝试神经网络模型和XGBoost模型,使用网格搜索调参法寻找最优参数。经过调试,得到神经网络模型最优参数为3层隐含层、隐层激活函数为ReLU函数、训练轮数2、初始学习率0.18;XGBoost模型在方案1中最优参数为0.3学习率、建立10棵树、树深度为6,在方案2中最优参数为0.3学习率、建立12棵树、树深度为6。下表为两种模型的最佳F1值。表4-24GDM数据集第一种数据处理思路下的最佳F1值神经网络模型XGBoost模型方案10.708330.70857方案20.717170.69663 第二种思路是保留所有的特征,对离散型变量进行one-hot编码,则离散型变量在编码后不存在缺失值,只需要填充整数型变量和连续型变量。方案3在对离散型变量编码后对“孕次、产次”也进行编码,再对其他的变量使用均值填充;方案4则是对“孕次”、“产次”这两个变量使用众数填充,其他使用均值填充。因为保留所有特征并进行编码将数据集的维度提升了很多,神经网络模型在这个思路下会因为损失函数过大无法学习,所以在这个思路中我们仅使用XGBoost模型。 方案3、4中最优参数分别为:0.3学习率、建立100棵树、树深度为15;0.3学习率、建立1000棵树、树深度为5,最佳F1值如下表:表4-25GDM数据集第二种数据处理思路下的最佳F1值XGBoost模型方案30.69047方案40.71823 第三种思路则是在对离散型变量one-hot编码,对剩余的变量进行填充后使用IV值分析特征并筛选价值较低的变量。本文在计算时对编码后的变量本别分别计算IV值并计算这些变量对应的未编码变量的总IV值,如计算SNP34的总IV值是通过将SNP34_1、SNP34_2、SNP34_3和SNP34_null的IV值取绝对值后相加;对高基数离散变量和连续型变量采用等频分箱的方法将数据分为4组计算出IV值。在计算出各特种的IV值后,剔除了IV值小于0.05的特征(非编码后的变量),留下了26个特征。这样大幅降低了数据集维度,减少了计算难度,也避免了神经网络模型损失函数过大无法训练的问题。下表为部分特征的IV值。表4-26GDM数据集部分特征IV值原特征特征分箱分箱IV值总IV值SNP34SNP34_null0.0078440.34008SNP34_10.139539SNP34_20.182673SNP34_30.010023SNP37SNP37_null0.0407510.333807SNP37_10.0000199SNP37_20.09059SNP37_30.202446TGTG_1-0.042470.137338TG_2-0.02275TG_30.006201TG_40.059023VAR00007VAR00007_1-0.068240.275088VAR00007_2-0.05849VAR00007_3-0.01498VAR00007_40.141708 对处理后的数据集分别使用神经网络模型和XGBoost模型使用网格搜索调参法寻找最优参数,调参结果如下所示:图4-8神经网络模型学习率对预测结果的影响图4-9神经网络模型隐层神经元个数对预测结果的影响图4-10XGBoost模型学习率对预测结果的影响图4-11树的个数对预测结果的影响 神经网络模型在方案5下最优参数为训练2轮、学习率0.14、3层隐层、隐层神经元个数130,最佳F1值为0.71770。XGBoost模型在方案5下最优参数为建立70棵树、树深度为10、学习率为0.16、最佳F1值为0.72131。 综上神经网络模型和XGBoost模型在该数据集下的表现为:表4-26GDM数据集第一种数据处理思路下的最佳F1值神经网络模型XGBoost模型方案10.708330.70857方案20.717170.69663方案3\0.69047方案4\0.71823方案50.717700.72131附录附录第5章结论与展望5.1结论 数据本身决定了机器学习的上限,而优秀的算法和模型能使预测结果更加逼近这一上限

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论