首页 文章

如何处理Spark中最新的随机森林中的分类功能?

提问于
浏览
4

在随机森林的Mllib版本中,有可能使用参数 categoricalFeaturesInfo 指定具有名义特征的列(数值但仍然是分类变量)?ML随机森林是什么?在使用VectorIndexer的用户指南there is an example中,也可以转换向量中的分类要素,但是它写的是"Automatically identify categorical features, and index them"

In the other discussion of the same problem我发现无论如何在随机森林中数值索引被视为连续特征,并且建议进行单热编码以避免这种情况,这在该算法的情况下似乎没有意义,特别是考虑到上面提到的官方示例!

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

1 回答

  • 3

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

    这实际上是不正确的 . 树模型(包括 RandomForest )依赖于列元数据来区分分类和数字变量 . 元变换可以由ML变换器(如 StringIndexerVectorIndexer )或added manually提供 . 由 ml 模型内部使用的旧的 mllib 基于RDD的API使用 categoricalFeaturesInfo Map 用于相同目的 .

    Current API只获取元数据并转换为 categoricalFeaturesInfo 所需的格式 .

    仅对线性模型需要 OneHotEncoding ,尽管不是必需的,但建议使用for multinomial naive Bayes classifier .

相关问题