向量距离在数学、物理学、工程学和计算机科学等多个领域都至关重要。它们用于测量物理量、分析数据、识别相似性以及确定向量之间的关系。本文将提供向量距离及其在数据科学中应用的概述。

什么是向量距离?
向量距离,也称为距离度量或相似度度量,是一种数学函数,用于量化两个向量之间的相似性或差异性。这些向量可以代表各种数据集,向量距离有助于理解向量在特征空间中的接近程度或远离程度。因此,向量距离在各种机器学习算法中至关重要,使这些算法能够基于向量之间的关系做出决策。
对于距离的度量,我们可以在几何距离测量和统计距离测量之间进行选择,应该选择哪种距离度量取决于数据的类型。特征可能有不同的数据类型(例如,真实值、布尔值、分类值),数据可能是多维的或由地理空间数据组成。
机器学习中的应用场景
向量距离在机器学习领域中有着广泛的应用场景。
首先,在聚类任务中,向量距离能够帮助将相似向量分组成簇。诸如 k-均值、层次聚类和 DBSCAN 等算法依赖向量距离来确定哪些向量属于同一簇。
在分类任务中,kNN 分类等算法通过计算某向量与其 k 个最近邻向量的距离来确定其分类,从而将该向量分配到其近邻最多的聚类中。在自然语言处理(NLP)中,向量距离被用于计算文档相似度、执行情感分析和对文本文档进行聚类。
在数据预处理步骤中,向量距离对于特征缩放、归一化和去除异常值至关重要,确保数据能够更好地适应机器学习算法。
在神经网络训练中,向量距离作为损失函数或正则化项,鼓励输出向量和目标向量之间保持一定的关系,从而提高模型性能。异常检测任务中,通过测量向量与中心簇或其他向量的距离,可以检测出异常或离群值,这些向量因远离大多数向量而被视为异常。
降维技术如 UMAP 和 t-SNE 利用向量距离在高维数据中创建低维表示,尽可能保持成对距离,帮助数据可视化和理解。
总之,向量距离是许多机器学习任务和应用的基石,选择合适的向量距离对算法的能力及其捕捉向量数据之间关系至关重要。
常见的向量相似度类型
1. 欧氏距离 (Euclidean distance)
欧氏距离度量两个实值向量之间的最短距离。由于其直观,使用简单和对许多用例有良好结果,所以它是最常用的距离度量和许多应用程序的默认距离度量。
欧氏距离也可称为 l2 范数,其计算方法为:

Python 代码如下:
from scipy.spatial import distance
distance.euclidean(vector_1, vector_2)
欧氏距离有两个主要缺点。首先,距离测量不适用于比 2D 或 3D 空间更高维度的数据。第二,如果我们不将特征规范化和/或标准化,距离可能会因为单位的不同而倾斜。
2. 曼哈顿距离 (Manhattan distance)
曼哈顿距离也被称为出租车或城市街区距离,因为两个实值向量之间的距离是根据一个人只能以直角移动计算的。这种距离度量通常用于离散和二元属性,这样可以获得真实的路径。
曼哈顿距离以 l1 范数为基础,计算公式为:

Python 代码如下:
scipy.spatial distance
distance.cityblock(vector_1, vector_2)












