【机器学习】相似度度量方法总结

相似性度量

描述样本之间相似度的方法有很多种,一般来说常用的有相关系数和欧式距离。

在做分类时,常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(distance)。采用什么样的方法计算距离是很讲究的,甚至关系到分类的正确与否。

  • 欧式距离
  • 曼哈顿距离
  • 切比雪夫距离
  • 闵可夫斯基距离
  • 标准化欧氏距离
  • 马氏距离
  • 夹角余弦
  • 汉明距离
  • 杰卡德距离&杰卡德相似系数
  • 相关系数&相关距离
  • 信息熵

1.欧式距离

平方、求和、开根号

a(x11,x12,…,x1n)

b(x21,x22,…,x2n)
d = ∑ k = 1 n ( x 1 k − x 2 k ) 2 d=\sqrt{\sum_{k=1}^{n}{(x_{1k}-x_{2k})^2}} d=k=1n(x1kx2k)2
表示成向量形式
d = ( a − b ) ( a − b ) T d=\sqrt{(a-b)(a-b)^T} d=(ab)(ab)T

2.曼哈顿距离

绝对值,求和

a(x11,x12,…,x1n)

b(x21,x22,…,x2n)
d = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ d=\sum_{k=1}^{n}|x_{1k}-x_{2k}| d=k=1nx1kx2k

3.切比雪夫距离

d = m a x i ( ∣ x 1 i − x 2 i ∣ ) d=max_i(|x_{1i}-x_{2i}|) d=maxi(x1ix2i)

4.闵可夫斯基距离

不是一种距离,而是一组距离
d = ( ∑ k = 1 n ∣ x 1 k − x 2 k ∣ p ) 1 p d=(\sqrt{\sum_{k=1}^{n}{|x_{1k}-x_{2k}|^p}})^{\frac{1}{p}} d=(k=1nx1kx2kp )p1
p是一个可变参数

当p=1:曼哈顿距离

当p=2:欧式距离

当p->∞:切比雪夫距离

闵氏距离缺点:

(闵可夫斯基、曼哈顿、欧式、切比雪夫)

举例:

二维样本(身高,体重),有三个样本:a(180,50),b(190,50),c(180,60)

按照闵氏距离计算,ab的距离与ac距离相等,但是身高的10cm真的等于体重的10kg吗?

因此,用闵氏距离来衡量这些样本之间的相似度很有问题。

简单来说,闵氏距离的缺点主要有两个:

(1)将各个分量的量纲(scale),也就是“单位”当作相同的来看待了。

(2)没有考虑各个分量的分布(期望、方差等)可能是不同的。

5.标准化欧氏距离

标准化欧式距离是针对简单欧式距离的缺点而作的一种改进方案。

标准欧式距离的思路: 既然数据各维分量的分布不一样,那我们可以先将各个分量都“标准化”到均值、方差相等。

那么均值和方差都标准化到多少呢?

假设样本集X的均值(mean)为m,标准差(standard deviation)为s,

那么X的“标准化变量”表示为:标准化变量的数学期望为0,方差为1。

因此,样本集的标准化过程(standardization)用公式描述就是:
X ∗ = X − m s X^*=\frac{X-m}{s} X=sXm
标准化后的值 = (标准化前的值 - 分量的均值) / 分量的标准差

标准化欧氏距离公式为:
d = ∑ k = 1 n ( x 1 k − x 2 k s k ) 2 d=\sqrt{\sum_{k=1}^{n}{(\frac{x_{1k}-x_{2k}}{s^k})^2}} d=k=1n(skx1kx2k)2
k表示每一个属性

6.马氏距离

协方差矩阵:S
D ( x i , x j ) = ( x i − x j ) T S − 1 ( x i − x j ) D(x_i,x_j)=\sqrt{(x_i-x_j)^TS^{-1}(x_i-x_j)} D(xi,xj)=(xixj)TS1(xixj)
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:
D ( X i , X j ) = ( X i − X j ) T ( X i − X j ) D(X_i,X_j)=\sqrt{(X_i-X_j)^T(X_i-X_j)} D(Xi,Xj)=(XiXj)T(XiXj)
若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离。

马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。

7.夹角余弦

几何中夹角余弦可以来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。

向量夹角余弦公式:
a ⋅ b = ∣ a ∣ ∣ b ∣ c o s θ a·b=|a||b|cos\theta ab=abcosθ

c o s θ = a ⋅ b ∣ a ∣ ∣ b ∣ cos\theta=\frac{a·b}{|a||b|} cosθ=abab

在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
c o s θ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 cos\theta=\frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}} cosθ=x12+y12 x22+y22 x1x2+y1y2
两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
c o s θ = ∑ k = 1 n x 1 k x 2 k ∑ k = 1 n x 1 k 2 ∑ k = 1 n x 2 k 2 cos\theta=\frac{\sum_{k=1}^{n}x_{1k}x_{2k}}{\sqrt{\sum_{k=1}^{n}x_{1k}^2}\sqrt{\sum_{k=1}^{n}x_{2k}^2}} cosθ=k=1nx1k2 k=1nx2k2 k=1nx1kx2k
夹角余弦的取值范围为[-1,1]。夹角余弦越大,表示两个向量的夹角越小,夹角余弦越小表示两个向量的夹角越大。

当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。

8.汉明距离

定义:

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

例如字符串“1111”与“1001”之间的汉明距离为2。

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

9.杰卡德距离&杰卡德相似系数

杰卡德相似系数(Jaccard similarity coefficient)

定义:两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数。
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B)=\frac{|A\cap B|}{|A\cup B|} J(A,B)=ABAB
杰卡德相似系数是衡量两个集合的相似度的一种指标。

杰卡德距离(Jaccard distance)

与杰卡德相似系数相反的概念是杰卡德距离。
j δ ( A , B ) = 1 − J ( A , B ) = ∣ A ∪ B ∣ − ∣ A ∩ B ∣ ∣ A ∪ B ∣ j_\delta (A,B)=1-J(A,B)=\frac{|A\cup B|-|A\cap B|}{|A\cup B|} jδ(A,B)=1J(A,B)=ABABAB
杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度

10.相关系数&相关距离

相关系数 ( Correlation coefficient )

ρ X Y = C o v ( X , Y ) D ( X ) D ( Y ) = E ( ( X − E X ) ( Y − E Y ) ) D ( X ) D ( Y ) \rho _{XY}=\frac{Cov(X,Y)}{\sqrt{D(X)}\sqrt{D(Y)}}=\frac{E((X-EX)(Y-EY))}{\sqrt{D(X)}\sqrt{D(Y)}} ρXY=D(X) D(Y) Cov(X,Y)=D(X) D(Y) E((XEX)(YEY))

Cov(X,Y)为X与Y的协方差

D(X)为X的方差,D(Y)为Y的方差,开根号就是标准差

E(X)为X的均值

相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。

相关系数的绝对值越大,则表明X与Y相关度越高。

当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。

相关距离(Correlation distance)

D X Y = 1 − ρ X Y D_{XY}=1-\rho _{XY} DXY=1ρXY

11.信息熵**(**Information Entropy)

信息熵并不属于一种相似性度量。

信息熵是衡量分布的混乱程度或分散程度的一种度量。

计算给定的样本集X的信息熵的公式:
E n t r o p y ( X ) = ∑ i = 1 n − p i l o g 2 p i Entropy(X)=\sum_{i=1}^n{-p_ilog_2p_i} Entropy(X)=i=1npilog2pi
n:样本集X的分类数

pi:X中第i类元素出现的概率

分布越分散(或者说分布越平均),信息熵就越大。
分布越集中(或者说分布越有序),信息熵就越小。

当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。

当X只有一个分类时,信息熵取最小值0

猜你喜欢

转载自blog.csdn.net/qq_41340996/article/details/124838531