万字总结CatBoost原理、核心参数以及调优思路(上篇)

万字总结CatBoost原理、核心参数以及调优思路(上篇)

文章目录


一、CatBoost算法简介

CatBoost,全称Categorical Boosting,是由俄罗斯搜索引擎公司Yandex开发的一种高效的梯度提升决策树(Gradient Boosting Decision Trees, GBDT)算法(与XGBoost一样,也是拟合二阶泰勒展开)。CatBoost于2018年由Liudmila Prokhorenkova, Gleb Gusev, Aleksandr Vorobev, Anna Veronika Dorogush和Andrey Gulin通过论文形式正式发布,一经推出便引起了机器学习领域的广泛关注。CatBoost因其在处理类别特征(categorical features)方面的卓越表现,以及其高效、准确的特性,迅速成为集成学习算法中的一颗新星。

与传统GBDT算法相比,CatBoost在模型训练层面进行了多项创新优化。特别是在处理类别特征时,CatBoost引入了基于排序的目标编码(order-based target encoding)方法,避免了常见的类别特征高维问题和过拟合风险。此外,CatBoost使用了对称树(Symmetric Trees)结构,使得模型训练和预测更加高效,同时降低了内存消耗。

CatBoost还具有处理数据偏序问题的独特能力,能够在训练数据中有效防止目标泄漏(target leakage),这在许多实际应用场景中是一个重要的优势。此外,CatBoost内置了多种损失函数,支持回归、分类和排序任务,并提供了丰富的特征重要性评估方法,便于用户进行特征解释和筛选。

从实践层面来看,CatBoost不仅在处理类别特征的数据集上表现优异,而且在许多其他场景下也表现出色。CatBoost支持分布式计算和GPU加速,能够高效处理大规模数据。

总的来说,CatBoost是一种功能多样且预测精度位于第一梯队的集成学习算法,凭借其创新的类别特征处理方法和高效的计算性能,成为机器学习实践中不可或缺的重要工具。CatBoost的推出不仅丰富了GBDT算法的家族,也为处理复杂的数据提供了强大的支持。

CatBoost的官方项目地址:https://catboost.ai/

CatBoost的GitHub地址:https://github.com/catboost

CatBoost快速调用流程

python 复制代码
# 安装CatBoost
pip install catboost

需要注意的是,CatBoost并没有区分sklearn API和原生API,CatBoost调用过程中核心使用的就是CatBoostClassifier API(分类问题)和CatBoostRegressor API(回归问题),这两个主模型API既可以和sklearn API无缝集成,同时也支持一些特定的功能,如GPU加速、以及可以使用自定义数据封装工具pool API进行数据压缩和推理加速等。
CatBoost快速使用代码

二、CatBoost模型API与模型基本原理

CatBoost模型核心参数

1、离散特征编码方法:Order-based Target Encoding

Order-based Target Encoding是CatBoost处理类别特征的一种独特方法,它在保持数据泄漏风险最小化的同时,有效地利用了类别特征的信息。这种方法通过有序的目标编码来处理类别特征,具体实现如下。

在目标编码中,我们使用类别特征的目标变量统计信息(如均值)来代替类别特征的值。Order-based Target Encoding是一种目标编码的变种,它通过对数据进行排序,并在计算过程中引入伪随机数以避免目标泄漏。

Order-based Target Encoding执行流程

Order-based Target Encoding执行流程

2、CatBoost叶节点权重估计方法

在GBDT和XGB的基础上,CatBoost在叶节点权重估计同时融入了GBDT和XGB的叶节点计算公式,并将其命名为Newton 和 Gradient,其中 Gradient梯度法就是GBDT的叶节点权重计算公式,即直接使用损失函数的梯度来更新叶节点的权重,在每次迭代中,通过计算损失函数对当前预测值的梯度,将梯度累加到叶节点的权重上,从而更新叶节点的权重,表达式为
CatBoost叶节点权重估计方法

3、CatBoost分裂增益计算方法

有了叶节点的分裂增益计算方法,分裂增益的计算方法也不难推导。在CatBoost中,代表分裂增益的参数为score_function,根据官方描述,该参数可选的参数Cosine、L2、NewtonCosine和NewtonL2,而这几种不同的分裂增益计算公式如下:
CatBoost分裂增益计算方法

4、CatBoost中决策树的生长策略

CatBoost中决策树的生长策略

5、CatBoost的模型收缩

CatBoost的模型收缩

三、CatBoost模型API调用方法进阶

CatBoost模型API调用方法进阶 实现代码

CatBoost pool API使用方法

CatBoost pool API使用方法

CatBoost cv API使用方法

CatBoost也提供了类似于LightGBM中的lgb.cv方法的交叉验证功能,通过cv函数来实现。cv函数允许在指定的参数范围内执行交叉验证,以评估模型的性能,并帮助选择最佳参数设置。
CatBoost cv参数与使用代码


总结

相关推荐
无难事者若执1 小时前
新手村:逻辑回归-理解03:逻辑回归中的最大似然函数
算法·机器学习·逻辑回归
达柳斯·绍达华·宁1 小时前
自动驾驶04:点云预处理03
人工智能·机器学习·自动驾驶
IT从业者张某某1 小时前
机器学习-04-分类算法-03KNN算法案例
算法·机器学习·分类
补三补四1 小时前
k近邻算法K-Nearest Neighbors(KNN)
人工智能·机器学习
databook2 小时前
线性判别分析(LDA):降维与分类的完美结合
python·机器学习·scikit-learn
慕丹2 小时前
虫洞数观系列三 | 数据分析全链路实践:Pandas清洗统计 + Navicat可视化呈现
python·mysql·数据挖掘·数据分析·pandas
硅谷秋水2 小时前
大语言模型智体的综述:方法论、应用和挑战(下)
人工智能·深度学习·机器学习·语言模型·自然语言处理
林泽毅3 小时前
SwanLab Slack通知插件:让AI训练状态同步更及时
深度学习·机器学习·强化学习
Shockang4 小时前
机器学习的一百个概念(5)数据增强
人工智能·机器学习