在构建决策树模型时处理分类特征

Posted

技术标签:

【中文标题】在构建决策树模型时处理分类特征【英文标题】:Process categorical features when building decision tree models 【发布时间】:2017-11-09 13:46:48 【问题描述】:

我使用 H2O 来构建 GBM、DRF 和 DL 等分类模型。 我拥有的数据集包含一些分类列,如果我想将它们用作构建模型的特征,是否需要手动将它们转换为虚拟变量?我读到 GBM 可以在内部对分类变量进行虚拟化?

【问题讨论】:

【参考方案1】:

是的,H2O 是少数不需要用户对分类变量进行预处理或一次性编码(又名“虚拟编码”)的机器学习库之一。只要数据框中的列类型是“因子”(又名“枚举”),那么 H2O 就会自动知道要做什么。

特别是,H2O 允许在随机森林或 GBM 等基于树的方法中直接使用分类变量。基于树的算法能够本地使用分类数据,通常这会导致比单热编码更好的性能。在 GLM 或深度学习中,H2O 将在后台自动对分类进行一次热编码——无论哪种方式,您都不需要进行任何预处理。如果您想要更多控制,可以使用categorical_encoding 参数控制自动编码的类型。

【讨论】:

【参考方案2】:

恕我直言,能够直接在树算法中处理分类变量是 H2O 的巨大优势。

如果你对一个分类变量进行 one-hot 编码,你实际上是取了一个变量并将它们分成几个值主要为 0 的变量(例如稀疏)。正如 Erin 所说,这会使 Trees 的表现更差。这是因为树在每次拆分时都使用“信息增益”。稀疏特征(来自 one-hot 编码)的信息增益较少,因此不如分类特征有用。

【讨论】:

以上是关于在构建决策树模型时处理分类特征的主要内容,如果未能解决你的问题,请参考以下文章

在尝试评估决策树回归模型时测试分数 NaN

如何获得具有预处理和分类步骤的决策树管道的特征重要性?

统计学习方法 李航 决策树

《统计学习方法》--决策树

《统计学习方法》--决策树

决策树 – 分类