Spark MLLib:将任意稀疏特征转换为固定长度的 Vector

Spark MLLib: convert arbitrary, sparse features to a fixed length Vector

我们正在将在线机器学习线性回归模型从 Vowpal Wabbit 转换为 Spark MLLib。 Vowpal Wabbit 通过在链表支持的权重上训练模型,允许任意稀疏特征,而 Spark MLLib 在由固定长度数组支持的权重的 MLLib Vector 上训练。

我们传递给模型的特征是任意字符串而不是类别。 Vowpal Wabbit 使用散列将这些特征映射到 1.0 的权重值。我们可以在 MLLib 中进行相同的映射,但仅限于固定长度的数组。是否可以在特征大小 space 未知的 MLLib 中训练这样的模型?

FeatureHasher 将执行此操作,并且是与 Vowpal Wabbit (MurmurHash3) 相同的哈希函数。 VowpalWabbit 和 FeatureHasher 的默认特征数均为 2^18

https://spark.apache.org/docs/2.3.1/api/java/org/apache/spark/ml/feature/FeatureHasher.html