照片来自Unsplash上的Tingey Injury Law Firm
CatBoost(Category Boosting),LightGBM(Light Gradient Boosted Machine)和XGBoost(eXtreme Gradient Boosting)都是梯度提升算法。在深入了解它们的特性和性能差异之前,我们必须了解集成学习这个术语以及它与梯度提升的关系。
目录
集成学习
集成学习是一种技术,它将多个模型的预测组合起来,得到更稳定、更好的泛化预测。其思想是平均不同模型的个体错误,以降低过度拟合的风险,同时保持强大的预测性能。
在回归中,总体预测通常是各个树预测的平均值,而在分类中,总体预测基于加权投票,概率平均分配给所有树,并且具有最高概率的类是最终预测的类。
集成学习方法有两个主要类别,即装袋和提升,尽管机器学习算法可以是两者的组合,但有一定的变化。
- 装袋方法使用数据的随机子集(有放回采样)并聚合所有模型的预测。
- 提升方法使用整个数据顺序构建模型,每个模型都在前一个模型的误差上改进。
CatBoost、LightGBM和XGBoost都是梯度提升算法的变体。现在你已经了解了装袋和提升之间的差异,我们可以进一步了解算法如何实现梯度提升的差异。
Catboost vs. LightGBM vs. XGBoost特性
下表是三种算法之间差异的总结,接下来详细阐述特性。
表1:CatBoost、LightGBM和XGBoost的特性-作者图片
树的对称性
在CatBoost中,对称树或平衡树是指在树的同一深度的所有节点上分裂条件都是一致的。LightGBM和XGBoost则会得到非对称树,这意味着同一深度的每个节点的分裂条件可能不同。
图1:非对称树vs.对称树-作者图片
对于对称树,这意味着分裂条件必须在相同深度的所有节点中产生最小的损失。平衡树架构的好处包括更快的计算和评估以及控制过度拟合。
尽管LightGBM和XGBoost都是非对称树,但LightGBM是叶子生长,而XGBoost是层次生长。简单地说,我们可以认为LightGBM是有选择地生长树,相比XGBoost,结果是更小、更快的模型。
图2:LightGBM(左) vs. XGBoost(右)-作者图片
分裂方法
分裂方法是指如何确定分裂条件。
在CatBoost中,使用贪婪方法,将可能的特征-分裂对列表分配给叶子作为分裂,选择导致最小惩罚的分裂。
在LightGBM中,基于梯度的单侧采样(GOSS)保留所有具有大梯度的数据实例,并对具有小梯度的数据实例进行随机采样。梯度是损失函数的切线的斜率。具有更大梯度的数据点具有更高的误差,并且对于找到最佳分裂点非常重要,而具有较小梯度的数据点具有较小的误差,并且对于保持学习决策树的准确性非常重要。这种采样技术会导致更少的数据实例来训练模型,因此训练时间更快。
在XGBoost中,预排序算法考虑所有特征并按特征值排序。然后,进行线性扫描以决定特征和特征值的最佳分裂,从而获得最大的信息增益。直方图算法的工作方式相同,但不是考虑所有特征值,而是将特征值分组为离散区间,并基于离散区间找到分裂点,这比预排序算法更高效,但仍然比GOSS慢。
提升类型
在如何选择训练数据方面有一些变化。有序提升是指每个模型都在数据的子集上进行训练并评估另一个数据的子集。有序提升的好处包括增加对未见数据的鲁棒性。## 类别列
不同算法的类别列参数如下,
- CatBoost:
cat_features
,one_hot_max_size
- LightGBM:
categorical_feature
- XGBoost:NA
提高准确性、速度和控制过拟合
在集成学习中,跨不同模型进行预测的平均值有助于解决过拟合问题。然而,与任何基于树的算法一样,仍然存在过拟合的可能性。可以通过将数据集拆分为训练、验证和测试集来处理过拟合问题,启用交叉验证、早期停止或树剪枝。为了比较不同的算法,我们将专注于使用模型参数来控制过拟合。
请注意,为了控制模型的复杂性,XGBoost使用参数max_depth
(因为它是按级别生长的),而LightGBM使用参数num_leaves
(因为它是按叶子生长的)。
表2:调整准确性、速度和过拟合的参数 - 作者提供的图片
性能比较
对不同数据集进行的准确性和速度基准测试有很多。如果没有适当考虑过拟合和数值/类别变量,我认为将算法性能归纳到几个数据集上是草率的。
然而,从文献中可以看出,XGBoost和LightGBM的性能相似,而CatBoost和LightGBM的性能比XGBoost快得多,特别是对于更大的数据集。
希望你对三种最流行的机器学习提升算法 - CatBoost、LightGBM和XGBoost有了更好的了解,它们在结构上有所不同。在实践中,数据科学家通常会尝试不同类型的机器学习算法来处理他们的数据,所以现在不要排除任何算法!在选择不同算法之间考虑可理解性、性能和时间因素的同时,通过超参数调整和管道架构或超参数来控制过拟合也非常关键。
相关链接
CatBoost
- 文档:https://catboost.ai/en/docs/
- 官方GitHub:https://github.com/catboost/catboost
- 论文:http://learningsys.org/nips17/assets/papers/paper_11.pdf
LightGBM
- 文档:https://lightgbm.readthedocs.io/
- 官方GitHub:https://github.com/microsoft/LightGBM
- 论文:https://proceedings.neurips.cc/paper/2017/file/6449f44a102fde848669bdd9eb6b76fa-Paper.pdf
XGBoost
- 文档:https://xgboost.readthedocs.io/
- 官方GitHub:https://github.com/dmlc/xgboost
- 论文:https://arxiv.org/pdf/1603.02754.pdf
译自:https://towardsdatascience.com/catboost-vs-lightgbm-vs-xgboost-c80f40662924
评论(0)