精华内容
下载资源
问答
  • 距离度量方法
    千次阅读
    2021-02-09 21:19:51

    ↑↑↑关注后"星标"Datawhale

    每日干货 & 每月组队学习,不错过

     Datawhale干货 

    译者:张峰,安徽工业大学Datawhale成员

    许多算法,不管是有监督的还是无监督的,都会使用距离测量。这些度量方法,如欧氏距离或余弦相似度,经常可以在KNN、UMAP、HDBSCAN等算法中找到。

    理解距离测量领域比你可能意识到的更重要。以KNN为例,这是一种常用于监督式学习的技术。作为默认设置,它通常使用欧几里得度量。就其本身而言,是一个很好的距离测量方法。

    然而,如果你的数据是高维的呢?那么欧几里得距离还能用吗?或者,如果你的数据由地理空间信息组成呢?也许Haversine距离会是一个更好的选择!

    知道何时使用哪种距离测量方法可以帮助你从一个差的分类器变成一个准确的模型。

    在本文中,我们将介绍不同的距离测量方法,并探索如何以及何时最好地使用它们。最重要的是,我会谈谈各自的缺点,这样你就能知道何时该避开使用某些距离度量的措施。

    1. 欧式距离

    我们从最常见的距离测量开始,即欧氏距离。它是一种最好的距离测量方法,可以解释为连接两点的线段长度。

    这个公式相当简单,因为距离是根据使用勾股定理的点的笛卡尔坐标计算出来的。

    缺点

    虽然这是一种常见的距离测量方法,但欧几里得距离并不是尺度不变的,这意味着计算出的距离可能会根据特征的单位而有所偏斜。通常情况下,在使用这种距离测量之前,需要对数据进行归一化。

    此外,随着数据维度的增加,欧几里得距离的作用就越小。这与维度的诅咒有关,它涉及到高维空间的概念,并不像我们直观地期望的那样,从二维或三维空间中发挥作用。

    用例

    当你有低维数据,并且向量的大小很重要,需要测量时,欧氏距离的效果非常好。如果在低维数据上使用欧氏距离,kNN和HDBSCAN等方法就会显示出很好的效果。

    虽然已经开发了许多其他的测量方法来解释欧氏距离的缺点,但它仍然是最常用的距离测量方法之一,这是有充分理由的。它使用起来非常直观,实现起来也很简单,并且在许多用例中都显示出了很好的效果。

    2. 余弦相似性

    余弦相似性经常被用来抵消欧几里得距离的高维度问题。余弦相似性只是两个向量之间角度的余弦。如果将它们归一化为都有长度为1的向量,它的内积也相同。

    两个方向完全相同的向量的余弦相似度为1,而两个方向截然相反的向量的相似度为-1,请注意,它们的大小并不重要,因为这是方向的量度。余弦相似度公式为:

    缺点

    余弦相似性的一个主要缺点是不考虑向量的大小,只考虑其方向。在实际应用中,这意味着值的差异没有被完全考虑。以推荐系统为例,那么余弦相似性并没有考虑到不同用户之间的评分等级差异。

    用例

    当我们有高维数据且向量的大小并不重要时,我们经常使用余弦相似度。对于文本分析来说,当数据用字数来表示时,这种测量方法是很常用的。

    例如,当一个词在一个文档中出现的频率高于另一个文档时,这并不一定意味着一个文档与该词的关系更大。可能是文档的长度不均匀,计数的大小就不那么重要了。那么,我们最好是使用不考虑大小的余弦相似性。

    3. 汉明距离

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

    缺点

    正如你所预料的,当两个向量的长度不相等时,汉明距离很难使用。你会希望将相同长度的向量相互比较,以了解哪些位置不匹配。

    而且,只要它们不同或相等,它就不考虑实际值。因此,当幅度是一个重要的衡量标准时,不建议使用这个距离衡量。

    用例

    典型的使用情况包括在计算机网络上传输数据时的纠错/检测。它可以用来确定二进制字中的失真位数,以此来估计错误。

    此外,你还可以使用汉明距离来测量分类变量之间的距离。

    4. 曼哈顿距离

    曼哈顿距离,通常被称为出租车距离或城市街区距离,计算实值向量之间的距离。想象一下,在统一的网格上描述物体的向量,如棋盘。

    曼哈顿距离则是指两个向量之间的距离,如果它们只能移动直角。计算距离时不涉及对角线的移动。曼哈顿距离公式为:

    缺点

    虽然曼哈顿距离对于高维数据似乎还不错,但它是一个比欧几里得距离更不直观的测量方法,尤其是在高维数据中使用时。

    而且,它比欧几里得距离更容易给出一个更高的距离值,因为它不可能是最短路径。这不一定会带来问题,但你应该考虑到这一点。

    用例

    当你的数据集有离散和/或二进制属性时,曼哈顿似乎很好用,因为它考虑到了现实中在这些属性值内可以采取的路径。以欧氏距离为例,会在两个向量之间创建一条直线,而在现实中这可能实际上是不可能的。

    5. 切比雪夫距离

    切比雪夫距离被定义为沿任何坐标维度的两个向量之间的最大差异。换句话说,它是沿着一个轴线的最大距离。

    由于它的性质,它经常被称为棋盘距离,因为国王从一个方格走到另一个方格所需的最少步数等于切比雪夫距离。切比雪夫距离公式为:

    缺点

    切比雪夫通常用于非常特殊的使用情况,这使得它很难像欧几里得距离或余弦相似性那样作为一个通用的距离度量。出于这个原因,我们建议只有当你绝对确定它适合你的使用情况时才使用它。

    用例

    如前所述,切比雪夫距离可以用来提取从一个方格到另一个方格所需的最少步数。此外,在允许无限制的8向移动的棋局中,它也是一个有用的测量方法。

    在实践中,切比雪夫距离经常被用于仓库物流,因为它很像天车移动一个物体所需的时间。

    6. 闵可夫斯基距离

    闵可夫斯基距离是一个相对复杂的度量方法。它是在规范向量空间(n维实空间)中使用的一种度量方法,这意味着它可以在表示为一个有长度的向量空间中使用。

    这个度量有三个要求:
    零向量:零向量的长度为零,而其它向量的长度为正。例如,如果我们从一个地方到另一个地方,那么这个距离总是正数。但是,如果我们从一个地方到它本身,那么这个距离就是零;
    标量因子:当你用正数乘以向量时,它的长度会改变,但方向不变。例如,如果我们在一个方向上走了一定的距离,再加上同样的距离,方向不会改变;
    三角形不等式:两点之间的最短距离是一条直线。

    闵可夫斯基距离的公式如下:

    这个距离度量最有趣的是使用参数p。我们可以用这个参数来操作距离度量,使之与其它度量方法非常相似。

    p的常见值有:
    - 曼哈顿距离;
    - 欧氏距离;
    -切比雪夫距离。

    缺点

    闵可夫斯基距离的缺点与它们所代表的距离度量一样,所以对曼哈顿、欧几里得和切比雪夫距离等度量的了解是极其重要的。

    此外,参数 p 实际上在工作中可能会很麻烦,因为根据你的用例,找到正确的值可能会在计算上相当低效。

    用例

    p的优点是可以对它进行迭代,找到最适合你的使用情况的距离度量。它允许你在距离度量上有很大的灵活性,如果你对p和许多距离度量非常熟悉,这将是一个巨大的好处。

    7. Jaccard指数

    Jaccard指数(或称交集比联合)是一种用于计算样本集相似性和多样性的度量。它是交集的大小除以样本集的联合大小。

    在实践中,它是集合之间相似实体的总数除以实体的总数。例如,如果两个集合有1个共同的实体,而总共有5个不同的实体,那么Jaccard指数将是

    要计算Jaccard距离,我们只需将Jaccard指数从1中减去。Jaccard距离公式为:

    缺点

    Jaccard指数的一个主要缺点是,它受数据大小的影响很大。大的数据集会对指数产生很大的影响,因为它可以在保持相似的交叉点的同时显著增加联合。

    用例

    Jaccard指数经常用于使用二进制或二值化数据的应用中。当你有一个深度学习模型预测图像的片段时,例如,一辆汽车,Jaccard指数就可以用来计算给定真实标签的预测片段的准确度。同样,它也可以用于文本相似性分析,以衡量文档之间的选词重叠程度。因此,它可以用来比较模式的集合。

    8. Haversine距离

    Haversine距离是指球面上两点之间的经度和纬度距离。

    它与欧几里得距离非常相似,因为它计算的是两点之间的最短线。主要的区别是不可能有直线,因为这里的假设是两点在一个球体上。两点间的Haversine距离公式为:

    缺点

    这种距离测量方法的一个缺点是,它假定各点位于一个球体上。在实践中,这种情况很少发生,例如,地球并不是完全的圆形,这可能会使计算在某些情况下变得困难。相反,如果能采用Vincenty距离,则会很有趣,因为它假设的是一个椭圆体。

    用例

    正如你所期望的那样,Haversine距离经常用于导航。例如,当你在两个国家之间飞行时,你可以用它来计算它们之间的距离。需要注意的是,如果本身距离已经不大,它就不太适合了。曲率不会有那么大的影响。

    9. Sørensen-Dice指数

    Sørensen-Dice指数与Jaccard指数非常相似,因为它衡量样本集的相似性和多样性。

    虽然它们的计算方法相似,但Sørensen-Dice指数更直观一些,因为它可以被看作是两组之间的重叠百分比,这个数值在0和1之间。Sørensen–Dice指数公式为:

    缺点

    与Jaccard指数一样,它们都高估了集合的重要性,只有很少或没有TP(Truth Positive)值的正集合。因此,它可以求得多盘的平均分数。它将每个项目与相关集合的大小成反比加权,而不是平等对待它们。

    用例

    与Jaccard指数相似,通常用于图像分割任务或文本相似性分析。

    注意:除了这里提到的9种距离度量,还有更多的度量。如果你正在寻找更多有趣的度量,我建议你研究以下其中一个:Mahalanobis, Canberra, Braycurtis, 和 KL-散度!

    “整理不易,三连

    更多相关内容
  • 对比matlab中自带空间距离函数,求解方法的优劣
  • 计算机研究 -轨迹聚类中距离度量方法的实践与应用.pdf
  • 选自towardsdatascience作者:Maarten Grootendorst机器之心编译编辑:陈萍在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。...

    选自towardsdatascience

    作者:Maarten Grootendorst

    机器之心编译

    编辑:陈萍

    在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。在本文中,数据科学家 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

    © THE END 

    转载请联系 原 公众号获得授权

    投稿或寻求报道:content@jiqizhixin.com

    点个在看 paper不断!

    展开全文
  • 机器学习——各种距离度量方法总结

    千次阅读 多人点赞 2019-07-16 14:49:35
    欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际...

    前言:
    在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。本文的目的就是对常用的相似性度量作一个总结。

    一、欧氏距离(EuclideanDistance)

    1.定义:

    欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

    2.计算公式:

    • 二维空间公式
    • 三维空间的公式
    • n维空间的公式

    3.代码实现:

    • 原生公式代码实现
    import math
    def euclidean(x, y):
    	d = 0
    	for xi, yi in zip(x, y):
    		d += (xi-yi)**2
    	return math.sqrt(d)
    
    • 使用numpy库
    import numpy as np
    np.linalg(vector1-vector2, ord=2)
    

    4.适用的数据分析模型
    欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;

    二、曼哈顿距离(ManhattanDistance)

    1.定义:
    顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”(City Block distance)。

    2.计算公式

    • (1) 二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离:
    • (2) n维空间点a(x11,x12,…,x1n)与b(x21,x22,…,x2n)的曼哈顿距离:

    3.代码实现

    import numpy as np
    np.linalg(vector1-vector2, ord=1)
    

    4.适用的数据分析模型
    欧几里得距离无法忽略指标度量的差异,所以在使用欧氏距离之前需要对底层指标进行数据的标准化,而基于各指标维度进行标准化后再使用欧氏距离就衍生出来另外一个距离度量——马哈拉诺比斯距离(Mahalanobis Distance),简称马氏距离。

    三、切比雪夫距离 (Chebyshev Distance)

    1.定义
    国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?你会发现最少步数总是max(| x2-x1| , |y2-y1| ) 步。有一种类似的一种距离度量方法叫切比雪夫距离(L∞范数)。

    2.计算公式

    • (1) 二维平面两点a(x1,y1)与b(x2,y2)间的切比雪夫距离:
    • (2) n维空间点a(x11,x12,…,x1n)与b(x21,x22,…,x2n)的切比雪夫距离:

    公式的另一种等价形式是:可以使用放缩法和夹逼法则来证明。

    3.代码实现

    import numpy as np
    np.linalg.norm(vector1-vector2,ord=np.inf)
    

    4.适用的数据分析模型
    所以如果把切比雪夫不等式用于高斯分布的数据集,会得到一个非常保守、粗糙的上下界。切比雪夫不等式的意义在于,它虽然是一个粗糙的估计,但是使用与任意分布的数据集和任意的正数
    5.切比雪夫不等式的证明
    http://makercradle.com/2017/切比雪夫不等式证明/

    四、 闵可夫斯基距离(Minkowski Distance)

    绿色的斜线表示欧几里得距离,在现实中是不可能的。其他三条折线表示了曼哈顿距离,这三条折线的长度是相等的。

    当 p 趋近于无穷大时,闵可夫斯基距离转化成切比雪夫距离(Chebyshev distance):

    五、标准化欧式距离(Standardized Euclidean Distance)

    1.定义:
    标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。
    2.计算公式
    假设样本集X的均值(mean)为m,标准差(standard deviation)为s,X的“标准化变量”表示为:

    • 标准化欧氏距离公式:

    如果将方差的倒数看成一个权重,也可称之为加权欧氏距离(Weighted Euclidean distance)。
    3.代码实现

    import numpy as np
    x=np.random.random(10)
    y=np.random.random(10)
    
    X=np.vstack([x,y])
    
    #方法一:根据公式求解
    sk=np.var(X,axis=0,ddof=1)
    d1=np.sqrt(((x - y) ** 2 /sk).sum())
    
    #方法二:根据scipy库求解
    from scipy.spatial.distance import pdist
    d2=pdist(X,'seuclidean')
    

    六、马氏距离(Mahalanobis distance)

    1.定义
    马氏距离是基于样本分布的一种距离。物理意义就是在规范化的主成分空间中的欧氏距离。所谓规范化的主成分空间就是利用主成分分析对一些数据进行主成分分解。再对所有主成分分解轴做归一化,形成新的坐标轴。由这些坐标轴张成的空间就是规范化的主成分空间。

    2.计算公式

    • 定义:有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到μ的马氏距离表示为:
    • 向量Xi与Xj之间的马氏距离定义为:
    • 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则Xi与Xj之间的马氏距离等于他们的欧氏距离:
    • 若协方差矩阵是对角矩阵,则就是标准化欧氏距离。
      -

    3.代码实现

    import numpy as np
    x=np.random.random(10)
    y=np.random.random(10)
    
    #马氏距离要求样本数要大于维数,否则无法求协方差矩阵
    #此处进行转置,表示10个样本,每个样本2维
    X=np.vstack([x,y])
    XT=X.T
    
    #方法一:根据公式求解
    S=np.cov(X)   #两个维度之间协方差矩阵
    SI = np.linalg.inv(S) #协方差矩阵的逆矩阵
    #马氏距离计算两个样本之间的距离,此处共有10个样本,两两组合,共有45个距离。
    n=XT.shape[0]
    d1=[]
    for i in range(0,n):
        for j in range(i+1,n):
            delta=XT[i]-XT[j]
            d=np.sqrt(np.dot(np.dot(delta,SI),delta.T))
            d1.append(d)
            
    #方法二:根据scipy库求解
    from scipy.spatial.distance import pdist
    d2=pdist(XT,'mahalanobis')
    

    4.马氏距离的特点

    • 量纲无关,排除变量之间的相关性的干扰;
    • 马氏距离的计算是建立在总体样本的基础上的,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;
    • 计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧式距离计算即可。

    七、余弦距离(Cosine Distance)

    1.定义
    几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。
    2.计算公式

    • 二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
    • 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦为:
    • 即:
    夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。 **3.代码实现**
    vector1 = np.array([1,2,3])
    vector2 = np.array([4,7,5])
     
    op7=np.dot(vector1,vector2)/(np.linalg.norm(vector1)*(np.linalg.norm(vector2)))
    print(op7)
    #输出
    #0.929669680201
    

    4.适用的数据分析模型

    八、汉明距离(Hamming Distance)

    1.定义
    两个等长字符串s1与s2的汉明距离为:将其中一个变为另外一个所需要作的最小字符替换次数。例如:

    The Hamming distance between "1011101" and "1001001" is 2. 
    The Hamming distance between "2143896" and "2233796" is 3. 
    The Hamming distance between "toned" and "roses" is 3.
    
    

    汉明重量:是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。因此,如果向量空间中的元素a和b之间的汉明距离等于它们汉明重量的差a-b。
    2.应用
    汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。比如在信息编码过程中,为了增强容错性,应使得编码间的最小汉明距离尽可能大。但是,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离等算法。
    3.代码实现

    
    v1=np.array([1,1,0,1,0,1,0,0,1])
    v2=np.array([0,1,1,0,0,0,1,1,1])
    smstr=np.nonzero(v1-v2)
    print(smstr) # 不为0 的元素的下标
    sm= np.shape(smstr[0])[0] 
    print( sm )
    #输出
    #(array([0, 2, 3, 5, 6, 7]),)
    #6
    

    4.应用
    信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。

    九、杰卡德距离(Jaccard Distance)

    1.定义

    • 杰卡德相似系数(Jaccard similarity
      coefficient):两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:
    • 杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度:

    2.应用

    • 可将杰卡德相似系数用在衡量样本的相似度上
    • 样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。
    • P:样本A与B都是1的维度的个数
    • q:样本A是1,样本B是0的维度的个数
    • r:样本A是0,样本B是1的维度的个数
    • s:样本A与B都是0的维度的个数
    • 那么样本A与B的杰卡德相似系数可以表示为:
    • 这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。
    • 而样本A与B的杰卡德距离表示为:

    3.代码实现

    import scipy.spatial.distance as dist
     
    v1=np.array([1,1,0,1,0,1,0,0,1])
    v2=np.array([0,1,1,0,0,0,1,1,1])
     
    matv=np.array([v1,v2])
    print(matv)
    ds=dist.pdist(matv,'jaccard')
    print(ds)
     
    #输出
    #[[1 1 0 1 0 1 0 0 1] [0 1 1 0 0 0 1 1 1]]
     
    # [ 0.75]
    

    十、相关距离(Correlation distance)

    1.定义

    • 相关系数:是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关):
    • 相关距离:

    十一、信息熵(Information Entropy)

    以上的距离度量方法度量的皆为两个样本(向量)之间的距离,而信息熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度)、分散程度、混乱程度(不一致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。

    2.计算给定的样本集X的信息熵的公式:

    参数的含义:

    • n:样本集X的分类数
    • pi:X中第 i 类元素出现的概率

    信息熵越大表明样本集S的分布越分散(分布均衡),信息熵越小则表明样本集X的分布越集中(分布不均衡)。当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0。

    十二:总结

    简单说来,各种“距离”的应用场景简单概括为:
        
        空间:欧氏距离
        路径:曼哈顿距离
        国际象棋国王:切比雪夫距离
        以上三种的统一形式:闵可夫斯基距离
        
        加权:标准化欧氏距离
        排除量纲和依存:马氏距离
        向量差距:夹角余弦
        编码差别:汉明距离
        集合近似度:杰卡德类似系数与距离
        相关:相关系数与相关距离

    参考:
    https://blog.csdn.net/qq_19707521/article/details/78479532
    https://www.jianshu.com/p/84cdaeeeeba3
    https://my.oschina.net/hunglish/blog/787596
    https://www.cnblogs.com/daniel-D/p/3244718.html
    https://blog.csdn.net/weixin_42715356/article/details/82845376

    展开全文
  • 作者|机器之心编译来源|机器之心在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。在本文中,数据科学家 Maarten Grootendorst 向我们介绍...

    作者|机器之心编译

     来源|机器之心

    在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。在本文中,数据科学家 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,加入微信群请扫码:
    
    
    展开全文
  • K-means聚类及距离度量方法小结

    万次阅读 2021-10-24 20:37:33
    其算法思想大致为:先从样本集中随机选取 k个样本作为簇中心,并计算所有样本与这 k个“簇中心”的距离,对于每一个样本,将其划分到与其距离最近的“簇中心”所在的簇中,对于新的簇计算各个簇的新的“簇中心”。...
  • 数据科学中常见的9种距离度量方法(包括曼哈顿距离、欧氏距离、半正矢距离等) 1、欧氏距离(Euclidean Distance) 2、余弦相似度(Cosine Similarity) 3、汉明距离(Hamming Distance) 4、曼哈顿距离(Manhattan ...
  • 在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种距离度量方法,其中包括欧氏距离、余弦相似度等。 许多算法,无论是监督学习还是无监督学习,都会使用距离度量。这些度量,如欧几里得距离或者...
  • 基于特征矩阵的多元时间序列最小距离度量方法
  • 图像处理之常见的几种距离度量方法 常见的距离度量方法有哪些? 欧氏距离(Euclidean Distance): 曼哈顿距离: 余弦相似度:余弦相似度经常被用作抵消高维欧式距离问题。 汉明距离:汉明距离是两个向量...
  • 算法-计算几何- 二维几何基础- 距离度量方法(包含源程序).rar
  • 2.3距离度量方法

    千次阅读 2018-06-30 23:53:13
    距离度量方法 假设对于像素P(Xp,Yp), Q(Xq,Yq),R(Xr,Yr)而言,若函数D满足如下三个条件,则函数D可被称为距离函数或度量。 1、D(P,Q)>=0,当且仅当P=Q时有D(P,Q) = 0 2、D(P,Q) = D(Q,P) 3、D(P,Q) =...
  • 机器学习的5种距离度量方法

    千次阅读 2018-05-11 16:59:34
    在机器学习领域中有非常多的问题需要求距离,...今天讲下常见的几种距离计算方法。一、 欧式距离EuclideanDistance欧式距离:两点之间的直线距离。(1)二维平面上两点a(x1,y1),b(x2,y2)之间的欧式距离公式:(2) n维...
  • 几种距离度量方法比较

    千次阅读 2019-02-04 13:20:43
    欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 二维平面上点a(x1,y1)与b(x2,y2)间的欧氏距离: 三维空间点a(x1,y1,z1)与b(x2,y2,z2)间的...
  • 聚类方法——簇间距离度量方法

    千次阅读 2019-12-17 14:37:34
    1. 最小距离(单链接算法 Single linkage algorithm) 含义:簇类C1和C2的距离由该两个簇的最近样本决定。 优点:只要两个簇类的间隔不是很小,单链接算法可以很好的分离非椭圆形状的样本分布。 缺点:单...
  • 点击上方,选择星标,每天给你送干货!仅作学术分享,不代表本公众号立场,侵权联系删除转载于:机器之心欧氏距离(Euclidean Distance)欧式距离。我们从最常见的欧式距离开始,欧式...
  • 在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种距离度量方法,其中包括欧氏距离、余弦相似度等。 许多算法,无论是监督学习还是无监督学习,都会使用距离度量。这些度量,如欧几里得距离或者余弦相似...
  • 图像处理中距离度量方法总结

    万次阅读 2017-08-16 11:03:24
    Euclidean Distance(欧氏距离)是一种常用的度量方式,是点和点之间坐标的均方根。通常情况下人们所说到的距离,指的就是欧式距离,它的定义如下: 2.Manhattan Distance Manhattan Distance(曼哈顿距离)也称为...
  • 机器学习领域 几种距离度量方法【3】 [4]python scipy spatial.distance.jensenshannon用法及代码示例 [5]python scipy spatial.distance.kulsinski用法及代码示例 [6]马氏距离(Mahalanobis Distance)
  • 几种常见距离度量方法 欧几里得距离 简介 公式 曼哈顿距离(Manhattan Distance) 简介 公式 应用场景 切比雪夫距离 简介 公式 闵科夫斯基距离 简介 公式 缺点 马氏距离 简介 公式 汉明距离 简介 ...
  • 1、欧氏距离(Euclidean Distance) 欧式距离可解释为连接两个点的线段的长度。欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离。 代码实现: import numpy as np x=np.random.random(10) y=np....
  • 聚类分析中距离度量方法比较

    万次阅读 2015-09-16 17:34:41
    一般有两种方法,一种是对所有对象作特征投影,另一种则是距离计算。前者主要从直观的图像上反应对象之间的相似度关系,而后者则是通过衡量对象之间的差异度来反应对象之间的相似度关系。  如图(1)所示:...
  • 1、欧氏距离(Euclidean Distance) /ju:'klidiən/ 2、曼哈顿距离(Manhattan Distance) /mæn'hæt(ə)n/ 3、切比雪夫距离 (Chebyshev Distance) 4、闵可夫斯基距离(Minkowski Distance 5、标准化欧氏距离 ...
  • k-近邻算法之距离度量

    千次阅读 2021-03-04 23:52:56
    欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 举例: X=[[1,1],[2,2],[3,3],[4,4]]; 经计算得: d = 1.4142 2.8284 4.2426 1.4142 2.8284 1....
  • 十三、堪培拉距离 (Canberra Distance) 十四、布雷柯蒂斯距离(Bray Curtis Distance) 十五、交叉熵(Cross Entropy) 十六、相对熵(relative entropy) 十七、js散度(Jensen-Shannon) 十八、测地距离(Geodesic ...
  • 几种距离度量方式

    千次阅读 2020-11-26 17:07:22
    欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 二维平面上点a(x1,y1)与b(x2,y2)间的欧氏距离: 三维空间点a(x1,y1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,615
精华内容 27,446
关键字:

距离度量方法