6

在随机森林的 Mllib 版本中,可以使用参数categoricalFeaturesInfo What's about the ML Random Forest?在用户指南中有一个使用 VectorIndexer 的示例,它也可以转换向量中的分类特征,但它写的是“自动识别分类特征并对其进行索引”

在同一问题的另一个讨论中,我发现数字索引在随机森林中无论如何都被视为连续特征,建议进行一次热编码以避免这种情况,这在该算法的情况下似乎没有意义,并且特别是上面提到的官方例子!

我还注意到,当分类列中有很多类别(> 1000)时,一旦使用 StringIndexer 对它们进行索引,随机森林算法会要求我设置 MaxBin 参数,该参数应该与连续特征一起使用。这是否意味着超过 bin 数量的特征将被视为连续的,正如官方示例中指定的那样,因此 StringIndexer 对于我的分类列是可以的,还是意味着具有数字仍然名义特征的整个列将是假设变量是连续的?

4

1 回答 1

6

在对同一问题的另一个讨论中,我发现数字索引在随机森林中无论如何都被视为连续特征,

这实际上是不正确的。树模型(包括RandomForest)依赖于列元数据来区分分类变量和数值变量。元数据可以由 ML 转换器(如StringIndexerVectorIndexer)提供或手动添加。模型内部使用的旧mllib的基于 RDD 的 API 用于相同的目的。mlcategoricalFeaturesInfo Map

当前 API只获取元数据并转换为categoricalFeaturesInfo.

OneHotEncoding仅对线性模型是必需的,虽然不是必需的,但对于多项式朴素贝叶斯分类器是推荐的。

于 2017-10-15T23:03:16.417 回答