教学课件13.集成机器学习模型+ 财务舞弊预测.pptx
教材配套资源页完整PPT课件教学课件13.集成机器学习模型+ 财务舞弊预测1by 张敏 & 王宇韬第13章集成机器学习模型+ 财务舞弊预测2目 录0113.1 随机森林模型的基本原理和代码实现0203第一讲 随机森林模型的基本原理和代码实现13.2 GBDT算法的原理介绍13.3 XGBoost算法原理0413.4案例实战:基于集成机器学习模型的财务舞弊模型13.1.1 集成模型简介集成学习模型是机器学习非常重要的一部分。集成学习是使用一系列的弱学习器(或称之为基础模型)进行学习,并将各个弱学习器的结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。集成学习模型有两种常见的算法:Bagging算法和Boosting算法。Bagging算法的典型机器学习模型为本章所讲的随机森林模型,而Boosting算法的典型机器学习模型则为下两章会讲到的AdaBoost、GBDT、XGBoost和LightGBM模型。1.Bagging算法Bagging的想法是采用类似于“民主投票”的方式,即每一个基础模型都有一票,最终结果通过所有基础模型投票,少数服从多数的原则产生预测结果。其原理如下图13-1所示:从原始训练数据中(假设共有10000条数据),随机有放回地抽取10000次数据构成一个新的数据集(因为是随机有放回抽样,所以可能出现某一条数据多次被抽中,也有可能某一条数据一次也没有被抽中),每次使用一个训练样本训练一个基础模型。这样进行有放回的随机抽取n次后,训练结束时我们就能获得n个由不同的数据集训练的基础模型,也称之为n个弱学习器,根据这n个弱学习器的结果,我们可以获得一个更加准确合理的结果。具体来说,在分类问题中,是利用n个基础模型投票方式获取最终结果;而在回归问题中,则是取n个基础模型的平均值作为输出。2.Boosting算法Boosting算法的本质是将弱学习器提升为强学习器,它和Bagging的区别在于,Bagging对待所有的基础模型一视同仁。而Boosting则做到了对于基础模型的“区别对待”,通俗来讲,Boosting算法注重“培养精英”和“重视错误”。在训练过程中,“培养精英”,即每一轮对于预测结果较为准确的基础模型,会给予它一个较大的权重,表现不好的基础模型则会降低它的权重。这样在最终预测时,“优秀模型”的权重是大的,相当于它可以投出多票,而“一般模型”只能在投票时投出一票或不能投票。同时,“重视错误”,即在每一轮训练后改变训练数据的权值或概率分布,通过提高那些在前一轮被基础模型预测错误样例的权值,减小前一轮预测正确样例的权值,来使得分类器对误分的数据有较高的重视程度,从而提升模型的整体效果。其原理如图所示:因为本章主要讲解基于Bagging算法的随机森林模型,这里Boosting算法只是讲解了其核心知识点,在下一章讲解AdaBoost模型的时候会对Boosting算法有更加详细的介绍。13.1.2 随机森林模型的基本原理随机森林(Random Forest)是一种经典的Bagging模型,其弱学习器为决策树模型。如下图13-3所示,随机森林模型会在原始数据集中随机抽样,构成n个不同的样本数据集,然后根据这些数据集搭建n个不同的决策树模型,最后根据这些决策树模型的平均值(针对回归模型)或者投票(针对分类模型)情况来获取最终结果。为了保证模型的泛化能力(或者说通用能力),随机森林在建立每棵树的时候,往往会遵循两个基本原则:数据随机和特征随机。1.数据随机:随机地从所有数据当中有放回地抽取数据作为其中一棵决策树的数据进行训练。举例来说,有1000个原始数据,有放回的抽取1000次,构成一组新的数据(因为是有放回抽取,有些数据可能被选中多次,有些数据可能不被选上),作为某一个决策树的数据来进行模型的训练。2.特征随机:如果每个样本的特征维度为M,指定一个常数kM,随机地从M个特征中选取k个特征,在使用Python构造随机森林模型时,默认取特征的个数k是M的平方根: 随机森林在 bagging 的基础上,再次对特征做了一次随机选择,比如对于自助采样后的每一个子数据集(总共 m 个子数据集),我们并不会像决策数那样用到所有的特征,随机森林会从所有的特征中随机选择一个包含 k(k1.5的值,都预测为:(0+2+2+4)/4=2。此时的残差 如下表所示:x12345y00224f(x)02222残差0-2002此时的均方误差MSE如下所示:仿照阈值v=1.5的方法,我们可以计算出这种情况下4种切法的均方误差MSE值,如表:由上表可知,当v=2.5时均方误差MSE取得最小值,此时第一颗决策树 见图:补充知识点:用Python求均方误差通过mean_squared_error()函数可以快速求得均方误差,代码如下:v=1.5v=2.5v=3.5v=4.51.60.530.930.8(2)查看此时的残差在上面我们已经求得了第一颗决策树 ,因此我们可以获得其对应的残差如下表:x12345y00224f(x)008/38/38/3残差00-2/3-2/34/3有了残差之后,下面需要做的就是构建决策树来拟合残差,此时整个系统的均方误差MSE为0.53。2.拟合残差获得第二个决策树模型有了第一颗决策树 的残差值后,我们需要拟合的就是下面的表,这时的目标变量就是这里残差,根据x和残差我们需要拟合一个回归决策树 。x12345残差00-2/3-2/34/3(1)寻找合适的初始切分点通过和上面同样的计算方法,我们可以计算出4种切法下的均方误差MSE值,结果如表:由上表可知,当v=4.5时均方误差MSE取得最小值,此时第二颗决策树 为图:(2)查看此时的残差此时对于残差的预测值(T(x))及残差的残差值(残差 - T(x))如下表13-8所示:注意这个残差的残差也即系统的残差,这个在下一步骤:集成模型时会得以验证。此时该拟合残差的决策树模型的均方误差MSE值为0.088,这个其实也是整个系统的均方误差MSE值,这个同样也会在下一步骤:集成模型时会得以验证。v=1.5v=2.5v=3.5v=4.50.530.530.460.088x12345残差00-2/3-2/34/3T(x)-1/3-1/3-1/3-1/34/3残差的残差1/31/3-1/3-1/30(3)集成模型用图形来表示的话如下图:有了集成模型 后,我们便可以求得此时系统的残差(y-f(x)),如下表x2.50是x4.5 否是8/3-1/34/3否x12345y00224f(x)-1/3-1/37/37/34残差1/31/3-1/3-1/30可以看到,这里的残差和上一步骤获得的残差的残差是一样的,同时我们用如下代码可以求得这时候系统的均方误差MSE值:可以得到此时系统的均方误差MSE值为0.088,这个和上一步骤获得的均方误差MSE值是一致的。有了新模型的残差后,我们便可以继续构造新的决策树来拟合这个残差,当满足系统的均方误差MSE值达到指定要求,或者说迭代次数达到指定条件时,便停止迭代形成最终模型。最终模型如下图:新的拟合残差的决策树们x2.50是x4.5 否是8/3-1/34/3否如果设定迭代次数为2次(实际应用中模型默认取100次),或者认为均方误差MSE值0.088已经足够小,那么此时最终模型就如下所示:因为GBDT是不停的拟合新模型的残差,因此随着新的迭代,整个系统的残差会越来越小,或者更精确地说系统的均方误差MSE值会越来越小,从而使得模型更加准确。补充知识点实际应用中,GBDT(Gradient Boosting Decision Tree)梯度提升树使用损失函数的负梯度在当前模型的值作为残差近似值(上面定义的残差为y-f(xi))。如图13-12,负梯度为:其实这个负梯度在特定损失函数的情况下,就是上面定义的残差(y-f(xi)),如图,令损失函数为(关于损失函数的更多知识点,可以参考本章最后的补充知识点):此时对损失函数求梯度:此时残差 等于负梯度,也就是说,当损失函数是平方函数时,负梯度就是残差。不过当损失函数非平方函数时,负梯度只是残差的近似值,并不完全等于残差。13.2.4 GBDT算法的简单代码实现GBDT模型既可以做分类分析,也可以做回归分析,分别对应的模型为GBDT分类模型(GradientBoostingClassifierr)及GBDT回归模型(GradientBoostingRegressor)。GBDT分类模型的基模型是分类决策树模型,GBDT回归模型的基模型则是回归决策树模型。GBDT分类模型简单代码演示如下所示:其中X是特征变量,其共有2个特征;y是目标变量;第5行引入模型;第6行通过fit()函数训练模型;最后1行通过predict()函数进行预测,预测结果如下:其中X是特征变量,其共有2个特征;y是目标变量,有两个分类:0和1;第5行引入模型;第6行通过fit()函数训练模型,并设置random_state参数为123(该数字没有特殊含义,可以换成其他数字),使得每次运行结果一致;最后1行通过predict()函数进行预测,预测结果如下:GBDT回归模型简单代码演示如下所示:其中X是特征变量,其共有2个特征;y是目标变量;第5行引入模型;第6行通过fit()函数训练模型;最后1行通过predict()函数进行预测,预测结果如下:接下来我们将讲解基于GBDT算法的升级版本的Boosting算法:XGBoost和LightGBM算法之一,这两个算法可以说是目前机器学习竞赛中的明星算法,在商业实战中也有非常广泛的应用场景。这两种算法运行速度快,预测准确度高,且支持并行操作,极大的提高了机器学习的效率和效果,无论在分类模型还是回归模型都有很大的作用,因此本章针对这个模型,同样会分别讲解一个分类模型及一个回归模型方便大家理解。目 录0113.1 随机森林模型的基本原理和代码实现0203第三讲 XGBoost算法原理13.2 GBDT算法的原理介绍13.3 XGBoost算法原理0413.4案例实战:基于集成机器学习模型的财务舞弊模型13.3 XGBoost算法原理XGBoost算法是由华盛顿大学的陈天奇博士(本科就读于上海交通大学的 ACM 班)开发并开源给大家使用的,其官方文档地址为:https:/xgboost.readthedocs.io,在官方文档中有很多算法细节和使用方法,由于官方文档是英文的,这里讲解一个查看英文文档的便捷方法:下载谷歌浏览器(https:/ XGBoost算法核心思想XGBoost算法某种程度上可以说是上一节讲解的GBDT算法的改良版,其本质都是Boosting算法中拟合残差的思想:如下图13-15所示为之前讲解GBDT算法提到的信用卡额度的预测模型,其中初始决策树预测后不完全准确,会产生一些残差,因此会用新的决策树来拟合该残差,新的决策树又会产生新的残差,这时再构造新的决策树来拟合新的残差如此迭代下去直至符合设定条件为止。有的读者可能有疑问了,既然XGBoost算法的核心思想和GBDT算法都是Boosting算法中拟合残差的思想,那么其优势到底在什么地方呢?这个我们在下一节进行讲解。月收入20000元年龄25岁35000元B,D是否10000元A是20000元B否残差B=-5000,D=5000残差A=-2000残差C=5000年龄30岁月收入15000元5000元C,D是否-3000元A是-5000元B否残差C=0,D=0残差A=1000残差B=0新的拟合残差的决策树们新的拟合残差的决策树们初始决策树初始决策树拟合残差的决策树拟合残差的决策树13.3.2 XGBoost算法数学原理概述(了解)由于XGBoost算法的数学原理涉及非常多的高等数学和线性代数的知识,本书不过多展开,对于普通读者,了解核心思想和简单代码实现即可阅读案例实战了,在本书随书所赠材料中,也会有陈天奇博士所著XGBoost论文和相关PPT供感兴趣的读者参考,这里我们主要从文字的角度讲解XGBoost算法数学原理的一些核心知识点。作为GBDT算法的高效实现,XGBoost算法在如下两个方面做了优化:1.算法本身的优化:XGBoost算法的损失函数,除了本身的损失,还加上了正则化部分,可以防止过拟合,泛化能力更强。XGBoost算法的损失函数是对误差部分采用二阶泰勒展开,相较于GBDT算法的损失函数只对误差部分做负梯度(一阶泰勒)展开,更加准确。2.算法运行效率的优化:对每个弱学习器,如决策树建立的过程做并行选择,找到合适的子树节点分裂特征和特征值,从而提升运行效率。其中算法本身的优化是重点也是难点,其数学推导非常复杂,感兴趣的读者可以查看陈天奇博士的相关论文(如图),本书将着重介绍其代码实现及案例实战。13.3.3 XGBoost算法的简单代码实现XGBoost模型既可以做分类分析,也可以做回归分析,分别对应的模型为XGBoost分类模型(XGBClassifier)及XGBoost回归模型(XGBRegressor)。XGBoost模型的安装办法可以采用PIP安装法,以Windows操作系统为例,Win+R快捷键调出运行框,输入cmd后,在弹出界面中输入代码后Enter键回车运行即可:其中X是特征变量,其共有2个特征;y是目标变量;第4行代码使用array数组类型的数据做演示,因为XGBoost分类模型的特征变量不支持直接输入list列表类型的数据,可以传入array数组格式的数据或者DataFrame二维表格格式的数据;第7行引入模型;第8行通过fit()函数训练模型;最后1行通过predict()函数进行预测,预测结果如下:XGBoost回归模型简单代码演示如下所示:其中X是特征变量,其共有2个特征;y是目标变量;第5行引入模型;第6行通过fit()函数训练模型;最后1行通过predict()函数进行预测,预测结果如下:目 录0113.1 随机森林模型的基本原理和代码实现0203第四讲 案例实战:基于集成机器学习模型的财务舞弊模型13.2 GBDT算法的原理介绍13.3 XGBoost算法原理0413.4案例实战:基于集成机器学习模型的财务舞弊模型13.4案例实战:基于集成机器学习模型的财务舞弊模型实战永远是理解模型最好的方法,下面我们以第二十一章中公司财务舞弊的数据作为样本(过采样处理之后),分别训练三个模型,并比较三个模型的表现。对于三个模型来说,读取和处理数据部分的代码是相同的:13.4.1 基于随机森林模型的财务舞弊模型首先来应用随机森林模型,构造模型并拟合的方法在第一节已经介绍过了:这里的模型设置弱分类器决策树的个数:n_estimators参数为20(感兴趣的读者也可以设置成其他数字),随机种子参数:random_state参数为123(该值无特殊含义,主要使每次运行结果一致),其他所用的参数是默认值,我们可以输出准确度值和AUC值来看一下模型的拟合效果:得到的准确度结果为:再来看AUC值:得到的结果为: 0.816658955971933这一结果比我们单独用决策树得到的结果好一些(第二十一章中决策树调参之前AUC值为0.6608),这其实也是正常的,下面我们按照上一章的思路进行网格搜索调参优化:需要注意的是,网格搜索指定的参数都是针对每个模型特有的参数进行范围限制的,在指定范围之前最好通过help(模型名称)(比如help(RandomForestClassifier))指令来看随机森林模型都有哪些参数,这些参数传入的数据类型是什么,以及大概的数据量级是怎样的等等,在接下来的调参过程中,读者就可以看到不同模型我们调整对应的参数都是不同的,这由模型本身决定,所以要想通过调参达到模型的“极限”,需要读者对该模型的各个参数的含义以及数据的特征有十分深入的了解,才能完美结合两者,找到最佳的参数组合。此外注意由于K折交叉验证的随机性,每个人得到的结果可能不完全相同,且调参后的结果可能还会不如调参前(在上一章最后有讲解),这也是正常的。 参数意义取值n_estimators弱分类器决策树的个数取值为int型数据,默认取10criterion评判标准字符串型,节点分裂条件的判别标准,取值为“entropy”信息熵和“gini”基尼系数,默认选择“gini”max_depth基础模型的最大深度整数或者None,如果为None,那么会扩展节点,直到所有叶子是纯净的,或者所有叶子包含少于min_samples_split的样本min_samples_split分割内部节点所需要的最小样本数量如果为整数,那么该值为最小样本数量;如果为浮点型,这是一个百分比min_samples_leaf叶子节点上的最小样本数量如果为整数,那么该值为最小样本数量;如果为浮点型,这是一个百分比min_weight_fraction_leaf叶子节点最小的样本权重和默认取0,即不考虑权重问题,如果小于该数值,该叶子节点会和兄弟节点一起被剪枝(即剔除该叶子节点和其兄弟节点,并停止分裂)。如果较多样本有缺失值或者样本的分布类别偏差很大,则需考虑样本权重问题。max_features寻找最佳切割时要考虑的特征数量int型,float型,string型或None。若为int型,代表要考虑的特征数量;若为float型,即百分比;若为auto,代表sqrt(n_features);若为sqrt,和auto一样;若为log2,代表log2(n_features);若为None,代表n_features;默认取automax_leaf_nodes最大叶子节点数整数或者None,默认为None,如果为None,不限制叶子结点的数量min_impurity_decrease分裂节点阈值如果节点的分裂导致不纯度的下降大于或等于该参数,则分裂该节点,浮点型,默认为0min_impurity_split 停止树生长的阈值如果节点的不纯度高于阈值,就进行分裂,否则就是叶子节点;取值为float型,默认为1e-7bootstrap是否有放回地采样取值为True代表有放回地采样,取值为False代表建立每棵决策树时采取所有的数据;默认取Trueoob_score是否使用带外样本来估计泛化精度取值为True则代表选用带外样本(即bootstrap采样后剩下的样本)作为验证集,对训练结果进行验证,默认取Falsen_jobs并行性None值或int整数,指定并行性,默认值为None或者数字1,如果设置成-1,则表示将任务派发到所有CPU上random_state设置随机状态取值范围为int整数,RandomState实例,None。如果为整数,则指定了随机数生成器的种子,设置为任意整数后,例如“123”,则每次运行的结果都是一致的;如果为RandomState实例,则指定了随机数生成器;如果为None,则使用默认的随机数生成器。默认为Noneverbose控制决策树建立过程的冗余度整数型,默认为0,如果为0则不输出日志,如果为1,则每隔一段时间输出日志,大于1输出日志会更频繁warm_start热启动取值为True代表重新使用之前的结构去拟合样本并且加入更多的决策树,取值为False代表重新拟合随机森林模型,默认取Falseclass_weight指定类别权重取值范围为:字典,字符串balanced,None。取为字典时,字典给出每个分类的权重;取为balanced,每个分类的权重与该分类在样本集中出现的频率成反比,代表样本量少的类别所对应的样本权重更高;取为None,即每个分类权重都为1。默认为None。该参数主要是为防止训练集某些类别的样本过多,导致训练结果过于偏向这些类别补充说明:随机森林模型更多参数的含义可以参考下表。13.4.2 基于GBDT算法的财务舞弊模型那么GBDT模型的效果会不会更好一些呢?我们按照相同的思路先看看调参之前该模型的表现:这里的模型设置弱分类器决策树的个数:n_estimators参数为20(感兴趣的读者也可以设置成其他数字),随机种子参数:random_state参数为123(该值无特殊含义,主要使每次运行结果一致),其他所用的参数是默认值。通过和上一节类似的代码打印出准确度值和AUC值,一个是0.9768,一个是0.8765,其中AUC值较随机森林有一定的提升,说明模型有一定的优化。感兴趣的读者可以用相同思路进行调参优化,代码如下:提醒读者一下,由于这里拟合的数据量比较大,这个调参过程时间比较漫长,这里和下面的调参过程大概都需要两到三个小时,因为它相当于进行多次的模型拟合,所以读者最好选择恰当的空闲时间让电脑运行调参。此外注意由于K折交叉验证的随机性,每个人得到的结果可能不完全相同,且调参后的结果可能还会不如调参前(在上一章最后有讲解),这也是正常的。补充说明:GBDT模型(分类模型)更多参数的含义可以参考下表。参数意义取值loss损失函数取值范围为:deviance,exponential,取deviance表示对数损失函数;取exponential表示指数损失函数,默认取deviancelearning_rate弱学习器的权重缩减系数取值范围为(0,1,默认取0.1n_estimators弱学习器的最大迭代次数取值为int型数据,默认取100subsample子采样比例为了防止GBDT模型发生过拟合建立每棵回归树时采用子采样,该参数取值范围为(0,1:取值为1,代表在建立回归树时使用所有样本;取值小于1代表通过不放回抽样使用部分样本。默认取1criterion特征选择标准取值为string型,默认为friedman_mse。friedman_mse是费尔德曼均方误差,mse是均方误差,mae是平均绝对误差min_samples_split分割内部节点所需要的最小样本数量取值为int型或float型。如果为整数,该值为最小样本数量;如果为浮点型,则为一个百分比。默认为2min_samples_leaf叶子节点上的最小样本数量取值为int型或float型。如果为整数,该值为最小样本数量;如果为浮点型,则为一个百分比。默认为1min_weight_fraction_leaf叶子节点最小的样本权重和默认取0,即不考虑权重问题,如果小于该数值,该叶子节点会和兄弟节点一起被剪枝(即剔除该叶子节点和其兄弟节点,并停止分裂)。如果较多样本有缺失值或者样本的分布类别偏差很大,则需考虑样本权重问题max_depth最大深度取值为int型,最大深度限制了树的节点数,默认为3min_impurity_decrease分裂节点阈值如果节点的分裂导致不纯度的下降大于或等于该参数,则分裂该节点,浮点型,默认为0min_impurity_split停止树生长的阈值如果节点的不纯度高于阈值,就进行分裂,否则就是叶子节点;取值为float型,默认为1e-7random_state设置随机状态取值范围为int整数, RandomState实例, None。如果为整数,则指定了随机数生成器的种子,设置为任意整数后,如123,则每次运行的结果都是一致的;如果为RandomState实例,则指定了随机数生成器;如果为None,则使用默认的随机数生成器。默认为Nonemax_features寻找最佳切割时要考虑的特征数量int型、float型、string型或None,取int型,代表要考虑的特征数量;取float型,即百分比;取auto,代表sqrt(n_features);取sqrt,和auto一样;取log2,代表log2(n_features);取None,代表n_features;默认取Noneverbose控制输出整数型,默认为0。如果为0则不输出日志;如果为1,则每隔一段时间输出日志;大于1输出日志会更频繁max_leaf_nodes最大叶子节点数取值为int型数据,默认为Nonewarm_start热启动布尔型,设置为True时,重用前一个调用的解决方案以适合初始化,否则只擦除前一个解决方案,默认为Falsepresort数据预排序指定是否需要提前对数据进行排序从而加速寻找最优切分点。设置为True时,在数据量大时会减慢总体的训练过程,但对于小数据集或者设置了最大深度的情况下,则会加速训练过程validation_fraction留作早期停止的验证集训练数据的比例float型,默认为0.1n_iter_no_change确定当验证分数没有提高时是否提前停止训练取值为int型,默认为None。取值为None时,禁止提前停止训练;取值为整数时,将保留validation_fraction的数据用作验证,并在验证得分在之前n_iter_no_change_轮迭代中没有提高时终止训练tol提前停止训练的条件取值为float型,默认为1e-4。损失改善小于tol时,训练停止补充说明:GBDT模型(分类模型)更多参数的含义可以参考下表。对于GBDT回归模型而言,在Jupyter Notebook编辑器中,可以输入如下代码后运行,查看官方介绍。GBDT回归模型的相关参数和分类模型基本一致,主要区别参数为损失函数,如下表所示。loss损失函数取值为ls,代表均方差损失函数;取值为lad代表绝对损失函数;取值为huber代表Huber损失函数;取值为quantile代表分位数损失函数。默认取均方差损失函数ls13.4.3 基于XGBoost算法的财务舞弊模型看完了GBDT的效果,来看看XGBoost模型的运行效果,代码如下:这里的模型设置弱分类器决策树的个数:n_estimators参数为20(感兴趣的读者也可以设置成其他数字),随机种子参数:random_state参数为123(该值无特殊含义,主要使每次运行结果一致),其他所用的参数是默认值。此外注意由于XGBoost模型需要训练集数据和测试集数据有相同的表头,而过采样后的数据X_smote_resampled为二维Numpy数据格式,是没有列名的,因此通过X_smote_resampled = pd.DataFrame(X_smote_resampled, columns=namelist)这一行代码把过采样后的数据变成DataFrame格式并设置列名。通过和上一节类似的代码打印出准确度值和AUC值,一个是0.9789,一个是0.86869,其中AUC值较随机森林有所提高,但不如上一节的GBDT模型,可能经过参数调优后结果会有更大的优化。感兴趣的读者可以用相同思路进行调参优化,代码如下:此外注意由于K折交叉验证的随机性,每个人得到的结果可能不完全相同,且调参后的结果可能还会不如调参前(在上一章最后有讲解),这也是正常的。 补充说明:XGBoost模型更多参数的含义可以参考下表。参数意义取值max_depth决策树的最大深度取值为int型数据,默认为3n_estimators弱学习器个数,或者说弱学习器的最大迭代次数取值为int型数据,默认为100learning_rate弱分类器的权重缩减系数取值范围为(0,1,取值较小表示达到一定的误分类数或学习效果,需要更多迭代次数和更多的弱学习器;默认为0.1verbosity信息打印取值为0、1、2、3,值越大,模型输出信息越多objective定义目标函数取值为string型,默认为binary:logisticbooster使用的树模型取值范围为:gbtree,gblinear,dart,默认为gbtreen_jobs用于运行XGBoost的并行线程数取值为int型数据gamma在树的叶子节点进行进一步划分时所需的最小损失的减少值取值为float型数据min_child_weight叶子节点中最小的样本权重和如果树划分过程中的叶子节点的样本权重和小于min_child_weight,则划分过程结束max_delta_step每棵树权重改变的最大步长取值为int型数据subsample子采样比例取值范围为(0,1,取值为1代表在建立回归树时使用所有样本,取值小于1代表通过不放回抽样使用部分样本;默认为1colsample_bytree构建每个树时的子抽样比例取值为float型数据,默认为1colsample_bylevel每层的列的子抽样比例取值为float型数据,默认为1colsample_bynode每个节点的列抽样比例取值为float型数据,默认为1reg_alpha权重的L1正则化项取值为float型数据,默认为0reg_lambda权重的L2正则化项取值为float型数据,默认为1scale_pos_weight控制征服权重的平衡取值为float型数据,默认为1base_score所有实例的初始预测分数取值为float型数据,默认为0.5random_state设置随机状态取值范围为int整数,指定随机数生成器的种子,设置为任意整数后,如123,则每次运行的结果都是一致的;默认为0missing缺失值处理取值为float型数据,用于代替缺失值,默认为Noneimportance_type计算特征重要性的方法取值为string型,默认为gain至于XGBoost回归模型,大多数参数和上表中列举的XGBoost分类模型的参数一致,略微有些不同的是在回归问题中,objective参数使用reg:linear,二分类问题一般使用binary:logistic,多分类问题一般使用multi:softmax。不过当选择XGXGBoost回归模型,即XGBRegressor时,该参数会自动切换,所以也无需手动调参。另外,再次提醒读者,当得出的最佳参数恰好落在输入网格的某一边界时(比如如果最后得出的最佳max_depth参数为13,那么很有可能13并不是最佳的参数,只是因为最佳的参数没有被纳入考虑范围内,在这种情况下,如果想精益求精就应该朝着更大的方向更改这个参数的取值范围,再次进行网格搜索,直到最佳参数落在取值范围内,这样的结果才是有意义的),读者也可以适当更改网格搜索中的关注变量。 总之,模型的参数调参是一个相对复杂的过程,一方面它耗时较长,另一方面如果想节省时间,就需要根据数据特点提前缩小好一个合理的范围进行搜索,而这又对调参者对于模型和对数据的理解以及阅历有较高的要求。 从上面三个集成学习模型获得的结果而看,常用来衡量分类模型的指标:AUC值相较于上一章的决策树模型都有较大的优化,在现实商业实战中,集成学习也有着广泛的应用,感兴趣的读者可以进行更深的探索。本课件制作整理者:郭迎春 仅可用于教学、学习、交流使用 如内容、图片、字体等有侵权,请联系删除。