Apache spark 二维特征维推荐推理的Spark-Hashing-TF能力

Apache spark 二维特征维推荐推理的Spark-Hashing-TF能力,apache-spark,tf-idf,Apache Spark,Tf Idf,根据: “HashingTF使用哈希技巧。原始功能通过应用哈希函数映射到索引(术语)。此处使用的哈希函数为哈希3。” ... 由于散列值上的简单模用于确定向量索引,建议使用2的幂作为特征维数,否则特征将无法均匀映射到向量索引 我试图理解为什么使用二的幂作为特征维度会均匀地映射单词,并试图在互联网上找到一些有用的文档来理解它,但两次尝试都没有成功 有人知道或有有用的资料说明为什么使用二次幂将单词均匀地映射到向量索引吗?散列函数的输出是b-位,也就是说,有2^b可能的值可以对特征进行散列。此外,我们

根据:

“HashingTF使用哈希技巧。原始功能通过应用哈希函数映射到索引(术语)。此处使用的哈希函数为哈希3。” ... 由于散列值上的简单模用于确定向量索引,建议使用2的幂作为特征维数,否则特征将无法均匀映射到向量索引

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

有人知道或有有用的资料说明为什么使用二次幂将单词均匀地映射到向量索引吗?

散列函数的输出是
b
-位,也就是说,有
2^b
可能的值可以对特征进行散列。此外,我们假设
2^b
可能的值均匀随机出现

如果
d
是特征维度,则特征
f
的索引确定为
hash(f)MOD d
。同样,
hash(f)
接受
2^b
可能的值。很容易看出,
d
必须是二的幂(即
2^b
的除数),才能保持一致性

作为反例,考虑2位散列函数和三维特征空间。根据我们的假设,哈希函数以1/4的概率输出0、1、2或3。然而,采用mod 3会导致概率1/2为0,或者概率1/4为1或2。因此,无法保持一致性。另一方面如果特征空间是二维的,很容易看出结果是0或1,概率各为1/2