二维特征推荐推理的Spark Hashing TF功能

时间:2018-07-11 21:11:45

标签: apache-spark tf-idf

根据https://spark.apache.org/docs/2.3.0/ml-features.html#tf-idf

“ HashingTF利用了哈希技巧。通过应用哈希函数将原始特征映射到索引(项)。这里使用的哈希函数是MurmurHash3。” ... “由于使用散列值的简单模来确定向量索引,因此建议使用2的幂作为特征维,否则特征将不会均匀地映射到向量索引。” < / p>

我试图理解为什么使用2的幂作为特征维会均匀地映射单词,并试图在互联网上找到一些有用的文档来理解它,但是两次尝试都没有成功。

有人为什么使用幂次幂将两个单词均匀地映射到矢量索引上?

1 个答案:

答案 0 :(得分:1)

哈希函数的输出为b位,即,存在2^b个可以将特征哈希到的可能值。此外,我们假设2^b可能的值均匀地随机出现。

如果d是要素维,则将要素f的索引确定为hash(f) MOD d。同样,hash(f)采用2^b可能的值。很容易看出,d本身必须是2的幂(即2^b的除数),才能保持均匀性

作为反例,请考虑2位哈希函数和3维特征空间。根据我们的假设,哈希函数输出0、1、2或3的概率分别为1/4。但是,采用mod 3会导致0的概率为 1/2 ,或者1或2的概率为 1/4 。因此,不能保持均匀性。另一方面;如果特征空间是二维的,则很容易看到结果为0或1,概率分别为1/2。