如何在 Spark 中处理最新的随机森林中的分类特征?

Posted

技术标签:

【中文标题】如何在 Spark 中处理最新的随机森林中的分类特征?【英文标题】:How handle categorical features in the latest Random Forest in Spark? 【发布时间】:2018-03-27 08:28:26 【问题描述】:

在随机森林的 Mllib 版本中,可以使用参数 categoricalFeaturesInfo 指定具有名义特征(数字但仍然是分类变量)的列 ML 随机森林是怎么回事?在使用 VectorIndexer 的用户指南there is an example 中也转换了向量中的分类特征,但它写的是“自动识别分类特征并对其进行索引”

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

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

【问题讨论】:

【参考方案1】:

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

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

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

OneHotEncoding 仅适用于线性模型,建议使用for multinomial naive Bayes classifier,尽管不是必需的。

【讨论】:

以上是关于如何在 Spark 中处理最新的随机森林中的分类特征?的主要内容,如果未能解决你的问题,请参考以下文章

Spark Random Forest classifier 随机森林分类

如何在随机森林中使用 Spark 特征重要性?

随机森林与Adaboost

Spark 多类分类示例

随机森林(分类与回归)

spark 随机森林算法案例实战