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
样本的第
个属性记为
。其估计值
可考虑用样本中该特征在该属性下目标值的平均值替代,即
对于低频的类别,该估计下训练集和测试集差异可能较大。因此,增加一个先验值使得取值平滑。
,其中
为参数,
一般设定为target的目标值。
这种TS在计算时利用了
,因此存在了目标泄漏的问题,会导致
在训练集的分布与测试集不同。
此时,可以对的估计公式进行修正,常用的方法是
,即从样本中将第
个样本排除,再计算TS:
(1)
Holdout TS
这种方法是将训练集数据划分为两部分,一分部根据前述(1)式用于计算TS,一部分用于模型训练。
这种方法未能充分利用所有的训练集数据进行模型训练和TS值的计算。
Leave-one-out TS
这种方法在计算TS和训练模型时以作为训练集,以
作为测试集。
在原论文中,作者指出这一TS并不能防止目标泄露。
ordered TS
对于样本的一个排列,其中第
个样本的排序记为
,记
,并据此按前述公式(1)计算样本的TS值。取
用来计算测试集的TS。
CatBoost对梯度增强的不同步骤使用不同的排列。
3.2 预测偏移
在原论文中,揭示了在梯度提升的过程中存在的预测偏移的问题。
预测偏移来自两个方面。一方面,训练样本梯度的条件分布与测试样本梯度的条件分布的不一致,可能会产生偏移;另一方面,在弱分类器迭代的过程中,用样本值近似计算可能会产生偏移。二者的最终影响可能会导致预测偏移。
在原文中,作者针对回归模型证明了预测偏移的存在,并给出了这种情况下的具体偏差。
3.3 有序提升法
基于预测偏移的存在,原文提出了有序提升算法(ordered boosting)。假设有无数个独立的训练集,则可以实现模型在新的训练样本上的无偏移残差。然而训练样本是有限的,这使得模型训练似乎成为不可能。原文指出可以利用ordered TS构建的样本训练模型。
对于样本的一个排列,ordered TS构建的样本:
,利用这些样本训练模型并进行迭代。这种模型训练方法称为有序提升算法。
4. 有序提升的实现
对于样本的一个排列,通过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对于缺失值和异常值具有较好的鲁棒性,能够处理噪声和不完整的数据。