在机器学习领域,距离度量是聚类算法的核心。它们用于计算数据点之间的相似度或距离,并决定是否可以将它们聚类在一起。本文将介绍机器学习中的四种距离度量,并探讨它们在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)