CatBoost 与其他提升算法



如今,训练结构化(表格)数据最有效的方法之一是提升算法。以下三种广为人知的提升算法的使用,为赢得机器学习竞赛提供了多种方法:CatBoost、XGBoost 和 LightGBM。

本章的主要内容将是 CatBoost,以及它与其他算法相比的性能,以及何时应在其他方法之上使用它。

这三种算法(CatBoost、XGBoost 和 LightGBM)评估的基础是梯度提升技术。在继续进行之前,很好地理解梯度提升将非常有用。梯度提升算法有两种类型,分别用于预测连续变量和类别变量,它们是分类器和回归器。

除了自适应提升(Adaboost)之外,此方法还包括基于使用梯度下降优化过程减少弱学习器的差异损失函数来训练学习器。因此,每个学习器都获得权重的相等分布。梯度提升使用串联的决策树作为弱学习器。

由于其顺序构建方式,其中决策树一次添加一个,而不影响已存在的决策树,因此它是一个阶段性加性模型。

梯度提升的主要目标是减少模型的偏差误差。由于其贪婪算法,该算法可以根据偏差方差权衡非常快地过拟合训练数据集。但是,为了减少这种过拟合,可以应用正则化、收缩、树限制和随机梯度提升。

CatBoost 概述

与 XGBoost 和 LightGBM 排序器类似,CatBoost 也具有称为 CatBoostRanking 的排序模式,但 CatBoost 提供比 XGBoost 和 LightGBM 更多强大的版本。差异包括 -

  • 排序 (YetiRank, YetiRankPairwise)

  • 成对 (PairLogit, PairLogitPairwise)

  • 排序 + 分类 (QueryCrossEntropy)

  • 排序 + 回归 (QueryRMSE)

  • 选择前 1 个候选 (QuerySoftMax)

此外,CatBoost 提供排序基准,比较 CatBoost、XGBoost 和 LightGBM 的几种排序变体,例如 -

  • CatBoost:RMSE、QueryRMSE、PairLogit、PairLogitPairwise、YetiRank、YetiRankPairwise

  • XGBoost:reg:linear、xgb-lmart-ndcg、xgb-pairwise

  • LightGBM:lgb-rmse、lgb-pairwise

CatBoost 参数

尽管 XGBoost 和 CatBoost 使用相同的训练参数,但它具有更灵活的参数调整接口。下表提供了这三种提升方法提供的参数的快速比较。

功能 CatBoost XGBoost LightGBM
控制过拟合的参数 learning_rate、depth、l2_reg learning_rate、max_depth、min_child_weight learning_rate、Max_depth、Num_leaves、min_data_in_leaf
处理类别值的参数 cat_features、one_hot_max_size N/A Categorical_feature
控制速度的参数 rsm、iteration colsample_bytree、subsample、n_estimators feature_fraction、bagging_fraction、num_iterations

CatBoost 与 XGBoost 与 LightGBM 的比较

本节将比较算法、特性、性能和速度、过拟合控制参数、速度控制参数和社区支持。因此,请查看下表以了解差异 -

因素 CatBoost XGBoost LightGBM
算法基础 专为类别数据设计,CatBoost 本身可以处理类别特征,无需对其进行预处理。 专注于梯度提升并有效地处理缺失数据。以其在竞赛中的准确性和速度而闻名。 专门用于大型数据集,并通过使用基于直方图的方法加快训练速度,使其能够高效处理大型和稀疏数据集。
处理类别特征 强大的优势,因为它可以使用 cat_features 直接处理类别特征,无需手动转换。 本身不处理类别特征,需要将其转换为数值格式,如独热编码。 支持使用 Categorical_feature 参数的类别特征,但效率不如 CatBoost。
速度和性能 通常比 LightGBM 慢,但在处理类别数据时针对速度和准确性进行了优化。 与 LightGBM 相比速度较慢,但在各种数据集上提供更稳定和准确的结果。 以其速度而闻名,尤其是在大型数据集上。由于其叶节点增长策略,它训练速度更快。
过拟合控制参数 使用 learning_rate、depth 和 l2_reg 等参数避免过拟合。 使用 learning_rate、max_depth 和 min_child_weight 控制过拟合。 使用 learning_rate、Max_depth、Num_leaves 和 min_data_in_leaf 来管理过拟合,并进行精确的树控制。
速度控制参数 rsm 和 iteration 等参数有助于控制模型训练的速度。 可以使用 colsample_bytree、subsample 和 n_estimators 调整速度。 使用 feature_fraction、bagging_fraction 和 num_iterations 控制速度调整。
社区支持 很受欢迎,但与 XGBoost 和 LightGBM 相比,社区规模较小。 非常受欢迎,拥有广泛的社区支持、教程和预构建模型。 在大型任务中因速度而广受欢迎,拥有强大的用户社区。
结论 最适合直接处理类别特征,无需预处理。 非常适合需要准确性的通用任务,而训练时间不是主要问题。 非常适合大型数据集,尤其是在需要快速训练和可扩展性能的情况下。
广告