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


总结

相关推荐
面包狗AI4S3 小时前
GitHub AI4S 项目观察(2026-09-07—2026-09-13)
人工智能·深度学习·机器学习
宣宣猪的小花园.5 小时前
【机器学习】过拟合与泛化:模型为什么会“刷题很强、实战失灵”
人工智能·算法·机器学习
hqyjzsb6 小时前
规划工商管理大学成长:搭建四层能力体系,重视高阶的 AI 能力建设
开发语言·人工智能·python·microsoft·职场和发展·数据挖掘·业界资讯
江畔柳前堤7 小时前
On-Policy Distillation 全景深潜
人工智能·网络协议·目标检测·http·机器学习·chatgpt·重构
精益数智工坊7 小时前
云计算环境元数据是什么意思?云计算元数据管理怎么做?
大数据·人工智能·数据挖掘·数据可视化
Q26433650238 小时前
【有i源码】基于大数据的城市交通流量与出行特征可视化分析平台-基于Hadoop的城市交通拥堵关联规则与异常检测研究
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·数据可视化
IT毕设实战小研9 小时前
基于大数据的人工智能社交媒体情绪分析与可视化的设计与实现
大数据·信息可视化·数据挖掘·数据分析·课程设计
尘世中一位迷途小书童10 小时前
我为什么在 Windows 上做了一个翻译软件:SnapLingo
前端·人工智能·机器学习
别动我齐刘海10 小时前
ROS2 Jazzy + C++ 实战路线——基础学习1
c++·vscode·python·ubuntu·机器学习·自动驾驶·github
2601_9603563810 小时前
类目运营岗位技能图谱:SQL、Excel、BI与商品运营场景
数据挖掘