返回

超详细好懂的min-hash算法介绍[四]

人工智能

在上一节中,我们提到将矩阵按行打乱排序是一个计算复杂度相当高的操作。因此,我们要将min-hash算法投入实际应用,就必须要找出另一种哈希函数来替代打乱排序的操作,作为新的最小哈希操作来得到哈希签名。

一种新的最小哈希操作

我们希望找到的哈希函数要满足以下条件:

  • 它应该是一个单射函数,即不同的输入应输出不同的哈希值。
  • 它应该是一个高效的函数,即它的计算成本应很低。
  • 它应该是一个稳定的函数,即对输入的微小改动只会导致哈希值发生微小的改动。

经过研究,我们发现了一种满足这些条件的哈希函数,称为随机投影

随机投影

随机投影是一种将高维数据投影到低维空间的技术。它使用一个随机矩阵将高维数据点投影到低维空间中。

假设我们有一个 n 维数据点 x,我们可以使用一个 m x n 的随机矩阵 A 将其投影到一个 k 维空间中:

y = A * x

其中,y 是 k 维投影向量。

随机投影之所以被称为随机,是因为随机矩阵 A 中的元素是从正态分布或均匀分布中随机生成的。

随机投影作为最小哈希操作

我们可以使用随机投影作为 min-hash 算法中的最小哈希操作。具体来说,我们可以将矩阵的每一行视为一个数据点,并使用随机投影将其投影到一个低维空间中。然后,我们可以取投影后的每一行的最小值作为该行的哈希签名。

优点

使用随机投影作为最小哈希操作具有以下优点:

  • 它比打乱排序的计算成本要低得多。
  • 它可以将高维数据投影到低维空间中,这可以减少存储和计算成本。
  • 它可以保留数据中的相似性,这对于近似最近邻搜索和聚类等任务非常有用。

缺点

使用随机投影作为最小哈希操作也有一些缺点:

  • 它不是一个完美的哈希函数,即不同的输入有时可能会输出相同的哈希值。
  • 它需要使用随机数生成器,这可能会引入一些不确定性。

应用

min-hash 算法在实际应用中非常有用,包括:

  • 近似最近邻搜索
  • 聚类
  • 文档相似性检测
  • 图模式匹配

示例

为了演示 min-hash 算法的实际应用,让我们考虑一个简单的示例。假设我们有一个包含以下文档的文档集合:

文档 1:这是一个关于 min-hash 算法的文档。
文档 2min-hash 算法是一种用于近似最近邻搜索的算法。
文档 3min-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 算法可以有效地计算文档之间的相似性。