随机森林、GBDT、XGBoost⽐较
RF、GBDT和XGBoost都属于集成学习(Enmble Learning),集成学习的⽬的是通过结合多个基学习器的预测结果来改善单个学习器的泛化能⼒和鲁棒性。
根据个体学习器的⽣成⽅式,⽬前的集成学习⽅法⼤致分为两⼤类:即个体学习器之间存在强依赖关系、必须串⾏⽣成的序列化⽅法,以及个体学习器间不存在强依赖关系、可同时⽣成的并⾏化⽅法;前者的代表就是Boosting,后者的代表是Bagging和“随机森
林”(Random Forest)。
1. 随机森林
1.1 原理
提到随机森林,就不得不提Bagging,Bagging可以简单的理解为:放回抽样,多数表决(分类)或简单平均(回归),同
时Bagging的基学习器之间属于并列⽣成,不存在强依赖关系。
Random Forest(随机森林)是Bagging的扩展变体,它在以决策树为基学习器构建Bagging集成的基础上,进⼀步在决策树的训练过程中引⼊了随机特征选择,因此可以概括RF包括四个部分:1、随机选择样本(放回抽样);2、随机选择特征;3、构建决策树;4、随机森林投票(平均)。
随机选择样本和Bagging相同,随机选择特征是指在树的构建中,会从样本集的特征集合中随机选择部分特征,然后再从这个⼦集中选择最优的属性⽤于划分,这种随机性导致随机森林的偏差会有稍微的增加(相⽐于单棵不随机树),但是由于随机森林的‘平均’特性,会使得它的⽅差减⼩,⽽且⽅差的减⼩补偿了偏差的增⼤,因此总体⽽⾔是更好的模型。
(As a result of this randomness, the bias of the forest usually slightly increas (with respect to the bias of a single
non-random tree) but, due to averaging, its variance also decreas, usually more than compensating for the increa in bias, hence yielding an overall better model.)
在构建决策树的时候,RF的每棵决策树都最⼤可能的进⾏⽣长⽽不进⾏剪枝;在对预测输出进⾏结合时,RF通常对分类问题使⽤简单投票法,回归任务使⽤简单平均法。
形容大树 RF的重要特性是不⽤对其进⾏交叉验证或者使⽤⼀个独⽴的测试集获得⽆偏估计,它可以在内部进
⾏评估,也就是说在⽣成的过程中可以对误差进⾏⽆偏估计,由于每个基学习器只使⽤了训练集中约63.2%的样本,剩下约36.8%的样本可⽤做验证集来对其泛化性能进
倒档怎么挂
小粽子⾏“包外估计”。
RF和Bagging对⽐:RF的起始性能较差,特别当只有⼀个基学习器时,随着学习器数⽬增多,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率也会⾼于Bagging,因为在单个决策树的构建中,Bagging使⽤的是‘确定性’决策树,在选择特征划分结点时,要对所有的特征进⾏考虑,⽽随机森林使⽤的是‘随机性’特征数,只需考虑特征的⼦集。
1.2 优缺点
随机森林的优点较多,简单总结:1、在数据集上表现良好,相对于其他算法有较⼤的优势(训练速度、预测准确度); 2、能够处理很⾼维的数据,并且不⽤特征选择,⽽且在训练完后,给出特征的重要性;3、容易做成并⾏化⽅法。
RF的缺点:在噪声较⼤的分类或者回归问题上回过拟合。
清汤羊肉的做法
2. GBDT
采薇的翻译
提GBDT之前,谈⼀下Boosting,Boosting是⼀种与Bagging很类似的技术。不论是Boosting还是Bagging,所使⽤的多个分类器类型都是⼀致的。但是在前者当中,不同的分类器是通过串⾏训练⽽获得的,每个新分类器都根据已训练的分类器的性能来进⾏训
练。Boosting是通过关注被已有分类器错分的那些数据来获得新的分类器。
由于Boosting分类的结果是基于所有分类器的加权求和结果的,因此Boosting与Bagging不太⼀样,Bagging中的分类器权值是⼀样的,⽽Boosting中的分类器权重并不相等,每个权重代表对应的分类器在上⼀轮迭代中的成功度。
2.1 原理
GBDT与传统的Boosting区别较⼤,它的每⼀次计算都是为了减少上⼀次的残差,⽽为了消除残差,我们可以在残差减⼩的梯度⽅向上建⽴模型,所以说,在GradientBoost中,每个新的模型的建⽴是为了使得之前的模型的残差往梯度下降的⽅法,与传统的Boosting中关注正确错误的样本加权有着很⼤的区别。
在GradientBoosting算法中,关键就是利⽤损失函数的负梯度⽅向在当前模型的值作为残差的近似值,进⽽拟合⼀棵CART回归树。 GBDT的会累加所有树的结果,⽽这种累加是⽆法通过分类完成的,
因此GBDT的树都是CART回归树,⽽不是分类树(尽管GBDT调整后也可以⽤于分类但不代表GBDT的树为分类树)。
2.2 优缺点
GBDT的性能在RF的基础上⼜有⼀步提升,因此其优点也很明显,1、它能灵活的处理各种类型的数据;2、在相对较少的调参时间下,预测的准确度较⾼。
蒜香辣椒酱 当然由于它是Boosting,因此基学习器之前存在串⾏关系,难以并⾏训练数据。
3. XGBoost
3.1 原理
XGBoost的性能在GBDT上⼜有⼀步提升,⽽其性能也能通过各种⽐赛管窥⼀⼆。坊间对XGBoost最⼤的认知在于其能够⾃动地运⽤CPU的多线程进⾏并⾏计算,同时在算法精度上也进⾏了精度的提⾼。
由于GBDT在合理的参数设置下,往往要⽣成⼀定数量的树才能达到令⼈满意的准确率,在数据集较复杂时,模型可能需要⼏千次迭代运算。但是XGBoost利⽤并⾏的CPU更好的解决了这个问题。
其实XGBoost和GBDT的差别也较⼤,这⼀点也同样体现在其性能表现上。
4. 区别
4.1GBDT和XGBoost区别
1. 传统的GBDT以CART树作为基学习器,XGBoost还⽀持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分
类)或者线性回归(回归);
淘宝网女装货到付款
2. 传统的GBDT在优化的时候只⽤到⼀阶导数信息,XGBoost则对代价函数进⾏了⼆阶泰勒展开,得到⼀阶和⼆阶导数;
3. XGBoost在代价函数中加⼊了正则项,⽤于控制模型的复杂度。从权衡⽅差偏差来看,它降低了模型的⽅差,使学习出来的模型更加
简单,放置过拟合,这也是XGBoost优于传统GBDT的⼀个特性;
4. shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进⾏完⼀次迭代时,会将叶⼦节点的权值乘上该系数,主
要是为了削弱每棵树的影响,让后⾯有更⼤的学习空间。(GBDT也有学习速率);
5. 列抽样。XGBoost借鉴了随机森林的做法,⽀持列抽样,不仅防⽌过 拟合,还能减少计算;
6. 对缺失值的处理。对于特征的值有缺失的样本,XGBoost还可以⾃动 学习出它的分裂⽅向;
7. XGBoost⼯具⽀持并⾏。Boosting不是⼀种串⾏的结构吗?怎么并⾏ 的?注意XGBoost的并⾏不是tree粒度的并⾏,XGBoost也是
⼀次迭代完才能进⾏下⼀次迭代的(第t次迭代的代价函数⾥包含了前⾯t-1次迭代的预测值)。XGBoost的并⾏是在特征粒度上的。
我们知道,决策树的学习最耗时的⼀个步骤就是对特征的值进⾏排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进⾏了排序,然后保存为block结构,后⾯的迭代 中重复地使⽤这个结构,⼤⼤减⼩计算量。这个block结构也使得并⾏成为了可能,在进⾏节点的分裂时,需要计算每个特征的增益,最终选增益最⼤的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进⾏。广播电视工程