我知道特征哈希是一种将特征向量化的技术;它在机器学习中非常常见。我仍然对如何在发生碰撞时跟踪词频感到困惑。让我们按照Luis Argerich在这个链接中给出的例子来进行说明。
假设你的文本是:“the quick brown fox”,并且假设你有以下哈希函数:
h(the) mod 5 = 0h(quick) mod 5 = 1h(brown) mod 5 = 1h(fox) mod 5 = 3
你的最终向量将是:(1,2,0,1,0)
现在假设你的文本是:“the quick brown fox quick quick quick quick”,那么最终向量将是:(1,6,0,1,0)
我的问题是,我如何知道“brown”只出现了一次,而“quick”出现了5次?我如何跟踪这些信息?
回答:
我的问题是,我如何知道“brown”只出现了一次,而“quick”出现了5次?我如何跟踪这些信息?
你做不到。这就是哈希的全部技巧。它统一了一些东西,丢失了信息,以便你能获得其他好处。如果你想跟踪所有信息,你应该只使用词袋模型,而不是哈希。
另一种选择是更复杂的哈希方法,比如在LSH技术中使用的那些方法,它们使用一系列哈希函数来重建最终的相似性,通过展示给定足够大的哈希函数样本,它会收敛到真正的相似性。