趋近智
分类特征,代表着不同的群组或标签,例如‘城市’、‘产品类别’或‘用户类型’,在许多机器学习 (machine learning)数据集中很常见。尽管梯度提升等基于树的模型擅长处理数值数据,但分类特征带来了独特的挑战,需要仔细处理。标准的梯度提升实现通常依赖于预处理技术,这些技术可能导致效率低下或偏差,影响模型性能和泛化能力。下面,我们将审视在将分类数据纳入典型梯度提升流程时遇到的主要问题。
树算法本质上是基于数值阈值来拆分节点(例如,特征值 < 阈值)。因此,分类特征必须首先转换为数值格式。然而,常见的编码方法伴随着明显的缺点。
分类特征,代表着如“城市”、“产品类别”或“用户类型”等不同的组或标签,在许多机器学习 (machine learning)数据集中普遍存在。虽然梯度提升等基于树的模型擅长处理数值数据,但分类特征带来了独特的障碍,需要仔细考量。标准的梯度提升实现通常依赖于预处理技术,这些技术可能会引入低效或偏差,从而影响模型性能和泛化能力。
另一种方法是为每个类别分配一个唯一的整数(例如,‘红色’ -> 0,‘绿色’ -> 1,‘蓝色’ -> 2)。
color_encoded < 1.5)的树分割通常是无意义的,可能导致模型学习到错误的模式,从而降低预测性能。尽管对于具有天然顺序的类别(如‘低’、‘中’、‘高’)有时可以接受,但它通常不适用于标称特征。为避免独热编码的维度问题和标签编码的人为排序,有时会使用基于目标的编码方法。在这种方法中,每个类别被替换为从属于该类别的样本的目标变量中得出的一个统计量。例如,在回归任务中,‘城市A’这样的类别可以被替换为所有位于‘城市A’的训练样本的平均目标值。
虽然存在缓解目标泄露的技术,例如使用保留集或应用平滑,但它们增加了复杂性,并且并非总能完全解决问题。
现象通常涉及特征之间的交互。例如,‘产品类别’对销售的影响可能取决于‘商店位置’。基于树的模型理论上可以通过在不同特征上进行连续分割来捕获交互。然而,发现高阶交互,特别是通过独热编码的多个分类特征之间的交互,可能需要非常深的树,并且可能无法高效或有效地实现。手动创建交互特征是可行的,但这需要专业知识,并可能导致潜在特征的组合式增长。
这些与高基数特征、人为排序、目标泄露以及交互发现相关的挑战,都凸显了在提升算法内部直接处理分类数据需要更高级方法。这种需求促使了 CatBoost 中专门技术的开发,例如有序目标统计和自动特征组合生成,我们将在接下来的部分中对其进行讨论。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•