机器学习:CatBoost模型(高级版)——高效且强大的树形模型
作为梯度提升决策树(GBDT)家族的一员,CatBoost具有高效、精确和低调参的特点,广泛应用于分类、回归等任务。CatBoost的核心原理与传统的GBDT相似,但它通过一些创新的方法来提升效率和处理类别特征的能力,尤其是对类别特征的处理。与XGBoost 和 LightBMG一样,都是目前被主流的树形模型,CatBoost 有自己独特的优势。
基于 GBDT 的框架
GBDT是一种集成学习方法,它通过不断训练新的树来拟合前一轮的残差。每棵树都试图减少预测误差。算法的核心是通过优化一个损失函数来最小化误差,常见的损失函数包括均方误差(MSE)或对数损失等。
GBDT 的基本原理可以参考文章A。若要深入了解CatBoost的实现原理,可以先看看XGBoost这篇文章,再来看该本文章,他们都利用了二阶泰勒展开的梯度和二阶海森矩阵来近似计算,但在其它某些方面,他们还是有很大的差别。
CatBoost的创新点与特点
(1) 均值编码 与 Ordered Boosting
在传统的机器学习算法中,类别特征通常通过两种常见的方法进行处理:
-
独热编码:将每一个类别特征值转化为一个二进制向量,表示类别的存在与否。
-
目标编码:将类别特征的每个类别用该类别的目标变量均值替代。例如,回归问题中可能使用全部数据中每个类别的目标均值来代替类别C
然而,独热编码在处理类别特征时可能会导致维度爆炸,尤其是在类别非常多的情况下。而目标编码方法容易导致 数据泄露,即在模型训练时使用了测试集信息,从而引发过拟合。
CatBoost 通过引入 均值编码 和 Ordered Boosting 技术来处理类别特征,避免了过拟合和数据泄露问题。具体来说,CatBoost 对每个类别特征采用了一种基于 累计统计量 的编码方式。
CatBoost的均值编码:
-
假设类别特征 C 有 k 个类别 c1,c2,...,ck,每个类别 ci 对应一个均值编码。对于类别 ci,CatBoost 在计算其均值时,并不会使用整个数据集中的信息,而是根据训练过程中的顺序,避免使用测试数据的标签信息,从而避免数据泄露。
-
具体来讲,我们在对第 i 个样本的类别特征C进行编码使,我们使用的是前 i−1 个样本中同类别(类别与ci相同)的目标值均值对 ci 进行编码,避免使用 i-1 之后的样本。
有序提升(Ordered Boosting):
CatBoost 在处理连续特征时,还采用了一种叫做 有序提升(Ordered Boosting) 的技术,来避免数据泄露和过拟合。
在传统的梯度提升方法中,每次分裂计算时都会使用整个训练集的梯度和目标值。然而,在有序提升方法中,CatBoost 确保在训练过程中计算的每个分裂点增益时,只有当前样本之前的数据才参与计算。这意味着在每次增益计算时,只使用 历史样本的梯度信息,而不是当前分裂点的数据,这有助于防止数据泄露和过拟合。
-
历史数据的使用:当选择分裂点时,CatBoost 不会使用当前树的所有数据(包括当前样本),而是只使用到当前样本之前的数据。这确保了训练过程中的信息不会泄漏到模型的未来预测中。
-
增益计算时的有序性:在每次分裂时,CatBoost 会基于 历史数据 的梯度和二阶海森矩阵来计算增益,确保每次分裂点的选择是“无未来数据”的。
(2) 对称树结构
CatBoost 使用 对称树结构来构建每一棵决策树,这是其与其他树形模型的一个显著区别。其他树形模型使用非对称树结构,即每棵树的每个节点都可以有不同的分裂方式和深度。相比之下,CatBoost 的对称树结构确保每一层的所有节点都采用相同的分裂规则,从而提高了训练效率并减少了计算复杂度。具体来讲,对称树结构要求同一层必须使用相同的分裂特征和分裂条件。
CatBoost 的主要优势
1. 对类别特征的处理
-
CatBoost的一个显著优势是其在处理类别特征时的表现。与XGBoost和LightGBM相比,CatBoost能够自动识别并有效处理类别特征,而无需进行复杂的预处理或手动编码(如独热编码或标签编码)。这意味着对于包含大量类别变量的数据集,CatBoost的使用更加便捷且更具优势。
-
XGBoost和LightGBM通常需要对类别特征进行编码(如独热编码、标签编码等),这可能导致模型训练的时间增加,且在某些情况下编码不当可能影响模型性能。
2. 算法的稳定性和精度
CatBoost使用一种被称为“ordered boosting”的技术,它通过顺序地处理样本来减少偏差,从而改善模型的稳定性和预测的精度。相比之下,XGBoost和LightGBM虽然也非常强大,但它们在某些情况下可能更容易出现过拟合,尤其是在数据特征复杂或噪声较多的情况下。
3. 超参数调优的简便性
CatBoost在超参数调优上相对较为简便,因为它在默认参数下通常能获得不错的性能,减少了对参数调节的需求。相比之下,XGBoost和LightGBM可能需要更多的参数调优,以获得最佳的性能,尤其是在不同数据集上的表现差异较大时。
4. 内存和计算效率
这个要具体情况具体分析,涉及大规模数据集还是小规模数据集,是否是稀疏数据集等。
三大主流模型对比
# 文章内容来源于各渠道整理。若对大噶有帮助的话,希望点个赞支持一下叭!
# 文章如有错误,欢迎大噶指正!