1.欧氏距离(Euclidean Distance)
d
=
∑
i
=
1
n
(
x
i
−
y
i
)
2
d=\sqrt{\sum_{i=1}^n(x_i-y_i)^2}
d=i=1∑n(xi−yi)2
以古希腊数学家欧几里得命名的距离;也就是我们直观的两点之间直线最短的直线距离。
2.曼哈顿距离(Manhattan Distance)
d
=
∑
i
=
1
n
∣
x
i
−
y
i
∣
d=\sum_{i=1}^n|x_i-y_i|
d=i=1∑n∣xi−yi∣
是由十九世纪的赫尔曼·闵可夫斯基所创词汇;是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和;也就是和象棋中的“車”一样横平竖直的走过的距离;曼哈顿距离是超凸度量。
3.切比雪夫距离(Chebyshev Distance)
D
C
h
e
b
y
s
h
e
v
(
p
,
q
)
=
max
i
(
∣
p
i
−
q
i
∣
)
=
lim
k
→
∞
(
∑
i
=
1
n
∣
p
i
−
q
i
∣
k
)
1
/
k
D_{Chebyshev}(p,q)=\max_{i}(|p_i-q_i|)=\lim_{k \to \infty}(\sum_{i=1}^n|p_i-q_i|^k)^{1/k}
DChebyshev(p,q)=imax(∣pi−qi∣)=k→∞lim(i=1∑n∣pi−qi∣k)1/k
在数学中,切比雪夫距离(Chebyshev distance)或是L∞度量,是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量。
4.闵可夫斯基距离(Minkowski Distance)
d
=
∑
i
=
1
n
(
x
i
−
y
i
)
p
p
d=\sqrt[p]{\sum_{i=1}^n(x_i-y_i)^p}
d=pi=1∑n(xi−yi)p
以俄罗斯数学家闵可夫斯基命名的距离;是欧式距离的推广,p=2时等价于欧氏距离,和p-范数等值。
5.标准化欧氏距离(Standardized Euclidean Distance)
在对长方体区域进行聚类的时候,普通的距离无法满足要求,按照普通的距离聚类出的大多是圆形的区域,这时候要采用标准的欧式距离。
两个
n
n
n 维向量
a
(
X
11
,
X
12
,
X
13
,
…
,
X
1
n
)
与
b
(
X
21
,
X
22
,
…
,
X
2
n
)
a(X_{11},X_{12},X_{13},…,X_{1n})与b(X_{21},X_{22},…,X_{2n})
a(X11,X12,X13,…,X1n)与b(X21,X22,…,X2n)间的标准化欧氏距离公式为:
d
=
∑
k
=
1
n
(
x
1
k
−
x
2
k
s
k
)
2
d = \sqrt {\sum\limits_{k = 1}^n {{{\left( {\frac{{{x_{1k}} - {x_{2k}}}}{{{s_k}}}} \right)}^2}} }
d=k=1∑n(skx1k−x2k)2
其中s_k是分量的标准差。
对于长宽比为2:1的矩形进行聚类,使用标准欧式距离公式为:
d
=
(
x
2
−
x
1
2
)
2
+
(
y
2
−
y
1
1
)
2
d = \sqrt {{{\left( {\frac{{{x_2} - {x_1}}}{2}} \right)}^2} + {{\left( {\frac{{{y_2} - {y_1}}}{1}} \right)}^2}}
d=(2x2−x1)2+(1y2−y1)2
6.马氏距离(Mahalanobis Distance)
马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 对于一个均值为
μ
=
(
μ
1
,
μ
2
,
μ
3
,
⋯
 
,
μ
p
)
T
\mu {\text{ = }}{\left( {{\mu _1},{\mu _2},{\mu _3}, \cdots ,{\mu _p}} \right)^T}
μ = (μ1,μ2,μ3,⋯,μp)T
协方差矩阵为
Σ
\Sigma
Σ的多变量矢量
x
=
(
x
1
,
x
2
,
x
3
,
⋯
 
,
x
p
)
T
x{\text{ = }}{\left( {{x_1},{x_2},{x_3}, \cdots ,{x_p}} \right)^T}
x = (x1,x2,x3,⋯,xp)T
其马氏距离为
D
M
(
x
)
=
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
{D_M}\left( x \right) = \sqrt {{{\left( {x - \mu } \right)}^T}{\Sigma ^{ - 1}}\left( {x - \mu } \right)}
DM(x)=(x−μ)TΣ−1(x−μ)
马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为\Sigma的随机变量
x
⃗
\vec{x}
x与
y
⃗
\vec{y}
y的差异程度:
d
(
x
⃗
,
y
⃗
)
=
(
x
⃗
−
y
⃗
)
T
Σ
−
1
(
x
⃗
−
y
⃗
)
d(\vec{x},\vec{y})=\sqrt{(\vec{x}-\vec{y})^T\Sigma^{-1} (\vec{x}-\vec{y})}
d(x,y)=(x−y)TΣ−1(x−y)
如果协方差矩阵为单位矩阵,马氏距离就简化为欧式距离;如果协方差矩阵为对角阵,其也可称为正规化的马氏距离。
d
(
x
⃗
,
y
⃗
)
=
∑
i
=
1
p
(
x
i
−
y
i
)
2
σ
i
2
d(\vec{x},\vec{y})=\sqrt{\sum_{i=1}^p {(x_i - y_i)^2 \over \sigma_i^2}}
d(x,y)=i=1∑pσi2(xi−yi)2
其中
σ
i
σ_i
σi是
x
i
x_i
xi的标准差。
7.余弦距离(Cosine Distance)
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。公式如下:
s
i
m
(
x
→
,
y
→
)
=
cos
θ
=
x
→
⋅
y
→
∥
x
∥
⋅
∥
y
∥
sim\left( {\overrightarrow x ,\overrightarrow y } \right) = \cos \theta = \frac{{\overrightarrow x \cdot \overrightarrow y }}{{\left\| x \right\| \cdot \left\| y \right\|}}
sim(x,y)=cosθ=∥x∥⋅∥y∥x⋅y
8.皮尔逊相关系数(Pearson Correlation)
在统计学中,皮尔逊相关系数( Pearson\ correlation\ coefficient),又称皮尔逊积矩相关系数(Pearson product-moment\ correlation\ coefficient,简称 PPMCC或PCCs),是用于度量两个变量X和Y之间的相关
(
∗
∗
线
性
相
关
∗
∗
)
(**线性相关**)
(∗∗线性相关∗∗),其值介于-1与1之间。
ρ
X
,
Y
=
cov
(
X
,
Y
)
σ
X
σ
Y
=
E
[
(
X
−
μ
X
)
(
Y
−
μ
Y
)
]
σ
X
σ
Y
{\rho _{X,Y}} = \frac{{\operatorname{cov} \left( {X,Y} \right)}}{{{\sigma _X}{\sigma _Y}}} = \frac{{E\left[ {\left( {X - {\mu _X}} \right)\left( {Y - {\mu _Y}} \right)} \right]}}{{{\sigma _X}{\sigma _Y}}}
ρX,Y=σXσYcov(X,Y)=σXσYE[(X−μX)(Y−μY)]
9.汉明距离(Hamming Distance)
汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
# 举例说明以下字符串间的汉明距离为:
"karolin" and "kathrin" is 3.
"karolin" and "kerstin" is 3.
1011101 and 1001001 is 2.
2173896 and 2233796 is 3.
10.杰卡德相似系数(Jaccard Similarity Coefficient)
Jaccard index,又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。
给定两个集合A,B,Jaccard 系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:
J
(
A
,
B
)
=
∣
A
∩
B
∣
∣
A
∪
B
∣
J\left( {A,B} \right) = \frac{{\left| {A \cap B} \right|}}{{\left| {A \cup B} \right|}}
J(A,B)=∣A∪B∣∣A∩B∣
当集合A,B都为空时,J(A,B)定义为1。
11.Ochiai Coefficient
A,B分别代表符合某种条件的集合:两个集合的交集大小/两个集合大小的几何平均值。是余弦相似性的一种形式。
K
(
A
,
B
)
=
∣
A
∩
B
∣
∣
A
∣
×
∣
B
∣
K\left( {A,B} \right) = \frac{{\left| {A \cap B} \right|}}{{\sqrt {\left| A \right| \times \left| B \right|} }}
K(A,B)=∣A∣×∣B∣∣A∩B∣
是余弦相似性的一种形式。
11.布雷柯蒂斯距离(Bray Curtis Distance)
Bray Curtis距离主要用于生态学和环境科学,计算坐标之间的距离。该距离取值在[0,1]之间。它也可以用来计算样本之间的差异。
d
(
x
,
y
)
=
∑
k
=
1
n
∣
x
k
−
y
k
∣
∑
k
=
1
n
x
k
+
∑
k
=
1
n
y
k
d\left( {x,y} \right) = \frac{{\sum\limits_{k = 1}^n {\left| {{x_k} - {y_k}} \right|} }}{{\sum\limits_{k = 1}^n {{x_k}} {\text{ + }}\sum\limits_{k = 1}^n {{y_k}} }}
d(x,y)=k=1∑nxk + k=1∑nykk=1∑n∣xk−yk∣
12.Hausdorff距离
给定欧氏空间中的两点集
A
=
{
a
1
,
a
2
,
⋯
}
A = \left\{ {{a_1},{a_2}, \cdots } \right\}
A={a1,a2,⋯},
B
=
{
b
1
,
b
2
,
⋯
}
B = \left\{ {{b_1},{b_2}, \cdots } \right\}
B={b1,b2,⋯} ,Hausdorff距离就是用来衡量这两个点集间的距离。
H
(
A
,
B
)
=
max
[
h
(
A
,
B
)
,
h
(
B
,
A
)
]
H\left( {A,B} \right) = \max \left[ {h\left( {A,B} \right),h\left( {B,A} \right)} \right]
H(A,B)=max[h(A,B),h(B,A)]其中
h
(
A
,
B
)
=
max
a
∈
A
min
b
∈
B
∥
a
−
b
∥
h\left( {A,B} \right) = \mathop {\max }\limits_{a \in A} \mathop {\min }\limits_{b \in B} \left\| {a - b} \right\|
h(A,B)=a∈Amaxb∈Bmin∥a−b∥,
h
(
B
,
A
)
=
max
b
∈
B
min
a
∈
A
∥
b
−
a
∥
h\left( {B,A} \right) = \mathop {\max }\limits_{b \in B} \mathop {\min }\limits_{a \in A} \left\| {b - a} \right\|
h(B,A)=b∈Bmaxa∈Amin∥b−a∥ 。
H
(
A
,
B
)
H(A,B)
H(A,B)称为双向Hausdorff距离, 称为从点集A到点集B的单向Hausdorff距离。相应地 称为从点集B到点集A的单向Hausdorff距离。
13.Levenshtein Distance(Edit Distance)
Levenshtein Distance是一个度量两个字符序列之间差异的字符串度量标准,两个单词之间的Levenshtein Distance是将一个单词转换为另一个单词所需的单字符编辑(插入、删除或替换)的最小数量。Levenshtein Distance是1965年由苏联数学家Vladimir Levenshtein发明的。Levenshtein Distance也被称为编辑距离(Edit Distance)。
对于两个字符串a、b,长度分别为
∣
a
∣
\left | a \right |
∣a∣、
∣
b
∣
\left | b \right |
∣b∣,它们的
L
e
v
e
n
s
h
t
e
i
n
D
i
s
t
a
n
c
e
lev
a
,
b
(
∣
a
∣
,
∣
b
∣
)
Levenshtein Distance \operatorname{lev}_{a,b}(|a|,|b|)
LevenshteinDistanceleva,b(∣a∣,∣b∣)为:
lev
a
,
b
(
i
,
j
)
=
{
m
a
x
(
j
,
j
)
if min
(
i
,
j
)
=
0
m
i
n
{
lev
a
,
b
(
i
−
1
,
j
)
+
1
lev
a
,
b
(
i
,
j
−
1
)
+
1
lev
a
,
b
(
i
−
1
,
j
−
1
)
+
1
(
a
i
≠
b
j
)
otherwise
\operatorname{lev}_{a,b}(i,j)=\left\{\begin{matrix} max(j,j)& \text{if min}(i,j)=0\\ min\left\{\begin{matrix} \operatorname{lev}_{a,b}(i-1,j)+1 \\ \operatorname{lev}_{a,b}(i,j-1)+1 \\ \operatorname{lev}_{a,b}(i-1,j-1)+1_{(a_{i}\neq b_{j})} \end{matrix}\right.& \text{otherwise} \end{matrix}\right.
leva,b(i,j)=⎩⎪⎪⎨⎪⎪⎧max(j,j)min⎩⎨⎧leva,b(i−1,j)+1leva,b(i,j−1)+1leva,b(i−1,j−1)+1(ai̸=bj)if min(i,j)=0otherwise
其中当
a
i
=
b
j
a_{i}=b_{j}
ai=bj时,
1
(
a
i
≠
b
j
)
1_{(a_{i}\neq b_{j})}
1(ai̸=bj)为0,否则为1。
lev
a
,
b
(
i
,
j
)
\operatorname{lev}_{a,b}(i,j)
leva,b(i,j)就是a的前i个字符与b的前j个字符的编辑距离。
a、b的相似度 S i m a , b Sim_{a,b} Sima,b为 S i m a , b = 1 − ( lev a , b ( ∣ a ∣ , ∣ b ∣ ) / m a x ( ∣ a ∣ , ∣ b ∣ ) ) Sim_{a,b}=1-(\operatorname{lev}_{a,b}(\left | a \right |,\left | b \right |)/max(\left | a \right |,\left | b \right |)) Sima,b=1−(leva,b(∣a∣,∣b∣)/max(∣a∣,∣b∣))。
14.堪培拉距离(Canberra Distance)
堪培拉距离(Canberra Distance),被认为是曼哈顿距离的加权版本。
其定义公式为:
d
(
p
,
q
)
=
∑
i
=
1
n
∣
p
i
−
q
i
∣
∣
p
i
∣
+
∣
q
i
∣
d\left( {p,q} \right) = \sum\limits_{i = 1}^n {\frac{{\left| {{p_i} - {q_i}} \right|}}{{\left| {{p_i}} \right| + \left| {{q_i}} \right|}}}
d(p,q)=i=1∑n∣pi∣+∣qi∣∣pi−qi∣
通常兰氏距离对于接近于0(大于等于0)的值的变化非常敏感。与马氏距离一样,兰氏距离对数据的量纲不敏感。不过兰氏距离假定变量之间相互独立,没有考虑变量之间的相关性。
15.卡方检验
卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
https://www.jianshu.com/p/807b2c2bfd9b
16.相对熵
相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布
P
(
x
)
P(x)
P(x) 和
Q
(
x
)
Q(x)
Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
维基百科对相对熵的定义:
In the context of machine learning, D K L ( P ‖ Q ) D_{KL}(P‖Q) DKL(P‖Q) is often called the information gain achieved if P is used instead of Q.
(16)
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
p
(
x
i
)
q
(
x
i
)
)
D_{KL}(p||q)=\sum_{i=1}^np(x_i)log(\frac{p(x_i)}{q(x_i)}) \tag{16}
DKL(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))(16)
n
n
n为事件的所有可能性,
D
K
L
D_{KL}
DKL的值越小,表示
q
q
q分布和
p
p
p分布越接近。
17.交叉熵
对式6变形可以得到:
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
p
(
x
i
)
)
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
q
(
x
i
)
)
=
−
H
(
p
(
x
)
)
+
[
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
q
(
x
i
)
)
]
D_{KL}(p||q) = \sum_{i=1}^np(x_i)log(p(x_i))-\sum_{i=1}^np(x_i)log(q(x_i)) \\= -H(p(x))+[-\sum_{i=1}^np(x_i)log(q(x_i))]
DKL(p∣∣q)=i=1∑np(xi)log(p(xi))−i=1∑np(xi)log(q(xi))=−H(p(x))+[−i=1∑np(xi)log(q(xi))]
等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:
H
(
p
,
q
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
q
(
x
i
)
)
H(p,q)=-\sum_{i=1}^np(x_i)log(q(x_i))
H(p,q)=−i=1∑np(xi)log(q(xi))
在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即
D
K
L
(
y
∣
∣
y
^
)
D_{KL}(y||\hat{y})
DKL(y∣∣y^),由于KL散度中的前一部分
−
H
(
y
)
−H(y)
−H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。
18.JS散度
JS散度也称JS距离,是KL散度的一种变形。
D
J
S
(
p
∣
∣
q
)
=
1
2
D
K
L
(
p
∣
∣
p
+
q
2
)
+
1
2
D
K
L
(
q
∣
∣
p
+
q
2
)
{D_{JS}}\left( {p||q} \right) = \frac{1}{2}{D_{KL}}\left( {p||\frac{{p + q}}{2}} \right) + \frac{1}{2}{D_{KL}}\left( {q||\frac{{p + q}}{2}} \right)
DJS(p∣∣q)=21DKL(p∣∣2p+q)+21DKL(q∣∣2p+q)
但是不同于KL主要又两方面:
(1)值域范围
JS散度的值域范围是[0,1],相同则是0,相反为1。相较于KL,对相似度的判别更确切了。
(2)对称性
即 JS(P||Q)=JS(Q||P),从数学表达式中就可以看出。
如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。
19.Hellinger distance
Hellinger Distance 又称 Bhattacharyya distance,因为作者的姓氏叫 Anil Kumar Bhattacharya。在概率和统计学中,Hellinger Distance 被用来衡量两个概率分布之间的相似性,属于 f-divergence 的一种。而 f-divergence 又是什么呢?一个 f-divergence 是一个函数 Df(P||Q) 用来衡量两个概率分布P and Q 之间的不同。
H
(
P
,
Q
)
=
1
2
∑
i
=
1
k
(
p
i
−
q
i
)
2
H\left( {P,Q} \right) = \frac{1}{{\sqrt 2 }}\sqrt {\sum\limits_{i = 1}^k {{{\left( {\sqrt {{p_i}} - \sqrt {{q_i}} } \right)}^2}} }
H(P,Q)=21i=1∑k(pi−qi)2
20.F散度
在概率统计中,f散度是一个函数,这个函数用来衡量两个概率密度p和q的区别,也就是衡量这两个分布多么的相同或者不同。
p和q是同一个空间中的两个概率密度函数,它们之间的f散度可以用如下方程表示:
D
f
(
p
∣
∣
q
)
=
∫
q
(
x
)
f
(
p
(
x
)
q
(
x
)
)
d
x
{D_f}\left( {p||q} \right) = \int {q\left( x \right)f\left( {\frac{{p\left( x \right)}}{{q\left( x \right)}}} \right)} dx
Df(p∣∣q)=∫q(x)f(q(x)p(x))dx
f函数满足两个条件:
f
f
f函数是一个凸函数,并且
f
(
1
)
=
0
f(1)=0
f(1)=0。
如果f(x)=xlogx,那就是KL散度。如果是f(x)=-logx,那就表示reverse KL散度。