【问题标题】:Does it make sense to do vecterindex after stringindex on categorical features?在分类特征的 stringindex 之后做 vecterindex 有意义吗?
【发布时间】:2017-05-18 19:22:29
【问题描述】:

假设我的数据框中有一堆分类字符串列。然后我做下面的变换:


  1. StringIndex 列
  2. 然后我使用 VectorAssembler 将所有转换后的列组装成一个向量特征列
  3. 对新的向量特征列执行 VectorIndexer。

问题:对于第 3 步,是否有意义,还是重复努力?我认为第 1 步已经完成了索引。

【问题讨论】:

  • 根据 spark ml 关于决策树的文档,有一行描述 ml 和 mllib 之间的区别,这里我引用 use of DataFrame metadata to distinguish continuous and categorical features,我认为第 3 步的重要性。跨度>

标签: apache-spark machine-learning


【解决方案1】:

是的,如果您要使用基于 Spark 树的算法(RandomForestClassifier 或 GBMClassifier)并且您具有高基数特性,那么这是有道理的。

例如对于criteo dataset,StringIndexer 会将分类列中的值转换为 1 到 65000 范围内的整数。它将在元数据中保存为 NominalAttribute。然后在 RFClassifier 中,它将extract this from metadata 作为分类特征。

对于基于树的算法,您必须指定 maxBins parameter

在任何分类特征中必须 >= 2 且 >= 类别数。

太高的maxBins 参数会导致性能下降。为了解决这个问题,例如需要使用VectorIndexer.setMaxCategories(64)。这将仅将那些具有

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2017-10-31
    • 1970-01-01
    • 2017-06-29
    • 2011-04-07
    • 2023-01-15
    • 2019-06-13
    相关资源
    最近更新 更多