对于具有2bil +样本和每个样本约100个特征的大数据集。其中,10%的功能是数字/连续变量,其余的是categorical variables
(位置,语言,网址等)。
我们来看一些例子:
例如:虚拟分类特征
功能:Position
real values: SUD | CENTRE | NORTH
encoded values: 1 | 2 | 3
...会像SVD
那样有意义地使用减少,因为距离在sud:north>之间。 sud:center,此外,它可以编码(例如OneHotEncoder
,StringIndexer
)这个变量,因为它的值基集的基数很小。
例如:真正的分类特征
功能: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
来应对这些绝对的价值观?
(为了标准化一个经典用例,你可以想象使用访问过的网址和其他分类特征来推断一个人的性别的问题。)
鉴于我是MLlib的新手,请问您提供一个具体的例子? 提前致谢
答案 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等...