使用MLib的Apache Spark中的分类变量

时间:2015-04-01 00:05:22

标签: scala apache-spark apache-spark-mllib

我对Apache Spark的世界相对较新。我正在尝试使用LinearRegressionWithSGD()来估计一个大型模型,我想估计固定效果和交互项,而不必创建一个巨大的设计矩阵。

我注意到DecisionTree中有一个支持分类变量的实现

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/tree/DecisionTree.scala#L293

创建从字符串到整数的哈希映射并将其提供给模型。有没有人在Spark中尝试过类似的线性模型练习?

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用One-Hot encoding将分类变量转换为可以输入线性回归模型的特征空间。

例如,如果您的分类变量的值为:Low,Medium,High,则可以使用以下三种不同的整数功能对其进行编码:

Category    Low Medium High
Low         1   0      0
Medium      0   1      0
High        0   0      1

这只是一种方法,还有其他方法,但如果你的分类值不是太大,One-Hot编码很合适。

答案 1 :(得分:0)

我一直在研究这个问题。我的估计有很多类别,所以在输入MLlib之前创建整个设计矩阵是非常低效的。我试图修改Spark源代码,以便在梯度下降内运行SGD时展开行。完成后我会发布解决方案。