超详细好懂的min-hash算法介绍[四]
2024-02-27 16:16:33
在上一节中,我们提到将矩阵按行打乱排序是一个计算复杂度相当高的操作。因此,我们要将min-hash算法投入实际应用,就必须要找出另一种哈希函数来替代打乱排序的操作,作为新的最小哈希操作来得到哈希签名。
一种新的最小哈希操作
我们希望找到的哈希函数要满足以下条件:
- 它应该是一个单射函数,即不同的输入应输出不同的哈希值。
- 它应该是一个高效的函数,即它的计算成本应很低。
- 它应该是一个稳定的函数,即对输入的微小改动只会导致哈希值发生微小的改动。
经过研究,我们发现了一种满足这些条件的哈希函数,称为随机投影 。
随机投影
随机投影是一种将高维数据投影到低维空间的技术。它使用一个随机矩阵将高维数据点投影到低维空间中。
假设我们有一个 n 维数据点 x,我们可以使用一个 m x n 的随机矩阵 A 将其投影到一个 k 维空间中:
y = A * x
其中,y 是 k 维投影向量。
随机投影之所以被称为随机,是因为随机矩阵 A 中的元素是从正态分布或均匀分布中随机生成的。
随机投影作为最小哈希操作
我们可以使用随机投影作为 min-hash 算法中的最小哈希操作。具体来说,我们可以将矩阵的每一行视为一个数据点,并使用随机投影将其投影到一个低维空间中。然后,我们可以取投影后的每一行的最小值作为该行的哈希签名。
优点
使用随机投影作为最小哈希操作具有以下优点:
- 它比打乱排序的计算成本要低得多。
- 它可以将高维数据投影到低维空间中,这可以减少存储和计算成本。
- 它可以保留数据中的相似性,这对于近似最近邻搜索和聚类等任务非常有用。
缺点
使用随机投影作为最小哈希操作也有一些缺点:
- 它不是一个完美的哈希函数,即不同的输入有时可能会输出相同的哈希值。
- 它需要使用随机数生成器,这可能会引入一些不确定性。
应用
min-hash 算法在实际应用中非常有用,包括:
- 近似最近邻搜索
- 聚类
- 文档相似性检测
- 图模式匹配
示例
为了演示 min-hash 算法的实际应用,让我们考虑一个简单的示例。假设我们有一个包含以下文档的文档集合:
文档 1:这是一个关于 min-hash 算法的文档。
文档 2:min-hash 算法是一种用于近似最近邻搜索的算法。
文档 3:min-hash 算法还可以用于聚类和文档相似性检测。
我们可以使用 min-hash 算法来计算这些文档之间的相似性。具体来说,我们可以使用随机投影将每个文档投影到一个 10 维空间中,然后取投影后的每一行的最小值作为该文档的哈希签名。
得到以下哈希签名:
文档 1:-2, 5, 1, -3, 7, -1, 0, 9, 4, 2
文档 2:-3, 4, 2, -1, 8, 0, -2, 10, 3, 1
文档 3:-1, 3, 0, -2, 9, 1, -3, 11, 2, 0
我们可以使用这些哈希签名来计算文档之间的余弦相似性。余弦相似性是一种衡量两个向量相似性的度量,其范围为 0(不相似)到 1(完全相似)。
得到以下余弦相似性:
文档 1 与文档 2:0.92
文档 1 与文档 3:0.85
文档 2 与文档 3:0.88
这个示例表明,min-hash 算法可以有效地计算文档之间的相似性。