当前位置:首页 > C++目录 > 正文内容

【数论】常见的距离度量方法

亿万年的星光3年前 (2023-01-29)C++目录2276

一、欧式距离

欧式距离(Eucliden Metric,也是欧几里得度量)是一个通常采用的距离定义,旨在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点距离)。

在二维和三维空间中的欧氏距离就是两点之间的实际距离。

例如:对于二维平面上的两点p(x1,y1)与p(x2,y2)间的欧式距离公式为:

同理,对于三维平面上两点p(x1,y1,z1)与p(x2,y2,z2)间的欧式距离公式为:

欧式距离是距离算法中最常用的方式,日常生活中的大部分距离都可以通过欧式距离进行计算。


二、余弦相似度


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

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


三、汉明距离

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

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


四、曼哈顿距离

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

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


五、切比雪夫距离

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

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



扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【初级篇】求最大公约数的方法

1.辗转相除法int gcd(int a,int b)  {       if(a%b==0...

C++中的max和min函数(最大值,最小值)

1.头文件      最大值最小值函数所在头文件是#include<algorithm>2.用法#include<iostream> #incl...

分离整数的各个位

分离整数的各个位

        平常做题的时候有很多时候会遇到分离整数的各个位的操作,比如求回文数,数字反转等题目。今天简单总结一下分离...

【题解】盈亏问题

【题目描述】一群人团购一件物品:如果每人出 a元,所付总金额比物价多出了x 元;如果每人少出 1元,也就是每人出a-1元,所付总金额比物价少了y元。给定 a,x,y求参与团购的人数及该物品的...

【题解】采药的最短路径

【题目描述】少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由M×N个方格组成,有的方格内有...

如何计算一个程序的运行时间(防止超时)

再一些OJ系统中,做题的时候常常会超时,但是很多人不知道自己的程序是否会超时,不知道如何检查自己的程序。这篇文章主要介绍几种监测自己程序运行时间的程序。头文件<time.h> ...