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

Process categorical features when building decision tree models

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

是的,H2O 是为数不多的不需要用户预处理或单热编码(又名 "dummy-encode")分类变量的机器学习库之一。只要您的数据框中的列类型是 "factor"(又名 "enum"),H2O 就会自动知道该做什么。

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

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

如果您对分类变量进行单热编码,您实际上是将一个变量拆分为多个变量,这些变量的值主要为 0(例如稀疏)。正如 Erin 所说,这会使 Trees 表现更差。这是因为 Trees 在每次拆分时使用 "information gain"。稀疏特征(来自单热编码)具有较少的信息增益,因此不如分类特征有用。