一、欧氏距离(Euclidean Distance)
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
Matlab计算距离使用pdist函数。若X是一个m×n的矩阵,则pdist(X)将X矩阵每一行作为一个n维行向量,然后计算这m个向量两两间的距离。
X = [1 1; 2 2; 3 3; 4 4];
d = pdist(X, 'euclidean')
#运行结果
d =
1.4142 2.8284 4.2426 1.4142 2.8284 1.4142
二、曼哈顿距离(Manhattan Distance)
曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离。顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”(City Block distance)。
X = [1 1; 2 2; 3 3; 4 4];
d = pdist(X, 'cityblock')
#运行结果
d =
2 4 6 2 4 2
三、切比雪夫距离(Chebyshev Disatance)
切比雪夫距离(Chebyshev distance)或是L∞度量,是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。以数学的观点来看,切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量(injective metric space)的一种。
X = [1 1; 2 2; 3 3; 4 4];
d = pdist(X,'chebychev')
#运行结果
d =
1 2 3 1 2 1
四、 闵可夫斯基距离(Minkowski Distance)
闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。
闵氏距离的定义:两个n维变量a(x11, x12, ..., x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是一个变参数:
当p=1时,就是曼哈顿距离;
当p=2时,就是欧氏距离;
当p→∞时,就是切比雪夫距离。
因此,根据变参数的不同,闵氏距离可以表示某一类/种的距离。
X = [1 1; 2 2; 3 3; 4 4];
d = pdist(X, 'minkowski', '2')
#运行结果
d =
1.0140 2.0279 3.0419 1.0140 2.0279 1.0140
五、标准化欧氏距离(Standardized Euclidean Distance)
定义: 标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。假设样本集X的均值(mean)为m,标准差(standard deviation)为s,X的“标准化变量”表示为:
如果将方差的倒数看成一个权重,也可称之为加权欧氏距离(Weighted Euclidean distance).
X = [1 1; 2 2; 3 3; 4 4];
d = pdist(X, 'seuclidean', [0.5, 1])
#运行结果
d =
2.2361 4.4721 6.7082 2.2361 4.4721 2.2361
六、马氏距离(Mahalanobis Disttance)
马氏距离的引出:
上图有两个正态分布的总体,它们的均值分别为a和b,但方差不一样,则图中的A点离哪个总体更近?或者说A有更大的概率属于谁?显然,A离左边的更近,A属于左边总体的概率更大,尽管A与a的欧式距离远一些。这就是马氏距离的直观解释。
向量Xi与Xj之间的马氏距离定义为:
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则Xi与Xj之间的马氏距离等于他们的欧氏距离:
若协方差矩阵是对角矩阵,则就是标准化欧氏距离。
X = [1 2; 1 3; 3 3; 4 1];
d = pdist(X, 'mahal')
#运行结果
d =
1.2247 2.4381 2.0000 1.5635 2.3452 2.1473
七、余弦距离(Cosine Distance)
几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。
即:
夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。
X = [1 1; 2 2; 3 3; 4 4];
d = 1 -pdist(X, 'cosine')
#运行结果
d =
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
八、汉明距离(Hamming Distance)
X = [0 1 1; 1 1 2; 1 5 2];
d = pdist(X, 'hamming')
#运行结果
d =
0.6667 1.0000 0.3333
九、杰卡德距离(Jaccard Distance)
杰卡德相似系数(Jaccard similarity coefficient):两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:
X = [1 1 0; 1 -1 0; -1 1 0];
d =pdist(X, 'jaccard')
#运行结果
d =
0.5000 0.5000 1.0000
十、相关距离(Correlation Distance)
X = [1 2 3 4; 3 8 7 6];
c = corrcoef(X') %返回相关系数矩阵
d = pdist(X, 'correlation') %返回相关距离
#运行结果
c =
1.0000 0.4781
0.4781 1.0000
d =
0.5219
十一、 信息熵(Information Entropy)
以上的距离度量方法度量的皆为两个样本(向量)之间的距离,而信息熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度)、分散程度、混乱程度(不一致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。
计算给定的样本集X的信息熵的公式:
参数的含义:
n:样本集X的分类数
pi:X中第 i 类元素出现的概率
信息熵越大表明样本集S的分布越分散(分布均衡),信息熵越小则表明样本集X的分布越集中(分布不均衡)。当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0。