spark - MLlib:转换和管理分类功能

时间:2015-11-27 17:24:21

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

对于具有2bil +样本和每个样本约100个特征的大数据集。其中,10%的功能是数字/连续变量,其余的是categorical variables(位置,语言,网址等)。 我们来看一些例子:

  • 例如:虚拟分类特征

    功能:Position

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

...会像SVD那样有意义地使用减少,因为距离在sud:north>之间。 sud:center,此外,它可以编码(例如OneHotEncoderStringIndexer)这个变量,因为它的值基集的基数很小。

  • 例如:真正的分类特征

    功能:url

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

1)在MLlib中,90%的模型仅使用数值(Frequent Itemset和DecisionTree技术的一部分)

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

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

b)您是否有suggestions来应对这些绝对的价值观?

c)在阅读了大量的文献,并计算了火花中实施的模型,我的想法,关于使用其他(分类)推断其中一个特征,第1点的模型可能是最好的利基。你觉得怎么样?

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

鉴于我是MLlib的新手,请问您提供一个具体的例子? 提前致谢

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

如果您遇到的问题是在将分类功能编写为虚拟变量后(请注意,现在所有这些都是数字),您有很多功能,并且您希望减少功能的空间,那么则是另一个问题。

作为一个规则,我首先尝试利用整个特征空间,现在是一个加号,因为在火花计算能力允许你使用大数据集运行建模任务,如果它太大,那么我会去降维技术, PCA等...