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


总结

相关推荐
AI小云2 天前
【机器学习与实战】回归分析与预测:线性回归-03-损失函数与梯度下降
机器学习
L.fountain2 天前
机器学习shap分析案例
人工智能·机器学习
weixin_429630262 天前
机器学习-第一章
人工智能·机器学习
Cedric11132 天前
机器学习中的距离总结
人工智能·机器学习
寒月霜华3 天前
机器学习-数据标注
人工智能·机器学习
Godspeed Zhao3 天前
自动驾驶中的传感器技术46——Radar(7)
人工智能·机器学习·自动驾驶
limengshi1383923 天前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
救救孩子把3 天前
2-机器学习与大模型开发数学教程-第0章 预备知识-0-2 数列与级数(收敛性、幂级数)
人工智能·数学·机器学习
qingyunliushuiyu3 天前
BI数据可视化:驱动数据价值释放的关键引擎
数据挖掘·数据分析·数据分析系统·数据分析平台·bi数据可视化
HenrySmale3 天前
05 回归问题和分类问题
分类·数据挖掘·回归