出的信息增益决定。
优点:
精度更高
: GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒
展开。XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损
失函数,二阶泰勒展开可以近似损失函数;
灵活性更强
: GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART 还支持线性
分类器,使用线性分类器的 XGBoost 相当于带 L1 和 L2 正则化项的逻辑斯蒂回归(分
类问题)或者线性回归(回归问题)。此外,XGBoost 工具支持自定义损失函数,只需
函数支持一阶和二阶求导;
正则化
: XGBoost 在目标函数中加入了正则项,用于控制模型的复杂度。正则项
里包含了树的叶子节点个数、叶子节点权重的 范式。正则项降低了模型的方差,使学
习出来的模型更加简单,有助于防止过拟合,这也是 XGBoost 优于传统 GBDT 的一个
特性。
列抽样
: XGBoost 借鉴了随机森林的做法,支持列抽样(训练时可以只考虑一部
分特征),不仅能降低过拟合,还能减少计算。这也是 XGBoost 异于传统 GBDT 的一个
特性;
缺失值处理
: 对于特征的值有缺失的样本,XGBoost 采用的稀疏感知算法可以自
动学习出它的分裂方向;
缺点:
计算量大、计算速度较慢、消耗内存。
LightGBM:
Lightgbm 算法是 xgboost 的改进算法,相较于 xgboost 算法,lightgbm 在保证了
模型效果的同时,
大大加快了优化拟合速度
。Lightgbm 采用了直方图算法,先将特征
值离散化成 K 个整数,然后构造宽度为 k 的直方图,将数据进行装桶,在每个 bin 中对
数据进行梯度累加和个数统计。分桶过后以每个 bin 为单位遍历的分裂点会少很多,
减少了计算量。同时在分裂时,采用直方图做差加速,比如左节点为一二两个 bin,那
么其他 bin 就分到另一个节点。使用单边梯度抽样算法(GOSS),根据样本的权重信息
对样本进行抽样,减少梯度小的样本,在计算增益时为梯度小的样本增加一个常数进
行平衡,使得数据集分布不发生太大改变。如果多个指标之间互斥程度较大(大多数
数据不同时非零),可将这些指标进行捆绑降低特征维度。特征合并算法,其关键在于
原始特征能从合并的特征中分离出来。通过在特征值中加入一个偏置常量来解决。比
如要融合 A,B 两个特征,A 取值为[0,10],B 取值为[0,20],给 B 加上一个偏置 10,两
个变量就没有重回部分了,就可以放心融合了。用带深度限制的 Leaf-wise 算法去生
成树, 每次分 裂都找 到增益 最大的 那个叶 子节点 进行分 裂,而 不是逐 层分裂 ,
lightgbm 支持类别特征,不需要做独热码转换。避免独热码转换造成的特征稀疏问题,
训练效果较好。Lightgbm 支持特征并行,不同于 xgboost 对数据特征进行划分,在不
同的机器上进行分割,最后机器间进行通信,增加了额外复杂度,lightgbm 直接在同
一台机器上保存全部数据,然后分块并行处理得到最佳方案,节省了通信时间。另外
还支持数据并行,数据分块进行划分再组合到一起。基于投票的数据并行则进一步优
化数据并行中的通信代价,使通信代价变成常数级别。在数据量很大的时候,使用投
票并行的方式只合并部分效果好特征的直方图从而达到降低通信量的目的,可以得到
评论0
最新资源