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


总结

相关推荐
PoplarLittle20 小时前
机器学习学习笔记-鸢尾花案例
机器学习
源码之家20 小时前
计算机毕业设计:Python棉花产业数据可视化与预测系统 Django框架 ARIMA算法 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
人工智能·python·算法·信息可视化·数据挖掘·django·课程设计
QYR-分析21 小时前
重型自动驾驶地面车辆行业洞察:分类、格局与市场机遇
人工智能·机器学习·自动驾驶
源码之家21 小时前
计算机毕业设计:Python农产品智能推荐与可视化分析系统 Flask框架 矩阵分解 数据分析 可视化 协同过滤推荐算法 深度学习(建议收藏)✅
python·矩阵·数据挖掘·数据分析·django·flask·课程设计
惊鸿一博21 小时前
自动驾驶与大模型相关VLA4AD
人工智能·机器学习·自动驾驶
X journey21 小时前
机器学习实践(18.5):特征工程补充
人工智能·算法·机器学习
日光明媚21 小时前
DMD 一步扩散核心原理:从符号定义到梯度推导
人工智能·机器学习·计算机视觉·ai作画·stable diffusion·aigc
jarreyer1 天前
【数据分析风控领域】风控指标记录
数据挖掘·数据分析
Mr数据杨1 天前
不可学习 ImageNet 二分类实战 从图像识别到训练数据投毒防御
学习·机器学习·分类·数据挖掘·数据分析·kaggle
YangYang9YangYan1 天前
大数据时代数据分析的价值与前景
大数据·数据挖掘·数据分析