[学习笔记]机器学习——算法及模型(六):Catboost

本文介绍了CatBoost,一个由Yandex开源的机器学习库,擅长处理类别型特征的梯度提升算法。文章详细阐述了CatBoost处理类别型特征的原理,包括Greedy Target Statistics、Holdout TS、Leave-one-out TS和Ordered TS方法。同时,解释了如何通过Ordered boosting解决prediction shift问题,以及在实际操作中如何构建和选择树节点值。此外,还提及了CatBoost在处理特征组合上的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Catboost是什么?

CatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库,是Categorical Features(类别型特征)+Gradient Boosting(梯度提升) ,也是基于梯度提升决策树的机器学习框架。

大多数流行的梯度提升算法利用决策树作为基本预测器。对于数值型特征使用决策树很方便,但是实际中,许多数据集包括类别型特征,这些特征对预测也很重要。类别型特征具有离散的值,比如省份名(山东,山西,河北等),城市名(北京,上海,南京等)。梯度提升算法中处理这类特征的最常用的方法就是在学习之前,也就是数据预处理阶段,将这些特征的值转换为数字。一般类别型特征会转化为一个或多个数值型特征(one-hot编码等)。

而Catboost从名字就可以看出:可以很好的处理类别型特征的梯度提升算法,该算法的改进之处就在于在学习的时候处理这些特征,而不是在数据预处理阶段,不需要任何显式的预处理来将类别转换为数字。

二、Catboost 的原理

Catboost引入了两个关键的算法改进——实现了有序提升,排列驱动以代替经典算法和用于处理分类特征的创新算法。这些方法旨在解决prediction shift(普遍存在于梯度提升算法中)。

2.1、类别型特征

一种有效的处理类别特征的方法就是:使用一个计算出的数值(target statistic (TS))来代替,即第 k k k个训练样本的第 i i i个类别特征( x k i x_k^i xki),通常根据类别条件估计预期目标y,表达式为: x ^ k i = E ( y ∣ x i = x k i ) \hat{x}_k^i = E(y|x^i = x_k^i) x^ki=E(yxi=xki)

2.1.1、Greedy TS

在决策树中,标签平均值将作为节点分裂的标准。这种方法被称为 Greedy Target Statistics , 简称 Greedy TS,用公式来表达就是:
x ^ k i = ∑ j = 1 n I { x j i = x k i } ⋅ y j ∑ j = 1 n I { x j i = x k i } \hat{x}_k^i = \frac{\sum_{j=1}^nI_{\{x_j^i=x_k^i\}}\cdot y_j} {\sum_{j=1}^nI_{\{x_j^i = x_k^i\}}} x^ki=j=1nI{ xji=xki}j=1nI{ xji=xki}yj
这里的 I I IIverson brackets(指示函数),即括号里的两个相等时取1,否则取0:
{ x j i = x k i } = { x j i = x k i 1 o t h e r w i s e 0 \{x_j^i = x_k^i\}=\begin{cases} x_j^i=x_k^i &1\\ otherwise &0 \end{cases} { xji=xki}={ xji=xkiotherwise10
如果某个标称值 x k i x_k^i xki,只有一条记录的时候,则这个标称值转换成数字后就等于该记录的标签值。这样的处理过程,显然会造成过拟合。
对于这样的低频类别来说是有噪声的,通常用一些先验值p来平滑它:

x ^ k i = ∑ j = 1 n I { x j i = x k i } ⋅ y j + a ⋅ P ∑ j = 1 n I { x j i = x k i } + a \hat{x}_k^i = \frac{\sum_{j=1}^nI_{\{x_j^i=x_k^i\}}\cdot y_j+a\cdot P} {\sum_{j=1}^nI_{\{x_j^i = x_k^i\}}+a} x^ki=j=1nI{ xji=xki}+aj=1nI{ xji=x

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值