pg棋牌 RF,GBDT,XGBoost,lightGBM的对比

RF、GBDT、XGBoost、lightGBM都属于集成学习(Ensemble Learning)。集成学习的目的是通过结合多个基学习器的预测结果来提高基学习器的泛化能力和鲁棒性。

根据基础学习器的生成方式,目前的集成学习方法大致分为两类:即基础学习器之间存在强依赖关系、必须串行生成的序列化方法和基础学习器之间不存在强依赖关系。 ,可以同时生成的并行化方法;前者以Boosting为代表,后者以Bagging和“随机森林”(Random Forest)为代表。

集成学习简介:机器学习模型优化的模型融合

本文主要比较集成学习中重要且广泛使用的方法:RF(随机森林)、ET(极端随机树)、GBDT(梯度提升决策树)、XGBoost、lightGBM

1. RF(随机森林):

1、射频原理:

RF是Bagging算法的优化版本。改进1:基础学习器仅限于决策树。改进2:除了bagging之外,还对样本添加扰动,对属性也添加扰动,即在决策树学习的过程中。引入随机属性选择。对于基础决策树的每个节点,从该节点的属性集中随机选择一个包含k个属性的子集,然后从这个子集中选择一个最优属性进行划分。 。

2. RF的生成:算法如下

输入为样本集D={(x,y1),(x2,y2),...(xm,ym)}D={(x,y1),(x2,y2),...(xm,ym)},弱分类器迭代次数T。
输出为最终的强分类器f(x)f(x)
1)对于t=1,2...,T:
    a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集D-m
   b)用采样集D-m训练'第m个决策树模型Gm(x)',在训练决策树模型的节点的时候, '在节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分'
2) 如果是'分类算法预测',则T个弱学习器投出最多票数的类别或者类别之一为最终类别。
'如果是回归算法'T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

3. RF和Bagging的比较:RF的初始性能很差,特别是当只有一个基学习器时。随着学习者数量的增加,随机森林通常会收敛到较低的泛化误差。随机森林的训练效率也会高于bagging,因为在构建单个决策树时,bagging使用的是“确定性”决策树。选择特征划分节点时,必须考虑所有特征,而使用随机森林“随机”特征数并且仅考虑特征的子集。

4、优点和缺点:

优点:训练可以高度并行,在大数据时代大样本训练速度上有优势(个人认为这是主要优势);它可以处理非常高维的数据,无需进行特征选择pg电子娱乐平台,并且在训练后,给出特征的重要性;与Boosting系列的Adaboost和GBDT相比,RF实现相对简单。 。

缺点:在有噪声的分类或回归问题上很容易过拟合。

2. ET(Extremely random trees) Extra-Trees(极端随机树):

1、ET的原理:该算法与随机森林算法非常相似,都是由很多决策树组成。但该算法与随机森林有两个主要区别:

1)对于每棵决策树的训练集,RF使用随机采样bootstrap来选择采样集作为每棵决策树的训练集,而额外树一般不使用随机采样,即每棵决策树都使用原始训练放。

2)RF决策树选择划分特征后,会根据信息增益、基尼系数、均方误差等原则选择最优特征值划分点,与传统决策树相同。但额外的树木更为激进。他们随机选择一个特征值来划分决策树。

2、ET随机选取特征值的说明:

当特征属性为类别形式时,随机选择某些类别的样本作为左分支,其他类别的样本作为右分支;当特征属性为数值形式时,随机选择特征属性最大值的样本。该值和最小值之间的任意数字。当样本的特征属性值大于该值时,则作为左分支。当小于这个值时,就作为右分支。这样就达到了将样本随机分配到该特征属性下的两个分支的目的。然后计算此时的分叉值(如果特征属性是类别形式,可以应用基尼指数;如果特征属性是数值形式,可以应用均方误差)。遍历节点中的所有特征属性,根据上述方法获取所有特征属性的分叉值。我们选择分叉值最大的形式来实现节点的分叉。

3、ET和RF的比较:由于特征值的划分点是随机选择的,而不是最优点,所以生成的决策树的大小一般会比RF生成的要大。换句话说,模型的方差相对于RF进一步减小,但偏差相对于RF进一步增大。在某些时候,额外的树比 RF 具有更好的泛化能力。

(RF还有一个变体,Isolation Forest,用于查找异常值,与本文关系不大,可以自行关注)

3.GBDT(梯度提升决策树):

1、GBDT原理:

GBDT是集成学习Boosting家族的一员,是对boosting树的改进。 Boosted Tree是当加性模型和学习算法都是前向分布算法时的算法。然而,它将基本学习器限制在决策树上。对于二元分类问题,损失函数是指数函数,这意味着AdaBoost算法中的基本学习器仅限于二元决策树;对于回归问题,损失函数是平方误差,此时拟合的是当前模型。残差。梯度boosting树GBDT是boosting树算法的改进。 boosting树算法仅适用于误差函数为指数函数和平方误差的情况。对于一般损失函数,梯度boosting树算法使用当前模型值中损失函数的负梯度作为残差Poor近似。

GBDT会累加所有树的结果,而这个累加并不能通过分类来完成,所以GBDT的树都是CART回归树,而不是分类树(虽然GBDT调整后也可以用于分类,但它不代表树) GBDT 是一个分类树)。

2.GBDT算法:

关于GBDT算法原理的详细信息可以参考:梯度提升树(GBDT)原理总结

关键部分总结如下:

输入是训练集样本

,最大迭代次数T,损失函数L。

输出是强学习器 f(x)

1)初始化弱学习器

2)对于迭代轮数t=1,2,…T,有:

a) 计算样本 i=1,2,...m 的负梯度

b) 利用

,拟合一棵CART回归树得到第t棵回归树,其对应的叶子节点面积为

![这里写图片描述](http://latex.codecogs.com/gif.latex?R_%7Btj%7D),j=1,2,...,J

。其中 J 是回归树 t 的叶节点数。

c) 计算叶面积 j =1,2,..J 的最佳拟合值

d) 更新强学习器

3)获取强学习器f(x)的表达式

3、GBDT和Boosting的区别:

GBDT 与传统的 Boosting 有很大不同。 GBDT的每一次计算都是为了减少之前的残差。为了消除残差,我们可以在残差减小的梯度方向建立模型。所以,在 GradientBoost 中,每建立一个新模型,都是让之前模型的残差走梯度下降法,这与传统的 Boosting 注重正确和错误的样本权重有很大不同。

4、优点和缺点:

优点:可以灵活处理各种类型的数据;与SVM相比,参数调整时间相对较少,预测精度较高。

缺点:基学习器之前存在串行关系pg电子麻将胡了,难以并行训练数据。

4.XGBoost:

1.了解XGBoost原理:

XGBoost原理详解。推荐两篇很棒的博客,xgboost原理和xgboost算法原理。

这里我简单解释一下我的理解:

XGBoost是集成学习Boosting家族的一员,是基于GBDT的Boosting算法的改进。 GBDT使用模型在数据上的负梯度作为残差的近似值来拟合残差。 XGBoost 也对数据进行残差拟合,但它使用泰勒展开来近似模型损失残差;同时,XGBoost改进了模型的损失函数,并添加了模型复杂度的正则项。

2、XGBoost和GBDT的区别:了解了XGBoost的原理就很容易理解两者的区别

损失函数的变化:(衍生品和正则项的理解)

工具的优化:(趋势值和并行性的认知)

5. 轻GBM:

1. lightGBM的理解:它是微软开发的一个新的boosting框架。基本原理与XGBoost相同,但在框架上进行了优化(重点是优化模型的训练速度)。

lightGBM介绍参考:Faster Than XGBOOST – LightGBM介绍

2.lightGBM和XGBoost的区别:

(1) xgboost采用level-wise分裂策略,而lightGBM采用leaf-wise策略。不同之处在于xgboost不加区别地分割每一层中的所有节点。有些节点的增益可能很小,对结果没有影响。大,但是xgboost也被拆分了,这就带来了必要的开销。 leaf-wise的方法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,并递归地进行。很明显,leaf-wise的这种方法很容易过拟合,因为很容易陷入到比较高的深度,所以需要限制最大深度,以避免过拟合。

(2)lightgbm采用的是基于直方图的决策树算法,与xgboost中的exact算法不同。直方图算法在内存和计算成本方面具有相当大的优势。

-.内存优势:显然,直方图算法的内存消耗是(#data* #features * 1Bytes)(因为对特征分桶后只保存了特征离散化后的值)pg赏金女王单机版试玩平台,而xgboost的exact算法的内存消耗是:(2 * #data * #features* 4Bytes),因为xgboost需要同时保存原始特征值和该值的顺序索引。这些值需要32位浮点数来保存。

-.计算优势。预排序算法在选择分割特征时需要遍历所有样本的特征值来计算分割收益,时间为(#data),而直方图算法只需要遍历桶,时间为( #垃圾桶 )

(3)直方图差分加速度

-.父节点的直方图减去兄弟节点的直方图就可以得到子节点的直方图,从而加快计算速度。

(4)lightgbm支持直接输入分类特征

-.在分割离散特征时,将每个值视为一个桶,分割时的增益计算为“是否属于某个类别”的增益。类似于one-hot编码。

(5)但实际上,xgboost的近似直方图算法也与lightgbm的直方图算法类似。为什么xgboost的近似直方图算法还是比lightgbm慢很多?

-. xgboost 在每一层动态构建直方图。因为xgboost的直方图算法并不是针对特定的特征,而是所有的特征共享一个直方图(每个样本的权重是二阶导数),所以每个层的直方图都要重新构建,而lightgbm对于每个层都有一个直方图特征,因此构建一次直方图就足够了。

-. lightgbm做了缓存优化吗?

(6)lightgbm的哪些方面是并行化的?

-.特征并行

一般的特征并行就是对数据进行垂直分区(垂直分区数据,即拆分属性),然后将拆分后的数据分散到各个worker上。每个worker计算自己拥有的数据的最佳分割点,然后汇总得到全局结果。最佳分裂点。但lightgbm表示,这种方式的通信开销比较大。 lightgbm的做法是每个worker拥有所有数据,然后进行划分? (我不明白,既然每个worker都有所有的数据,那么总结有什么意义呢?这个并行性体现在哪里??)

-.数据并行

传统的数据并行对数据集进行划分,也称为并行分区(水平分区数据)。分发到每个worker后,worker将获得的数据制作直方图,并对每个worker的直方图进行汇总,得到全局直方图。 Lightgbm还声称这个操作的通信开销比较大。 Lightgbm的做法是使用“Reduce Scatter”机制。它并没有总结所有的直方图,只是总结了不同worker的不同特征的直方图(原理?)。在这个总结的直方图上进行分割并最终同步。

关键词:

客户评论

我要评论