对于距离来说在机器学习中用的最多的就是聚类算法ClusteringClustering以各种距离为根据判断两条数据是否为同一类。1. 欧几里得距离我们从最常见的距离测量开始即欧几里得距离。这是一种距离测量最好的解释是连接两点的线段的长度。这个公式相当简单因为距离是利用毕达哥拉斯定理从平面坐标两点的计算出来的。1.1. 缺点尽管它是一种常见的距离测量方法但欧氏距离不是尺度内变异的这意味着计算出的距离可能是倾斜的这取决于特征的单位。通常情况下在使用这种距离测量方法之前人们需要将数据标准化。此外随着数据维度的增加欧氏距离的作用就越小。这与 维度诅咒 有关即高维空间的作用并不像我们直观地从二维或三维空间期望的那样。关于一个很好的总结见这个帖子。1.2. 使用案例当你有低维数据并且测量矢量的大小是很重要的情况欧氏距离就很好用。如果在低维数据上使用欧氏距离KNN 和 HDBSCAN 等方法就会显示出很好的结果。尽管已经开发了许多其他的测量方法来说明欧氏距离的缺点但它仍然是最常用的距离测量方法之一原因很充分。它使用起来非常直观实现起来也很简单而且在许多使用案例中展现出很好的效果。2. 余弦相似性余弦相似性经常被用来抵消欧氏距离的高维问题。余弦相似性只是两个向量之间的角度的余弦。如果这两个向量被归一化为长度为1它也有相同的内积。两个方向完全相同的向量的余弦相似度为1而两个截然相反的向量的相似度为-1。注意它们的大小并不重要因为这是一个方向的测量。2.1. 缺点余弦相似性的一个主要缺点是不考虑向量的大小只考虑其方向。在实践中这意味着数值的差异没有被充分考虑。以推荐系统为例余弦相似性没有考虑到不同用户之间的评分标准的差异。2.2. 使用案例当我们有高维数据并且向量的大小不重要时我们经常使用余弦相似性。对于文本分析来说当数据是由字数表示的时候这种测量方法是很经常使用的。例如当一个词在一个文件中比另一个文件出现得更频繁时这并不一定意味着一个文件与这个词更相关。可能是文件的长度不均匀计数的大小就不那么重要了。那么我们最好使用余弦相似度它不需要考虑大小。3. Hamming距离Hamming距离是两个向量之间不同的值的数量。它通常用于比较两个等长的二进制字符串。它也可用于字符串通过计算彼此不同的字符数来比较它们之间的相似程度。3.1. 缺点显然当两个向量的长度不相等时Hamming距离很难使用。你会想把相同长度的向量相互比较以了解哪些位置不匹配。此外只要它们不同或相等它就不考虑实际值。因此当幅度是一个重要的衡量标准时不建议使用这种距离衡量标准。3.2. 使用案例典型的用例包括当数据通过计算机网络传输时的错误纠正/检测。它可以用来确定二进制字中失真的比特数作为估计错误的一种方法。此外你也可以用Hamming距离来测量分类变量之间的距离。4. 曼哈顿距离曼哈顿距离通常称为出租车距离或城市街区距离计算实值向量之间的距离。想象一下向量描述的是统一网格上的物体如棋盘。那么曼哈顿距离是指两个向量之间的距离如果它们只能直角移动的话。在计算距离时不涉及对角线运动。4.1. 缺点尽管曼哈顿距离对于高维数据来说似乎还不错但它是一个不如欧氏距离那么直观的度量尤其是在高维数据中使用时。此外它更有可能给出一个比欧氏距离更高的距离值因为它不可能是最短的路径。这不一定会产生问题但你应该考虑到这一点。4.2. 使用案例当你的数据集有离散和/或二进制属性时曼哈顿似乎很好用因为它考虑到了在这些属性值中实际可能采取的路径。以欧氏距离为例它可以在两个向量之间建立一条直线而在现实中这可能并不可行。5. 切比雪夫距离切比雪夫距离被定义为两个向量之间沿任何坐标维度的最大差异。换句话说它只是沿一个轴的最大距离。由于其性质它经常被称为国际象棋棋盘距离因为国王从一格到另一格所需的最小移动次数等于切比雪夫距离。5.1. 缺点Chebyshev通常用于非常特殊的使用场合这使得它很难像欧氏距离或余弦相似度那样被用作多用途的距离度量。出于这个原因我们建议只有在你绝对确定它适合你的使用情况时才使用它。5.2. 使用案例如前所述切比雪夫距离可以用来提取从一个方格到另一个方格所需的最小移动数。此外在允许不受限制的8路移动的游戏中它也是一个有用的措施。在实践中切比雪夫距离经常被用于仓库物流因为它与起重机需要移动一个物体所需的时间非常相似。6. 闵科夫斯基闵可夫斯基距离是一个比大多数人更复杂的度量。它是一个用于规范化矢量空间n维实空间的度量这意味着它可以用于距离也可以表示为有长度的矢量的空间。这个度量有三个要求零向量- 零向量的长度为零而其他每个向量的长度都为正数。例如如果我们从一个地方到另一个地方那么这个距离总是正的。然而如果我们从一个地方到它自己那么这个距离就是零。标量因子 - 当你用一个正数乘以向量时它的长度会改变同时保持其方向。例如如果我们从一个方向走了一定的距离再加上同样的距离方向不会改变。三角形不等式 - 两点之间最短的距离是一条直线。闵可夫斯基距离的公式如下。关于这个距离度量最有趣的是使用了参数p。我们可以使用这个参数来控制距离度量使其与其他的距离度量相近。p的常见值是:p1 - 曼哈顿距离p2 - 欧几里得距离p∞- 切比雪夫距离6.1. 缺点Minkowski的缺点与它们所代表的距离度量相同所以对Manhattan、Euclidean和Chebyshev距离等度量的深刻理解极为重要。此外参数p的使用实际上是很麻烦的因为根据你的使用情况很难找到正确的值。6.2. 使用案例p的好处是可以对它进行迭代找到最适合你的使用情况的距离测量。这样距离度量就有很大的灵活性如果你对p和许多距离度量非常熟悉这将是一个得天独厚的优势。7. 雅卡德指数雅卡德指数或交集大于联盟是一个用于计算样本集的相似性和多样性的指标。它是交叉点的大小除以样本集的联合点的大小。在实践中它是集合之间相似实体的总数除以实体的总数。例如如果两个集合有1个共同的实体总共有5个不同的实体那么Jaccard指数就是1/50.2。为了计算贾卡德距离我们只需从1中减去贾卡德指数。7.1. 缺点Jaccard指数的一个主要缺点是它受数据大小的影响很大。大的数据集会对该指数产生很大的影响因为它可以在保持相交点相似的情况下大大增加联合点。7.2. 使用案例雅卡德指数经常被用于使用二进制或二进制数据的应用中。当你有一个深度学习模型来预测一个图像的片段例如一辆汽车那么雅卡德指数就可以用来计算给定真实标签的预测片段的准确性。同样它可以用于文本相似性分析以衡量文档之间有多少词汇选择重叠。因此它可以用来比较模式的集合。8. 哈维辛Haversine距离是指球体上两点之间的距离给定其经度和纬度。它与欧几里得距离非常相似都是计算两点之间最短的直线。主要的区别是不可能是直线因为这里的假设是两点都在一个球体上。8.1. 缺点这种距离测量法的一个缺点是它假定各点位于一个球体上。在实践中这种情况很少发生例如地球并不是完全圆形的这可能使某些情况下的计算变得困难。相反我们可以把目光投向假设为椭圆体的Vincenty distance这将是一个合适的做法。8.2. 使用案例正如你可能已经预料到的那样哈维辛距离经常被用于导航中。例如你可以用它来计算在两个国家之间飞行时的距离。请注意如果距离本身已经不是那么大它就不太适合了。曲率不会有那么大的影响。9. 索伦森-戴斯指数索伦森-戴斯指数与贾卡德指数非常相似它衡量样本集的相似性和多样性。尽管它们的计算方法相似但索伦森-戴斯指数更直观一些因为它可以被看作是两个集合之间的重叠百分比它是一个介于0和1之间的值。9.1. 缺点和Jaccard指数一样它们都夸大了几乎没有基础真相的正数集的重要性。因此它可能会过于看重多个集合的平均得分。它对每个项目的权重与相关集合的大小成反比而不是平等处理。9.2. 用例使用情况与Jaccard指数相似甚至相同。你会发现它通常用于图像分割任务或文本相似性分析。10.皮尔森相关系数皮尔森相关系数 (Pearson Correlation Coefficient)用于度量两个变量X和Y之间的相关线性相关其值介于-1与1之间。分子是两个集合的交集大小分母是两个集合大小的几何平均值。是余弦相似性的一种形式。皮尔逊相关系数具有平移不变性和尺度不变性计算出了两个向量维度的相关性。在各个领域都应用广泛例如在推荐系统根据为某一用户查找喜好相似的用户,进而提供推荐优点是可以不受每个用户评分标准不同和观看影片数量不一样的影响。11.KL散度KL散度 (Kullback-Leibler Divergence)即相对熵是衡量两个分布 (P, Q) 之间的距离越小越相似。表示的就是概率 q 与概率 p 之间的差异很显然散度越小说明概率 q 与概率 p 之间越接近那么估计的概率分布于真实的概率分布也就越接近。12. Mahalanobis考虑特征相关性和方差的距离通过协方差矩阵标准化。对各向同性数据退化为欧氏距离对高度相关/量纲差异大的数据更鲁棒常用于异常检测和分类。13. Canberra各分量绝对差除以各分量绝对值之和再求和对接近 0 的值极度敏感分母小。常用于非负数据如人口统计、文本 TF-IDF 向量。14. Braycurtis两向量差绝对值之和比上两向量绝对值之和值域 0-1对称且符合三角不等式。常用于生态学物种丰度比较和化学指纹相似度。参考文献机器学习中常用的9种距离 - 知乎常见的距离算法和相似度计算方法