【问题标题】:spark - MLlib: transform and manage categorical featuresspark - MLlib:转换和管理分类特征
【发布时间】:2016-03-01 22:37:07
【问题描述】:

对于包含 20 亿个以上样本和每个样本大约 100 多个特征的大型数据集。其中,你拥有的 10% 的特征是数字/连续变量,其余的是 categorical variables(位置、语言、url 等)。 让我们举一些例子:

  • 例如:虚拟分类特征

    特征:Position

        real values:     SUD | CENTRE | NORTH
        encoded values:   1  |    2   |   3  
    

...会像SVD 一样减少使用,因为sud:north > sud:centre 之间的距离,此外,由于基数小,可以编码(例如OneHotEncoderStringIndexer)这个变量它的值集。

  • 例如:真实的分类特征

    特征:url

        real values:     very high cardinality
        encoded values:  ????? 
    

1) 在MLlib中,90% 的模型只使用数值(频繁项集和决策树技术的一部分)

2) 特征transformers/reductor/extractor 作为 PCA 或 SVD 不适合这类数据,并且没有实现(例如)MCA

a) 您的approach 可以在 spark 中处理此类数据,还是使用 Mllib?

b) 你有任何suggestions 来处理这么多分类值吗?

c) 在阅读了很多文献并计算了 spark 中实现的模型之后,我的想法是,关于使用其他特征(分类)对其中一个特征进行推断,第 1 点的模型可能是最好的模型。你怎么看?

(为了标准化一个经典用例,您可以想象使用访问过的 url 和其他分类特征来推断一个人的性别的问题)。

鉴于我是 MLlib 的新手,我可以请你提供一个具体的例子吗? 提前致谢

【问题讨论】:

  • 也看看ML,说不定有什么有用的。

标签: apache-spark pca feature-selection apache-spark-mllib svd


【解决方案1】:

好吧,首先我要说的是 stackoverflow 以不同的方式工作,你应该提供一个工作示例来解决你面临的问题,我们会帮助你使用这个示例。

无论如何,我对使用分类值很感兴趣,例如您显示为位置的分类值。如果这是您提到的 3 个 SUD、CENTRE、NORTH 级别的分类值,那么如果它们是真正分类的,则它们之间没有距离。从这个意义上说,我会创建虚拟变量,例如:

       SUD_Cat  CENTRE_Cat  NORTH_Cat 
SUD      1         0           0
CENTRE   0         1           0
NORTH    0         0           1

这是分类变量的真正虚拟表示。

另一方面,如果您想考虑该距离,则必须创建另一个明确考虑该距离的特征,但这不是虚拟表示。

如果您面临的问题是在您将分类特征编写为虚拟变量(请注意,现在它们都是数字变量)之后,您有很多特征并且您想减少特征的空间,那么这是一个不同的问题。

根据经验,我首先尝试利用整个特征空间,现在有了一个优势,因为 Spark 计算能力允许您使用大数据集运行建模任务,如果它太大,我会使用降维技术,主成分分析等...

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 2017-03-24
    • 2016-12-03
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2016-06-13
    • 2016-09-04
    相关资源
    最近更新 更多