为什么catboost效果很好:魔术背后的工程

catboost在梯度提升方面直接应对长期存在的挑战来脱颖而出 - 如何有效处理分类变量而不会导致目标泄漏。通过引入创新的技术,例如有序的目标统计和有序的提升,并利用遗忘树的结构,Catboost有效地平衡了稳健性和准确性。这些方法可确保每个预测仅使用过去的数据,以防止泄漏,并导致模型既快速又可靠地对现实世界任务。

来源:走向数据科学

是一种基石技术,用于对表格数据进行建模,这是由于其速度和简单性。它带来了出色的结果,没有任何大惊小怪。当您环顾四周时,您会看到多个选项,例如LightGBM,XGBoost等。Catboost就是一种这种变体。在这篇文章中,我们将详细介绍此模型,探索其内部运作方式,并了解是什么使其成为现实世界任务的绝佳选择。

catboost

目标统计

目标编码示例:类别的目标变量的平均值用于替换每个类别。作者的图像

目标编码示例:类别的目标变量的平均值用于替换每个类别

Catboost纸的重要贡献之一是计算目标统计量的新方法。什么是目标统计信息?如果您以前从事过分类变量,那么您会知道,处理分类变量的最基本方法是使用一式式编码。从经验来看,您还会知道,这引入了一罐问题,例如稀疏性,维度的诅咒,内存问题等。尤其是对于具有较高基数的分类变量。

贪婪的目标统计

为了避免单热编码,我们为分类变量计算目标统计量。这意味着我们在分类变量的每个唯一值下计算目标变量的平均值。因此,如果一个分类变量采用值 - a,b,c,那么我们将在所有这些值上计算\(\ text {y} \)的平均值,并将这些值替换为\(\ text {y} \)的平均值。

a b c

听起来不错,对吗?它确实如此,但是这种方法带来了问题,即靶向泄漏。要理解这一点,让我们举一个极端的例子。极端例子通常是解决方法中问题的最简单方法。考虑以下数据集:

分类列Target columna0b1c0d1e0greedy target统计:计算每个唯一类别的平均目标值
分类列塔列 A0 0