乐趣区

关于算法:你听过-CatBoost-吗本文教你如何使用-CatBoost-进行快速梯度提升

在本文中,咱们将认真钻研一个名为 CatBoost 的梯度加强库。


在梯度晋升中,预测是由一群弱学习者做出的。与为每个样本创立决策树的随机森林不同,在梯度加强中,树是一个接一个地创立的。模型中的先前树不会更改。前一棵树的后果用于改良下一棵树。在本文中,咱们将认真钻研一个名为 CatBoost 的梯度加强库。

CatBoost 是 Yandex 开发的深度方向梯度加强库。它应用忘记的决策树来生成均衡树。雷同的性能用于对树的每个级别进行左右拆分。

(CatBoost 官网链接:https://github.com/catboost)

与经典树相比,忘记树在 CPU 上实现效率更高,并且易于装置。

解决分类特色

在机器学习中解决分类的常见办法是单热编码和标签编码。CatBoost 容许您应用分类性能,而无需对其进行预处理。

应用 CatBoost 时,咱们不应该应用一键编码,因为这会影响训练速度以及预测品质。相同,咱们只须要应用 cat_features 参数指定分类特色即可。

应用 CatBoost 的长处

以下是思考应用 CatBoost 的一些起因:

  • CatBoost 容许在多个 GPU 上训练数据。
  • 应用默认参数能够提供很好的后果,从而缩小了参数调整所需的工夫。
  • 因为缩小了适度拟合,因而进步了精度。
  • 应用 CatBoost 的模型应用程序进行疾速预测。
  • 经过训练的 CatBoost 模型能够导出到 Core ML 进行设施上推理(iOS)。
  • 能够在外部解决缺失值。
  • 可用于回归和分类问题。

训练参数

让咱们看一下 CatBoost 中的罕用参数:

  • loss_function 别名为 objective - 用于训练的指标。这些是回归指标,例如用于回归的均方根误差和用于分类的对数损失。
  • eval_metric —用于检测适度拟合的度量。
  • iterations - 待建的树的最大数量,默认为 1000。别名是 num_boost_roundn_estimatorsnum_trees
  • learning_rate 别名 eta - 学习速率,确定模型将学习多快或多慢。默认值通常为 0.03。
  • random_seed 别名 random_state —用于训练的随机种子。
  • l2_leaf_reg 别名 reg_lambda —老本函数的 L2 正则化项的系数。默认值为 3.0。
  • bootstrap_type —确定对象权重的采样办法,例如贝叶斯,贝努利,MVS 和泊松。
  • depth —树的深度。
  • grow_policy —确定如何利用贪心搜索算法。它能够是 SymmetricTreeDepthwiseLossguideSymmetricTree 是默认值。在中 SymmetricTree,逐级构建树,直到达到深度为止。在每个步骤中,以雷同条件宰割前一棵树的叶子。当 Depthwise 被抉择,一棵树是内置一步步骤,直到指定的深度实现。在每个步骤中,将最初一棵树级别的所有非终端叶子离开。应用导致最佳损失改善的条件来决裂叶子。在中 Lossguide,逐叶构建树,直到达到指定的叶数。在每个步骤中,将损耗改善最佳的非终端叶子进行拆分
  • min_data_in_leaf 别名 min_child_samples —这是一片叶子中训练样本的最小数量。此参数仅与 LossguideDepthwise 增长策略一起应用。
  • max_leaves alias num_leaves —此参数仅与 Lossguide 策略一起应用,并确定树中的叶子数。
  • ignored_features —示意在培训过程中应疏忽的性能。
  • nan_mode —解决缺失值的办法。选项包含 ForbiddenMin,和 Max。默认值为 Min。当 Forbidden 应用时,缺失值导致谬误的存在。应用 Min,短少的值将作为该性能的最小值。在中 Max,缺失值被视为特色的最大值。
  • leaf_estimation_method —用于计算叶子中值的办法。在分类中,应用 10 Newton 次迭代。应用分位数或 MAE 损失的回归问题应用一次 Exact 迭代。多分类应用一次 Netwon 迭代。
  • leaf_estimation_backtracking —在梯度降落过程中应用的回溯类型。默认值为 AnyImprovementAnyImprovement 减小降落步长,直至损失函数值小于上次迭代的值。Armijo 减小降落步长,直到满足 Armijo 条件。
  • boosting_type —增强打算。它能够 plain 用于经典的梯度加强计划,也能够 用于或 ordered,它在较小的数据集上能够提供更好的品质。
  • score_function — 分数类型,用于在树构建过程中抉择下一个拆分。Cosine 是默认选项。其余可用的选项是 L2NewtonL2NewtonCosine
  • early_stopping_rounds —过后 True,将过拟合检测器类型设置为,Iter 并在达到最佳度量时进行训练。
  • classes_count —多重分类问题的类别数。
  • task_type —应用的是 CPU 还是 GPU。CPU 是默认设置。
  • devices —用于训练的 GPU 设施的 ID。
  • cat_features —具备分类列的数组。
  • text_features - 用于在分类问题中申明文本列。

回归示例

CatBoost 在其施行中应用 scikit-learn 规范。让咱们看看如何将其用于回归。

与平常一样,第一步是导入回归器并将其实例化。

拟合模型时,CatBoost 还能够通过设置来使用户可视化 plot=true

它还容许您执行穿插验证并使过程可视化:

同样,您也能够执行网格搜寻并将其可视化:

结尾

在本文中,咱们探讨了 CatBoost 的长处和局限性以及次要的训练参数。而后,咱们应用 scikit-learn 实现了一个简略的回归实现。心愿这能够为您提供无关库的足够信息,以便您能够进一步摸索它。

往期精彩链接:

《统计学习根底: 数据挖掘、推理和预测》- 斯坦福大学人工智能学科专用教材

退出移动版