xgboost和lightgbm

集成学习:XGBoost, lightGBM_哔哩哔哩_bilibili

XGBoost 和 LightGBM 对比

XGBoost 和 LightGBM 对比_人鱼线的博客-CSDN博客

【机器学习】gbdt/xgboost/lightGBM比较 | Siyao's Blog

PPT已上传至公众号:Abela的后花园
代码已上传至:https://github.com/BackyardofAbela/EnsembleLearning

集成学习详解

分类与回归树CART

通俗理解kaggle比赛大杀器xgboost_v_JULY_v的博客-CSDN博客

cart树做分类时,树分裂准则用的是基尼系数;

cart树做回归时,树分裂准则用的是最小平方误差;

最小平方误差

计算label的标准方差,计算每个特征下的标准方差,两者相减,找到标准方差降低最多的特征进行分裂。

为什么xgb用的基分类器是回归树

※决策树:分类与回归树CART - 知乎

gbdt的cart树是回归树,通过平方误差进行分裂。gbdt是多个cart树,每个cart树之间要比较pred和label,最后的损失函数是不同的树之间得到的。单个树内部通过平方误差(分类树是基尼系数)进行分类,不用传统意义上的损失函数(即不用比较pred和label)。

因为损失函数定义是平方误差损失,对损失函数进行二阶泰勒展开,要保证损失函数二阶可导。熵的损失函数没有这个性质。

为什么xgb用的是二阶泰勒展开

通俗理解kaggle比赛大杀器xgboost_v_JULY_v的博客-CSDN博客

决策树

熵计算方式

信息与熵值的计算_fang_chuan的博客-CSDN博客_熵值计算

基尼系数计算方式

树类算法之---决策树Cart树Gini系数就算原理。 - CodeAntenna

三种决策树

决策树是用特定的分裂原则,递归形成的树形决策结构,叶子节点代表最终的预测值或类别。

【机器学习】决策树(上)——ID3、C4.5、CART(非常详细) - 知乎

决策树有三种算法,id3,c4.5,cart树,他们最大的不同是树分裂准则不一样。

id3的分裂准则是信息增益(熵模型),每次分裂时,计算label的信息熵,计算每个特征下的条件熵,信息增益 = 信息熵-条件熵。找到信息增益最大的特征进行分裂,是一个多叉树。

信息增益的缺点是对nunique值较多的特征比较敏感。

c4.5的树分裂准则是信息增益率(熵模型),克服了这个缺点。把特征的取值数作为惩罚项加了进去。

cart树的树分裂准则是基尼系数,避免了计算信息增益时的大量log运算。计算label的基尼系数,计算每个特征下的基尼系数,基尼增益是两者相减,找到基尼增益最大的特征进行分裂,是一个多叉树。

此外,id3没有剪枝策略,其他两个有,cart树既能分类又能回归,其他两个只能分类。

3.机器学习之决策树详解 - 大-道-至-简 - 博客园

id3,c4.5是多叉树,只需要寻找最优特征,根据特征的不同取值来决定是几叉树。

cart是二叉树,先找最优特征(算这个特征的基尼系数,找特征基尼系数最小的),然后再找在这个特征的哪个值(在哪个特征取值下基尼系数最小)来进行分裂。

gbdt

从决策树到XGBoost - 知乎

GBDT算法是一种前向加法模型,基树采用CART回归树,树节点的划分指标是平方损失函数,叶子节点的值是落在该叶子节点所有样本的目标均值。树与树之间的Boosting逻辑是:新树拟合的目标是上一课树的损失函数的负梯度的值。GBDT最终的输出结果是将样本在所有树上的叶子值相加。

【机器学习】决策树(中)——Random Forest、Adaboost、GBDT (非常详细) - 知乎

GBDT--原来是这么回事(附代码) - mantch - 博客园

梯度提升树(GBDT)简介 - 知乎

xgb

【白话机器学习】算法理论+实战之Xgboost算法

xgb是gbdt的一种工程实现,算法思想是类似的,都是boosting算法,前向加法模型,

不断减少残差(回归),通过不断加入新的树旨在在残差减少(负梯度)的方向上建立一个新的模型。——即损失函数是旨在最快速度降低残差。

损失函数不同:

gbdt树分裂的时候是用的最小平方误差原则,去拟合梯度方向。

xgb是把损失函数进行了二阶泰勒展开,结合树的正则项,得到了一个和损失函数的一阶导数和二阶导数有关的公式,用这个公式做为树的分裂原则。

工程实现上:

【机器学习】gbdt/xgboost/lightGBM比较 | Siyao's Blog

xgb和lgb

【机器学习】gbdt/xgboost/lightGBM比较 | Siyao's Blog

【机器学习】决策树(下)——XGBoost、LightGBM(非常详细) - 知乎

 树分裂的近似算法不同

xgb的树分裂策略-最优切分点划分算法

xgboost理解(3) xgboost分裂点选取、缺失值处理和并行化 | Our Home

树分裂,最优切分点划分算法,贪心算法,近似分位数算法。

贪心算法

近似分位数算法

近似分位树算法利用了2阶导数信息,2阶导数是权重。

【机器学习】决策树(下)——XGBoost、LightGBM(非常详细) - 知乎

lgb的树分裂策略

直方图算法

xgb损失函数

XGBoost、GBDT超详细推导 - 知乎

xgb和lgb

【白话机器学习】算法理论+实战之Xgboost算法

xgboost和lightgbm_林冲风雪山神庙的博客-CSDN博客_xgboost和lightgbm

集成学习详解

xgb和gbdt的区别

xgb是gbdt的一种工程实现,算法思想是类似的,都是boosting算法,前向加法模型,

通过不断加入新的树,在残差减少(负梯度)的方向上建立一个新的模型。

算法理论上最大的区别是xgboost对损失函数进行了二阶泰勒展开,更加精准的去拟合残差。在损失函数上加上了正则项来控制树深。

工程实现上主要的点在于xgboost工具支持并行,xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。

xgb和lgb的区别

树分裂算法不一样,XGBoost使用的是pre-sorted算法(对所有特征都按照特征的数值进行预排序,在遍历分割点的时候用O(data)的代价找到一个特征上的最好分割点),能够更精确的找到数据分隔点。lgb使用的是histogram算法(X发给类似一种分桶算法),占用的内存更低,数据分隔的复杂度更低

树的生长策略不一样,XGBoost采用的是level-wise生长策略,好控制模型复杂度,不容易过拟合;但实际上Level-wise是一种低效的算法,它不加区分的对待同一层的叶子,带来了很多没必要的开销,因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。

LightGBM采用leaf-wise生长策略,如Figure 2所示,每次从当前所有叶子中找到分裂增益最大(一般也是数据量最大)的一个叶子,然后分裂,如此循环;但会生长出比较深的决策树,产生过拟合。因此 LightGBM 在leaf-wise之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值