catboost算法及参数说明

catboost回归

catboost有一下三个的优点:

  • 它自动采用特殊的方式处理类别型特征(categorical features)。首先对categorical features做一些统计,计算某个类别特征(category)出现的频率,之后加上超参数,生成新的数值型特征(numerical features)。这也是我在这里介绍这个算法最大的motivtion,有了catboost,再也不用手动处理类别型特征了。
  • catboost还使用了组合类别特征,可以利用到特征之间的联系,这极大的丰富了特征维度
  • catboost的基模型采用的是对称树,同时计算leaf-value方式和传统的boosting算法也不一样,传统的boosting算法计算的是平均数,而catboost在这方面做了优化采用了其他的算法,这些改进都能防止模型过拟合
def catboost_regressor(pool_train,pool_valid):
    """
    catboost回归法
    """
    params = {
        'iterations': 300,
        'learning_rate': 1,
        'depth': 10,
        'loss_function': 'RMSE'
    }
    clf = CatBoostRegressor(**params)
    # 直接训练
    clf.fit(
        pool_train,
        eval_set=pool_valid,
        plot=True
    )
    print("model.get_all_params():")
    print(clf.get_all_params())
    return clf

# 其中训练集、测试集计算方法如下:
   pool_train = cb.Pool(data=Xtrain, label=Ytrain, cat_features=cate_cols)
   pool_valid = cb.Pool(data=Xvalid, label=Yvalid, cat_features=cate_cols)
CatBoost中的常用参数:
  • 根误差和用于分类的对数损失。
  • 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 -用于在分类问题中声明文本列。

你可能感兴趣的:(数据挖掘,算法,机器学习,深度学习)