你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

kNN 与 ANN

矢量搜索算法的两个主要类别是 k-最近邻 (kNN) 和近似最近邻(ANN,不要与人工神经网络混淆)。 kNN 很精确,但是计算量很大,不太适合大型数据集。 另一方面,ANN 提供了准确性和效率之间的平衡,使其更适合大规模应用程序。

kNN 的工作原理

  1. 矢量化:数据集中的每个数据点都表示为多维空间中的一个向量。
  2. 距离计算:若要对新数据点(查询点)进行分类,该算法使用距离函数计算查询点与数据集中所有其他点之间的距离。
  3. 查找邻域:该算法根据计算出的距离确定与查询点最近的 k 个数据点(邻域)。 k 的值(邻域的数量)至关重要。 较小的 k 对噪声可能很敏感,而较大的 k 可以平滑处理细节。
  4. 作出预测:
  • 分类:对于分类任务,kNN 将类标签分配给在 k 邻域中最常见的查询点。 本质上,它执行“多数投票”。
  • 回归:对于回归任务,kNN 将查询点的值预测为 k 邻域值的平均值(有时为加权平均值)。

ANN 的工作原理

  1. 矢量化:数据集中的每个数据点都表示为多维空间中的一个向量。
  2. 索引编制和数据结构:ANN 算法使用高级数据结构(例如 KD 树、局部敏感哈希或基于图形的方法)为数据点编制索引,从而加快搜索速度。
  3. 距离计算:ANN 算法不是计算与每个点的确切距离,而是使用试探法快速确定可能包含最近邻域的空间区域。
  4. 查找邻域:该算法确定一组可能接近查询点的数据点。 这些邻域不能保证是确切的最近点,但对于实际目的来说足够接近了。
  5. 作出预测:
  • 分类:对于分类任务,ANN 将类标签分配给确定的邻域中最常见的查询点,类似于 kNN。
  • 回归:对于回归任务,ANN 将查询点的值预测为确定的邻域值的平均值(或者加权平均值)。