万字总结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参数与使用代码


总结

相关推荐
格林威26 分钟前
C#图像分块处理:图像按行或按块(Tile)切分,多个 CPU 核心同时处理不同的区域
开发语言·图像处理·人工智能·机器学习·计算机视觉·c#·工业相机
Sinclair42 分钟前
从神经网络到文件加密:一次关于 SIREN、ARX 与密码安全性的实验探索
人工智能·机器学习
单友人1 小时前
HMHA-RYST 算法技能包 + 聊天记录导出器
人工智能·神经网络·机器学习·语言模型·自动化
宣宣猪的小花园.1 小时前
【控制理论】系统为什么会“有记忆”:从输入输出理解动态过程
人工智能·嵌入式硬件·机器学习
小小测试开发2 小时前
RAG评测:把忠实度、检索命中率、噪声敏感度做成可回归的流水线
人工智能·数据挖掘·回归·kotlin
liliangcsdn2 小时前
skewness收益偏度取负因子背后逻辑的探索
人工智能·算法·机器学习
雷帝木木2 小时前
DVC数据版本控制实战:让训练数据像代码一样可追溯
人工智能·python·深度学习·机器学习
AI棒棒牛2 小时前
YOLO26最新创新改进系列:Dirichlet 分类证据 + DER 连续框不确定性,独家超强创新!
人工智能·分类·数据挖掘
叠层归一研究院3 小时前
缝合维度:时空3+1结构的拓扑起源
人工智能·算法·机器学习·agi
故七月3 小时前
生成式引擎优化(GEO)的底层逻辑与产业实践
大数据·人工智能·机器学习