机器学习中的距离度量

在机器学习领域,距离度量是聚类算法的核心。它们用于计算数据点之间的相似度或距离,并决定是否可以将它们聚类在一起。本文将介绍机器学习中的四种距离度量,并探讨它们在Python中的实现方式。

目标

理解机器学习中各种距离度量的用例。

了解机器学习中不同类型的距离度量。

学习距离度量在数据挖掘中的重要性。

目录

  • 什么是距离度量?
  • 机器学习中的距离度量类型
  • 欧几里得距离
  • 曼哈顿距离
  • 闵可夫斯基距离
  • 汉明距离
  • 结论
  • 常见问题解答

什么是距离度量?

距离度量是多种机器学习算法的关键部分。它们在监督学习和无监督学习中用于计算数据点之间的相似度。有效的距离度量可以提高机器学习模型性能,无论是用于分类任务还是聚类。

例如,可以使用聚类算法如K-Means聚类或k-最近邻算法(knn),后者使用最近邻来解决分类或回归问题。如何定义不同观测值之间的相似度?如何说两个点彼此相似?如果它们的特征相似,那么它们就会在距离上更接近。

因此,可以计算点之间的距离,然后定义它们的相似度。这里有一个价值百万的问题:如何计算这个距离,机器学习中有哪些不同的距离度量?这些度量对于不同的学习问题是否不同?否为此使用任何特殊定理?这些都是将在本文中回答的问题。

机器学习中的距离度量类型

让现在看看机器学习中不同类型的距离度量。

  • 欧几里得距离
  • 曼哈顿距离
  • 闵可夫斯基距离
  • 汉明距离

让从机器学习中最常用的距离度量——欧几里得距离开始。

欧几里得距离

欧几里得距离表示两个向量之间的最短距离。它是对应元素差异平方和的平方根。

欧几里得距离度量对应于向量和向量空间之间的L2范数。余弦相似度与两个向量的点积成正比,与它们大小的乘积成反比。

大多数机器学习算法,包括K-Means,都使用这种距离度量来衡量观测值之间的相似度。假设有两个点,如下所示:

# 导入库 from scipy.spatial import distance # 定义点 point_1 = (1, 2, 3) point_2 = (4, 5, 6) # 计算欧几里得距离 euclidean_distance = distance.euclidean(point_1, point_2) print('欧几里得距离:', euclidean_distance)

以上是如何在Python中计算两点之间的欧几里得距离。现在让了解第二种距离度量——曼哈顿距离。

曼哈顿距离

曼哈顿距离是所有维度上点之间的绝对差异之和。

# 计算曼哈顿距离 manhattan_distance = distance.cityblock(point_1, point_2) print('曼哈顿距离:', manhattan_distance)

曼哈顿距离也被称为城市街区距离。SciPy有一个cityblock函数,返回两点之间的曼哈顿距离。

闵可夫斯基距离

闵可夫斯基距离是欧几里得距离和曼哈顿距离的一般形式。

# 计算闵可夫斯基距离 minkowski_distance = distance.minkowski(point_1, point_2, 3) print('闵可夫斯基距离:', minkowski_distance)

闵可夫斯基距离度量的SciPy中的p参数代表范数的阶数。当阶数(p)为1时,它将代表曼哈顿距离;当阶数为2时,它将代表欧几里得距离。

汉明距离

# 计算汉明距离 hamming_distance = distance.hamming('1011101', '1001001') print('汉明距离:', hamming_distance)
  • 距离度量用于监督学习和无监督学习中计算数据点的相似度。
  • 机器学习中的距离度量可以提高性能,无论是用于分类任务还是聚类
  • 机器学习中的四种距离度量是欧几里得距离、曼哈顿距离、闵可夫斯基距离和汉明距离。
Q1. L1和L2距离度量是什么?
L1是向量的绝对值之和。L2范数是向量值平方和的平方根。
Q2. KNN中使用哪些距离度量?
KNN分类器中使用欧几里得距离、余弦相似度度量、闵可夫斯基、相关性和卡方。
Q3.聚类中的距离度量是什么?
距离度量是大多数算法,如K-Means和KNN,用于聚类的。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485