原文:
www.kdnuggets.com/2023/03/distance-metrics-euclidean-manhattan-minkowski-oh.html
作者提供的图片
如果你对机器学习很熟悉,你会知道数据集中的数据点和随后工程化的特征都是 n 维空间中的点(或向量)。
1. 谷歌网络安全证书 - 快速进入网络安全职业轨道。
2. 谷歌数据分析专业证书 - 提升你的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT 需求
任何两个点之间的距离也反映了它们之间的相似性。监督学习算法如 K 最近邻(KNN)和聚类算法如 K 均值聚类使用距离度量的概念来捕捉数据点之间的相似性。
在聚类中,评估的距离度量用于将数据点分组。而在 KNN 中,该距离度量用于找到与给定数据点最近的 K 个点。
在这篇文章中,我们将回顾距离度量的属性,然后查看最常用的距离度量:欧几里得距离、曼哈顿距离和闵可夫斯基距离。接着我们将介绍如何使用 scipy 模块中的内置函数在 Python 中计算这些距离。
我们开始吧!
在我们学习各种距离度量之前,让我们回顾一下度量空间中任何距离度量应满足的属性 [1]:
如果x和y是度量空间中的两点,则x和y之间的距离应等于y和x之间的距离。
距离应始终为非负值。这意味着它应大于或等于零。
只有当x和y表示同一点时,即x = y,上述不等式才成立(d(x,y) = 0)。
给定三点x、y和z,距离度量应满足三角不等式:
欧几里得距离是度量空间中任意两点之间的最短距离。考虑两个点x和y,它们在二维平面上的坐标分别为 (x1, x2) 和 (y1, y2)。
点x和y之间的欧几里得距离如图所示:
作者提供的图片
这个距离由两个点的相应坐标之间的平方差的和的平方根给出。在数学上,二维平面中点x和y之间的欧几里得距离为:
扩展到 n 维,点x和y的形式为x = (x1, x2, …, xn) 和 y = (y1, y2, …, yn),我们有以下欧几里得距离方程:
文章中提到的欧几里得距离和其他距离度量可以使用 SciPy 中spatial模块的便利函数进行计算。
首先,让我们从 Scipy 的spatial
模块中导入distance
:
from scipy.spatial import distance
然后我们初始化两个点x和y如下:
x = [3,6,9]
y = [1,0,1]
我们可以使用euclidean
便利函数来找到点x和y之间的欧几里得距离:
print(distance.euclidean(x,y))
Output >> 10.198039027185569
曼哈顿距离,也称为出租车距离或城市街区距离,是另一种流行的距离度量。假设你在一个二维平面内,并且只能沿着如图所示的轴移动:
作者提供的图片
点x和y之间的曼哈顿距离由下式给出:
在 n 维空间中,每个点都有 n 个坐标,曼哈顿距离由下式给出:
尽管曼哈顿距离不会给出任何两个给定点之间的最短距离,但在特征点位于高维空间中的应用中,它通常是首选的[3]。
我们保留之前示例中的导入和 x、y:
from scipy.spatial import distance
x = [3,6,9]
y = [1,0,1]
要计算曼哈顿(或城市街区)距离,我们可以使用cityblock
函数:
print(distance.cityblock(x,y))
Output >> 16
以德国数学家赫尔曼·闵可夫斯基 [2] 的名字命名,闵可夫斯基距离在一个规范向量空间中的计算方法为:
很容易看出,当p = 1时,闵可夫斯基距离方程与曼哈顿距离的形式相同:
同样,对于 p = 2,Minkowski 距离等同于欧几里得距离:
让我们计算点 x 和 y 之间的 Minkowski 距离:
from scipy.spatial import distance
x = [3,6,9]
y = [1,0,1]
除了需要计算距离的点(数组)之外,计算距离的 minkowski
函数还需要参数 p
:
print(distance.minkowski(x,y,p=3))
Output >> 9.028714870948003
为了验证当 p = 1 时 Minkowski 距离是否等于曼哈顿距离,我们可以调用 minkowski
函数,将 p
设置为 1:
print(distance.minkowski(x,y,p=1))
Output >> 16.0
让我们还验证一下 p = 2 时的 Minkowski 距离是否等于我们之前计算的欧几里得距离:
print(distance.minkowski(x,y,p=2))
Output >> 10.198039027185569
这就是全部了!如果你熟悉规范向量空间,你应该能看到这里讨论的距离度量与 Lp 范数之间的相似性。欧几里得、曼哈顿和 Minkowski 距离等同于规范向量空间中差异向量的 L2、L1 和 Lp 范数。
本教程到此为止。我希望你现在对常见的距离度量有所了解。下一步,你可以尝试在训练机器学习算法时使用你学到的不同度量。
如果你想开始学习数据科学,可以查看这个学习数据科学的 GitHub 仓库列表。祝学习愉快!
[1] 度量空间,Wolfram Mathworld
[2] Minkowski 距离,维基百科
[3] 高维空间中距离度量的惊人行为,CC Agarwal 等
[4] SciPy 距离函数,SciPy 文档
Bala Priya C 是一名技术写作人员,喜欢创建长篇内容。她的兴趣领域包括数学、编程和数据科学。她通过撰写教程、操作指南等方式与开发者社区分享她的学习成果。