趋近智
在上一节中,我们学习了向量范数,它提供了一种测量单个向量的大小或“长度”的方法。这项内容是理解两个向量在向量空间中“相距多远”的基本原理。计算向量间的距离是机器学习中一项频繁的操作,常用于衡量表示为向量的数据点之间的相似性或差异性。
考虑一个简单的分类任务:根据其特征(如词频)识别新邮件是否为垃圾邮件。新邮件和现有邮件可以表示为高维空间中的向量。为了对新邮件进行分类,可以在这个空间中找到与它“最近”的现有邮件。这个思想是诸如 k-近邻(k-NN)等算法中一项主要思想。类似地,聚类算法根据数据点彼此的接近程度对它们进行分组。
在向量空间中,两个向量 u 和 v 之间的距离通常被定义为它们差向量 u−v 的范数。正如可以使用各种范数来测量单个向量的长度一样,也有相应的方法来测量两个向量之间的距离。
测量两个向量之间距离的最常用方法是欧几里得距离,它源自 L2 范数。它表示由特征空间中向量定义的点之间的直线距离。如果 u=(u1,u2,...,un) 和 v=(v1,v2,...,vn),则欧几里得距离 d2(u,v) 为:
d2(u,v)=∣∣u−v∣∣2=∑i=1n(ui−vi)2
这本质上是推广到多个维度的勾股定理。如果您可以实际绘制向量,这就是您会用尺子测量的距离。
另一种有用的距离度量方式是曼哈顿距离(也称为城市街区距离或出租车距离),它源自 L1 范数。它通过累加向量分量的绝对差值来测量距离。设想在一个城市网格中穿行,您只能沿着水平或垂直街道移动;曼哈顿距离就是总的行进距离。
d1(u,v)=∣∣u−v∣∣1=∑i=1n∣ui−vi∣
在处理高维空间或具有不同单位或比例的特征时,曼哈顿距离有时比欧几里得距离更受青睐,因为它对单个维度中大的差异的敏感度较低(欧几里得距离会对差异进行平方处理)。
考虑二维空间中的两个向量,u=(2,5) 和 v=(6,2)。
欧几里得距离(蓝线)是直线路径。曼哈顿距离(橙色路径)沿网格线,累加水平和垂直部分。
欧几里得距离是 d2(u,v)=(6−2)2+(2−5)2=42+(−3)2=16+9=25=5。 曼哈顿距离是 d1(u,v)=∣6−2∣+∣2−5∣=∣4∣+∣−3∣=4+3=7。
NumPy 使计算这些距离变得简单。我们用于向量范数的 numpy.linalg.norm 函数可以直接计算差向量的范数。
import numpy as np
# 定义两个向量 (作为NumPy数组)
u = np.array([2, 5])
v = np.array([6, 2])
# 计算差向量
difference = u - v
print(f"差向量 (u - v): {difference}") # 输出: [-4 3]
# 计算欧几里得 (L2) 距离
l2_distance = np.linalg.norm(difference) # 默认范数为 L2
# 或者: np.linalg.norm(difference, ord=2)
print(f"欧几里得 (L2) 距离: {l2_distance}") # 输出: 5.0
# 计算曼哈顿 (L1) 距离
l1_distance = np.linalg.norm(difference, ord=1)
print(f"曼哈顿 (L1) 距离: {l1_distance}") # 输出: 7.0
# 高维向量的例子
feature_vec1 = np.array([0.1, 1.5, -2.3, 0.8])
feature_vec2 = np.array([0.3, 1.0, -2.0, 1.1])
diff_features = feature_vec1 - feature_vec2
l2_dist_features = np.linalg.norm(diff_features)
l1_dist_features = np.linalg.norm(diff_features, ord=1)
print(f"\n特征向量 1: {feature_vec1}")
print(f"特征向量 2: {feature_vec2}")
print(f"特征之间的欧几里得距离: {l2_dist_features:.4f}")
print(f"特征之间的曼哈顿距离: {l1_dist_features:.4f}")
理解如何计算向量之间的距离对许多机器学习任务非常重要:
通过将数据表示为向量并使用距离度量,我们可以定量分析数据点之间的关系,使算法能够学习模式、做出预测并有效地对信息进行分组。欧几里得、曼哈顿或其他距离度量之间的选择通常取决于具体问题、数据的性质以及特征空间的维度。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造