在本文中,咱们将仔细研究一个名为CatBoost的梯度加强库。html
在梯度提高中,预测是由一群弱学习者作出的。与为每一个样本建立决策树的随机森林不一样,在梯度加强中,树是一个接一个地建立的。模型中的先前树不会更改。前一棵树的结果用于改进下一棵树。在本文中,咱们将仔细研究一个名为CatBoost的梯度加强库。git
CatBoost 是Yandex开发的深度方向梯度加强库 。它使用遗忘的决策树来生成平衡树。相同的功能用于对树的每一个级别进行左右拆分。github
(CatBoost官方连接:https://github.com/catboost)算法
与经典树相比,遗忘树在CPU上实现效率更高,而且易于安装。bootstrap
在机器学习中处理分类的常见方法是单热编码和标签编码。CatBoost容许您使用分类功能,而无需对其进行预处理。c#
使用CatBoost时,咱们不该该使用一键编码,由于这会影响训练速度以及预测质量。相反,咱们只须要使用cat_features
参数指定分类特征便可 。数组
如下是考虑使用CatBoost的一些缘由:dom
让咱们看一下CatBoost中的经常使用参数:机器学习
loss_function
别名为 objective
-用于训练的指标。这些是回归指标,例如用于回归的均方根偏差和用于分类的对数损失。eval_metric
—用于检测过分拟合的度量。iterations
-待建的树的最大数量,默认为1000。别名是 num_boost_round
, n_estimators
和 num_trees
。learning_rate
别名 eta
-学习速率,肯定模型将学习多快或多慢。默认值一般为0.03。random_seed
别名 random_state
—用于训练的随机种子。l2_leaf_reg
别名 reg_lambda
—成本函数的L2正则化项的系数。默认值为3.0。bootstrap_type
—肯定对象权重的采样方法,例如贝叶斯,贝努利,MVS和泊松。depth
—树的深度。grow_policy
—肯定如何应用贪婪搜索算法。它能够是 SymmetricTree
, Depthwise
或 Lossguide
。 SymmetricTree
是默认值。在中 SymmetricTree
,逐级构建树,直到达到深度为止。在每一个步骤中,以相同条件分割前一棵树的叶子。当 Depthwise
被选择,一棵树是内置一步步骤,直到指定的深度实现。在每一个步骤中,将最后一棵树级别的全部非终端叶子分开。使用致使最佳损失改善的条件来分裂叶子。在中 Lossguide
,逐叶构建树,直到达到指定的叶数。在每一个步骤中,将损耗改善最佳的非终端叶子进行拆分min_data_in_leaf
别名 min_child_samples
—这是一片叶子中训练样本的最小数量。此参数仅与 Lossguide
和 Depthwise
增加策略一块儿使用。max_leaves
alias num_leaves
—此参数仅与Lossguide
策略一块儿使用, 并肯定树中的叶子数。ignored_features
—表示在培训过程当中应忽略的功能。nan_mode
—处理缺失值的方法。选项包括 Forbidden
, Min
,和 Max
。默认值为 Min
。当 Forbidden
使用时,缺失值致使错误的存在。使用 Min
,缺乏的值将做为该功能的最小值。在中 Max
,缺失值被视为特征的最大值。leaf_estimation_method
—用于计算叶子中值的方法。在分类中,使用10 Newton
次迭代。使用分位数或MAE损失的回归问题使用一次 Exact
迭代。多分类使用一次 Netwon
迭代。leaf_estimation_backtracking
—在梯度降低过程当中使用的回溯类型。默认值为 AnyImprovement
。 AnyImprovement
减少降低步长,直至损失函数值小于上次迭代的值。 Armijo
减少降低步长,直到知足 Armijo条件 。boosting_type
—增强计划。它能够plain
用于经典的梯度加强方案,也能够 用于或 ordered
,它在较小的数据集上能够提供更好的质量。score_function
— 分数类型, 用于在树构建过程当中选择下一个拆分。 Cosine
是默认选项。其余可用的选项是 L2
, NewtonL2
和 NewtonCosine
。early_stopping_rounds
—当时 True
,将过拟合检测器类型设置为, Iter
并在达到最佳度量时中止训练。classes_count
—多重分类问题的类别数。task_type
—使用的是CPU仍是GPU。CPU是默认设置。devices
—用于训练的GPU设备的ID。cat_features
—具备分类列的数组。text_features
-用于在分类问题中声明文本列。CatBoost在其实施中使用scikit-learn标准。让咱们看看如何将其用于回归。ide
与往常同样,第一步是导入回归器并将其实例化。
拟合模型时,CatBoost还能够经过设置来使用户可视化 plot=true
:
它还容许您执行交叉验证并使过程可视化:
一样,您也能够执行网格搜索并将其可视化:
在本文中,咱们探讨了CatBoost的优势和局限性以及主要的训练参数。而后,咱们使用scikit-learn完成了一个简单的回归实现。但愿这能够为您提供有关库的足够信息,以便您能够进一步探索它。
《统计学习基础:数据挖掘、推理和预测》-斯坦福大学人工智能学科专用教材