lightgbm 的叶子数小于一个特征中的类别

数据挖掘 决策树 gbm lightgbm
2022-03-16 14:06:28

我正在查看某人为 Kaggle 比赛发布的笔记本。他们使用 lightgbm 并将叶子数设置为 40。如果我理解正确,那就是对提升中使用的弱学习器(决策树)的大小设置了限制;树的叶子不能超过 40 片。

但是,经过训练,我们看到特征重要性最大的特征是一个分类变量,有 1000+ 个类别!如果曾经在决策树中为该变量使用过一个分支,它是否不一定至少有 1000 多个叶子?

这种情况如何处理?当弱学习器上的叶子数小于其中一个变量内的类别数时?

1个回答

包含分类特征的方法有很多种,其中许多方法是单个叶子可以组合多个类别:

  • 使用标签、目标或频率编码,分类特征有效地替换为数字特征,因此叶子可以自然地包含多个原始类别。相反,任何数字特征都可以被认为是具有无限数量可能值的有序分类特征。
  • 通过散列或二进制编码,为不同类别激活单个位,将它们分组在一起。
  • LightGBM 还原生支持分类特征。如果它们在配置中被标记,LightGBM 将考虑各种方法将给定特征的所有类别划分为两个子集。
  • 如果使用 one-hot 编码,LightGBM 可以通过 Exclusive Feature Bundling (EFB) 算法选择组合多个类别。它在相关问题中进行了讨论。

最后,也有可能在这 1000 多个类别中只有少数是真正重要的(实际上或只是表面上是由于过度拟合)。