作者|机器之心编译

来源|机器之心

在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种距离度量方法,其中包括欧氏距离、余弦相似度等。

许多算法,无论是监督学习还是无监督学习,都会使用距离度量。这些度量,如欧几里得距离或者余弦相似性,经常在 k-NN、 UMAP、HDBSCAN 等算法中使用。了解距离度量这个领域可能比你想的更重要,以 k-NN 为例,它常被用于监督学习中。

但是,如果你的数据是高维的,欧几里德距离还能用吗?又或者如果你的数据是由地理空间信息组成的,也许半正矢距离是很好的选择。

我们究竟如何选择最适合的距离度量?数据科学家 Maarten Grootendorst 向读者介绍了 9 种距离度量方法,并探讨如何以及何时以最佳的方式使用它们。此外 Maarten Grootendorst 还对它们的缺点进行了介绍,以及如何规避不足。

欧氏距离(Euclidean Distance)

欧式距离

我们从最常见的欧式距离开始,欧式距离可解释为连接两个点的线段的长度。欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离。

缺点:尽管这是一种常用的距离度量,但欧式距离并不是尺度不变的,这意味着所计算的距离可能会根据特征的单位发生倾斜。通常,在使用欧式距离度量之前,需要对数据进行归一化处理。

此外,随着数据维数的增加,欧氏距离的作用也就越小。这与维数灾难(curse of dimensionality)有关。

用例:当你拥有低维数据且向量的大小非常重要时,欧式距离的效果非常好。如果在低维数据上使用欧式距离,则如 k-NN 和 HDBSCAN 之类的方法可达到开箱即用的效果。

余弦相似度(Cosine Similarity)

余弦相似度

余弦相似度经常被用作抵消高维欧式距离问题。余弦相似度是指两个向量夹角的余弦。如果将向量归一化为长度均为 1 的向量,则向量的点积也相同。

两个方向完全相同的向量的余弦相似度为 1,而两个彼此相对的向量的余弦相似度为 - 1。注意,它们的大小并不重要,因为这是在方向上的度量。

缺点:余弦相似度的一个主要缺点是没有考虑向量的大小,而只考虑它们的方向。以推荐系统为例,余弦相似度就没有考虑到不同用户之间评分尺度的差异。

用例:当我们对高维数据向量的大小不关注时,可以使用余弦相似度。对于文本分析,当数据以单词计数表示时,经常使用此度量。例如,当一个单词在一个文档中比另一个单词更频繁出现时,这并不一定意味着文档与该单词更相关。可能是文件长度不均匀或者计数的重要性不太重要。我们最好使用忽略幅度的余弦相似度。

汉明距离(Hamming Distance)

汉明距离

汉明距离是两个向量之间不同值的个数。它通常用于比较两个相同长度的二进制字符串。它还可以用于字符串,通过计算不同字符的数量来比较它们之间的相似程度。

缺点:当两个向量长度不相等时,汉明距离使用起来很麻烦。当幅度是重要指标时,建议不要使用此距离指标。

用例:典型的用例包括数据通过计算机网络传输时的错误纠正 / 检测。它可以用来确定二进制字中失真的数目,作为估计误差的一种方法。此外,你还可以使用汉明距离来度量分类变量之间的距离。

曼哈顿距离(Manhattan Distance)

曼哈顿距离

曼哈顿距离通常称为出租车距离或城市街区距离,用来计算实值向量之间的距离。想象一下均匀网格棋盘上的物体,如果它们只能移动直角,曼哈顿距离是指两个向量之间的距离,在计算距离时不涉及对角线移动。

缺点:尽管曼哈顿距离在高维数据中似乎可以工作,但它比欧式距离直观性差,尤其是在高维数据中使用时。此外,由于它可能不是最短路径,有可能比欧氏距离给出一个更高的距离值。

用例:当数据集具有离散或二进制属性时,曼哈顿距离似乎工作得很好,因为它考虑了在这些属性的值中实际可以采用的路径。以欧式距离为例,它会在两个向量之间形成一条直线,但实际上这是不可能的。

切比雪夫距离(Chebyshev Distance)

切比雪夫距离

切比雪夫距离定义为两个向量在任意坐标维度上的最大差值。换句话说,它就是沿着一个轴的最大距离。切比雪夫距离通常被称为棋盘距离,因为国际象棋的国王从一个方格到另一个方格的最小步数等于切比雪夫距离。

缺点:切比雪夫距离通常用于特定的用例,这使得它很难像欧氏距离或余弦相似度那样作为通用的距离度量。因此,在确定适合用例时才使用它。

用例:切比雪夫距离用于提取从一个方块移动到另一个方块所需的最小移动次数。此外,在允许无限制八向移动的游戏中,这可能是有用的方法。在实践中,切比雪夫距离经常用于仓库物流,因为它非常类似于起重机移动一个物体的时间。

闵氏距离(Minkowski)

闵氏距离

闵氏距离比大多数距离度量更复杂。它是在范数向量空间(n 维实数空间)中使用的度量,这意味着它可以在一个空间中使用,在这个空间中,距离可以用一个有长度的向量来表示。

闵氏距离公式如下:

最有趣的一点是,我们可以使用参数 p 来操纵距离度量,使其与其他度量非常相似。常见的 p 值有:

  • p=1:曼哈顿距离

  • p=2:欧氏距离

  • p=∞:切比雪夫距离

缺点:闵氏距离与它们所代表的距离度量有相同的缺点,因此,对哈顿距离、欧几里得距离和切比雪夫距离等度量标准有个好的理解非常重要。此外,参数 p 的使用可能很麻烦,因为根据用例,查找正确的 p 值在计算上效率低。

用例:p 的积极一面是可迭代,并找到最适合用例的距离度量。它允许在距离度量上有很大的灵活性,如果你非常熟悉 p 和许多距离度量,将会获益多多。

雅卡尔指数(Jaccard Index)

雅卡尔指数

雅卡尔指数(交并比)是用于比较样本集相似性与多样性的统计量。雅卡尔系数能够量度有限样本集合的相似度,其定义为两个集合交集大小与并集大小之间的比例。

例如,如果两个集合有 1 个共同的实体,而有 5 个不同的实体,那么雅卡尔指数为 1/5 = 0.2。要计算雅卡尔距离,我们只需从 1 中减去雅卡尔指数:

缺点:雅卡尔指数的一个主要缺点是它受数据大小的影响很大。大数据集对指数有很大影响,因为它可以显著增加并集,同时保持交集相似。

用例:雅卡尔指数通常用于使用二进制或二进制数据的应用程序中。当你有一个深度学习模型来预测图像分割时,比如一辆汽车,雅卡尔指数可以用来计算给定真实标签的预测分割的准确度。

类似地,它可以用于文本相似性分析,以测量文档之间有多少词语重叠。因此,它可以用来比较模式集合。

半正矢(Haversine)

半正矢距离

半正矢距离是指球面上的两点在给定经纬度条件下的距离。它与欧几里得距离非常相似,因为它可以计算两点之间的最短连线。主要区别在于半正矢距离不可能有直线,因为这里的假设是两个点都在一个球面上。

缺点:这种距离测量的一个缺点是,假定这些点位于一个球体上。实际上,这种情况很少出现,例如,地球不是完美的圆形,在某些情况下可能使计算变得困难。相反,如果假定是椭球,使用 Vincenty 距离比较好。

用例:半正矢距离通常用于导航。例如,你可以使用它来计算两个国家之间的飞行距离。请注意,如果距离本身不那么大,则不太适合。

Sørensen-Dice 系数

Sørensen-Dice 系数

Sørensen-Dice 系数与雅卡尔指数非常相似,都是度量样本集的相似性和多样性。尽管它们的计算方法相似,但是 Sørensen-Dice 系数更直观一些,因为它可以被视为两个集合之间重叠的百分比,这个值在 0 到 1 之间:

缺点:正如雅卡尔指数,Sørensen-Dice 系数也夸大了很少或没有真值的集合的重要性,因此,它可以控制多集合的平均得分,还可以控制多组平均得分并按相关集合的大小成反比地加权每个项目,而不是平等对待它们。

用例:用例与雅卡尔指数相似,它通常用于图像分割任务或文本相似性分析。

原文链接:https://towardsdatascience.com/9-distance-measures-in-data-science-918109d069fa

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
本站qq群704220115,加入微信群请扫码:

【机器学习基础】常见的9种距离度量方法,内含欧氏距离、切比雪夫距离等相关推荐

  1. 数据科学中常见的9种距离度量方法(包括曼哈顿距离、欧氏距离、半正矢距离等)

    数据科学中常见的9种距离度量方法(包括曼哈顿距离.欧氏距离.半正矢距离等) 1.欧氏距离(Euclidean Distance) 2.余弦相似度(Cosine Similarity) 3.汉明距离(H ...

  2. 数据科学中常见的9种距离度量方法

    选自towardsdatascience 作者:Maarten Grootendorst 机器之心编译 编辑:陈萍 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本 ...

  3. 数据科学中常见的9种距离度量方法,包括欧氏距离、切比雪夫距离、半正矢距离等

    1.欧氏距离(Euclidean Distance) 欧式距离可解释为连接两个点的线段的长度.欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离. 代码实现: import numpy a ...

  4. 10个机器学习中常用的距离度量方法

    转载:Deephub Imba 距离度量是有监督和无监督学习算法的基础,包括k近邻.支持向量机和k均值聚类等. 距离度量的选择影响我们的机器学习结果,因此考虑哪种度量最适合这个问题是很重要的.因此,我 ...

  5. 机器学习案例系列教程——距离度量方法总结

      在数据挖掘中,无论是对数据进行分类.聚类还是异常检测.关联性分析,都建立在数据之间相似性或相异性的度量基础上.通常使用距离作为数据之间相似性或相异性的度量方法,常用的度量方法有欧式距离.曼哈顿距离 ...

  6. 机器学习常用的距离度量方法

    机器学习领域常常会遇到求解相似度的问题,通常可以转化为对距离的求解,最常用的是对"向量"的距离求解.比如,求解某物品A和某物品B之间的相似度,可以收集它们共有特征,构建特征向量a和 ...

  7. 谈谈距离度量方式:欧氏距离与余弦距离

    前因 在机器学习/深度学习的很多任务中,我们通常会面临着两个样本之间相似度的比较.通常常用的两种度量方式为欧氏距离与余弦距离,那么在什么时候用欧氏距离?什么时候用余弦相似度?他们之间的联系与区别在哪里 ...

  8. 计算几何 —— 二维几何基础 —— 距离度量方法

    [概述] 在数据挖掘中,经常需要计算样本之间的相似度,通常做法是计算样本之间的距离. 比如判断 A.B.C 三种商品之间的相似性,可以先按照商品特征构建 A.B.C 各自的向量,然后求向量间的距离,距 ...

  9. 常见的几种python字符串方法总结

    常见的几种python字符串方法总结 python的字符串模块很强大,有很多内置的方法,我们介绍下常用的字符串方法: 一. find和rfind方法查找字串所在位置 s = 'abcdef' prin ...

最新文章

  1. hibernate和spring学习
  2. 2015年浪潮面试题
  3. 隐藏SSID无线网络ID 你的无线网络真的安全吗?
  4. Ajax 文件上传之PHP心得
  5. Jupyter Notebook代码提示及补齐功能
  6. Django 之 Session的简单使用
  7. springboot读取src下文件_java(包括springboot)读取resources下文件方式
  8. 6.1(数学:五角数)
  9. 踏踏实实学javascript--javascript中的变量
  10. 关于CoreData的理解和使用.
  11. 百德科技专业定制软件开发
  12. 节后上班 北京车辆尾号限行2日轮换
  13. python+nodejs+vue大学生心理健康测评管理系统
  14. tp6后台管理系统搭建
  15. 微带线 带状线 过孔的时延对比
  16. 哀悼日 网页置灰兼容ie 亲测有效!
  17. 数字信号处理专业术语翻译
  18. pygame功能--pygame.cursors鼠标模块
  19. uni-app的生命周期说明及平台差异性说明
  20. 全网首发!马士兵内部共享—1658页《Java面试突击核心讲》

热门文章

  1. 前线消息:ODF大会倒计时25天,你想了解的都在这里
  2. 移动网络安装测试软件,华为移动宽带检测工具(Mobile Doctor)
  3. 韩剧Tv网更新消息推送-python 爬虫
  4. 腾讯面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号。
  5. navi push navi,
  6. 记一次 DISTINCT 导致的 SQL 效率问题
  7. 计算机电缆DJYVP,计算机电缆DJYVP-2*2*1.0
  8. 原文 葛底斯堡宣言_葛底斯堡演说中英对照全文
  9. 漂泊一生,为着一生不再漂泊
  10. jdk下载与安装_jdk下载与安装教程32位