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

在随机森林的Mllib版本中,有可能使用参数categoricalFeaturesInfo指定具有名义特征(数值但仍然是分类变量)的列
什么是ML随机森林?在使用VectorIndexer的用户指南there is an example中,它也转换了向量中的分类特征,但它写成“自动识别分类特征,并将它们编入索引”

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

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

最佳答案

In the other discussion of the same problem I found that numerical indexes are treated as continuous features anyway in random forest,

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

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

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

转载注明原文:apache-spark – 如何处理Spark中最新的随机森林中的分类功能? - 代码日志