CatBoost算法的一些说明

1. CatBoost算法简介

CatBoost算法(Categorical Boosting)作为梯度提升算法的一种,是继XGBoost、LightGBM算法之后的又一GBDT改进算法,由俄罗斯Yandex公司在2018年开源。论文《CatBoost: unbiased boosting with categorical features》详细讲解了该算法。

从CatBoost算法的命名可以看出,其特色在于能非常好地处理类别特征。在GBDT、XGBoost的梯度提升算法中,均不能直接支持类别特征。LightGBM虽能支持类别特征,但是在类别特征的处理上与CatBoost相比逊色较多。CatBoost的ordered TS方法,有效解决了类别特征的预测偏移问题。

2.CatBoost算法的主要知识点

(1)类别特征的处理

(2)预测偏移

(3)有序提升法

(4)有序提升的实现

3.CatBoost算法主要知识点的说明

3.1 类别特征的处理

类别特征的处理方法一般有独热编码(one-hot encoding)和目标统计(target statistics)、LabelEncoder等。比较常见的是one-hot编码和目标统计。

3.1.1 one-hot encoding

独热编码即 one-hot 编码,又称一位有效编码,根据属性的个数形成一个多维度的编码,每个属性作为一个维度给予一个状态编码(0或1)。在任意时候,一个样本仅有一维度的状态编码非0。

当特征的属性较多时,one-hot编码会形成大量的新特征,而造成维度灾难,并且会产生很多稀疏值的特征。

因此,one-hot 编码在不适合处理属性较多的分类特征。

3.1.2 Target Statistics

Target statistics是将特征的属性转化为目标统计量,用目标统计量来替代分类特征的取值。在论文中,作者介绍了三种Greedy TS目标统计量,分别为:Holdout TS、Leave-one-out TS、Ordered TS。指出了前两种目标统计量的不足,并指出了其构造的ordered TS的优势。下面分别说明这几种目标统计量。

Greedy TS

样本x_{k},k=1,2,...,n的第i个属性记为x_{k}^{i}。其估计值\hat{x}_{k}^{i}可考虑用样本中该特征在该属性下目标值的平均值替代,即

\hat{x}_{k}^{i}=\frac{\sum_{j=1}^{n}I(x_{j}^{i}=x_{k}^{i})*y_{j}}{\sum_{j=1}^{n}I(x_{j}^{i}=x_{k}^{i})}

对于低频的类别,该估计下训练集和测试集差异可能较大。因此,增加一个先验值p使得取值平滑。

\hat{x}_{k}^{i}=\frac{\sum_{j=1}^{n}I(x_{j}^{i}=x_{k}^{i})*y_{j}+ap}{\sum_{j=1}^{n}I(x_{j}^{i}=x_{k}^{i})+a},其中a为参数,p一般设定为target的目标值。

这种TS在计算x_{k}^{i}时利用了y_{k},因此存在了目标泄漏的问题,会导致x^{i}|y在训练集的分布与测试集不同。

此时,可以对x_{k}^{i}的估计公式进行修正,常用的方法是D_{k}=D-\left \{ x_{k} \right \},即从样本中将第k个样本排除,再计算TS:

\hat{x}_{k}^{i}=\frac{\sum_{x_{j}\in D_{k}}^{}I(x_{j}^{i}=x_{k}^{i})*y_{j}+ap}{\sum_{x_{j}\in D_{k}}^{}I(x_{j}^{i}=x_{k}^{i})+a}              (1)

Holdout TS

这种方法是将训练集数据划分为两部分,一分部根据前述(1)式用于计算TS,一部分用于模型训练。

这种方法未能充分利用所有的训练集数据进行模型训练和TS值的计算。

Leave-one-out TS

这种方法在计算TS和训练模型时以D_{k}=D-\left \{ x_{k} \right \}作为训练集,以D作为测试集。

在原论文中,作者指出这一TS并不能防止目标泄露。

ordered TS

对于样本的一个排列\sigma,其中第k个样本的排序记为\sigma \left ( k \right ),记D_{k}=\left \{ x_{j}:\sigma (j)<\sigma (k) \right \},并据此按前述公式(1)计算样本的TS值。取D_{k}=D用来计算测试集的TS。

CatBoost对梯度增强的不同步骤使用不同的排列。

3.2 预测偏移

在原论文中,揭示了在梯度提升的过程中存在的预测偏移的问题。

预测偏移来自两个方面。一方面,训练样本梯度的条件分布与测试样本梯度的条件分布的不一致,可能会产生偏移;另一方面,在弱分类器迭代的过程中,用样本值近似计算可能会产生偏移。二者的最终影响可能会导致预测偏移。

在原文中,作者针对回归模型证明了预测偏移的存在,并给出了这种情况下的具体偏差。

3.3 有序提升法

基于预测偏移的存在,原文提出了有序提升算法(ordered boosting)。假设有无数个独立的训练集,则可以实现模型在新的训练样本上的无偏移残差。然而训练样本是有限的,这使得模型训练似乎成为不可能。原文指出可以利用ordered TS构建的样本训练模型。

对于样本的一个\sigma排列,ordered TS构建的样本:D_{k}=\left \{ x_{j}:\sigma (j)<\sigma (k) \right \},k=2,...,n,利用这些样本训练模型并进行迭代。这种模型训练方法称为有序提升算法。

4. 有序提升的实现

对于样本的一个\sigma排列,通过ordered TS方法计算每个样本的TS值。然后,通过ordered boosting进行模型训练。对于ordered boosting,有两种模式:plain和ordered。

plain模式是在标准的GBDT算法中内嵌了ordered TS操作,而ordered模式则是对有序提升算法过程的改进。

4.1 ordered boosting基本思路

以下是论文中关于ordered boosting模型实现的基本思路。

4.2 CastBoost算法构建一棵树

以下是论文中关于CastBoost算法构建一棵树的示意图。

在论文中,作者给出了正式的算法图。在正式的算法图中,作者给出了详细的算法过程,并对算法进行了优化。

5.CatBoost算法的优点

1、CatBoost算法有着强大的类别特征处理能力。CatBoost算法支持类别特征,且无需要任何预处理。

2、采用了ordered boosting,在支持类别特征的同时,又解决了预测偏移的问题。

3、CatBoost算法使用的基本预测器是对称决策树。对称意味着在树的整个层次上使用相同的分割标准。这样的树是平衡的,不容易过度拟合,并允许在测试时显著加快执行速度。

4、CatBoost具有很强的鲁棒性。CatBoost对于缺失值和异常值具有较好的鲁棒性,能够处理噪声和不完整的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值