样本间距离计算方法总结
1、熵的定义
在讲解决策树的博文中曾经提到过熵的定义,熵是表示随机变量不确定性的度量,熵越大,则随机变量的不确定性越大。设X是一个离散随机变量,X的概率分布为:
P(X=xi)=pi,i=1,2,3...,n
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
3...
,
n
则随机变量X的熵定义为:
H(X)=−∑i=1npilogpi
H
(
X
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
熵只依赖与X的分布,与X的取值无关,所以X的熵记做H(p),即
H(p)=−∑i=1npilogpi
H
(
p
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
2、相对熵
相对熵又称为KL散度(Kullback-Leibler Divergence),用来衡量两个分布之间的距离。设P和Q是X取值的两个离散概率分布:
P(X=xi)=pi,i=1,2,3...,nQ(X=xi)=qi,i=1,2,3...,n
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
3...
,
n
Q
(
X
=
x
i
)
=
q
i
,
i
=
1
,
2
,
3...
,
n
则 P P 对的相对熵记为 DKL(P||Q): D K L ( P | | Q ) :
DKL(P||Q)=EP[logP(X)Q(X)]=∑i=1nP(X=xi)logP(X=xi)Q(X=xi)=∑i=1nP(X=xi)logP(X=xi)−∑i=1nP(X=xi)logQ(X=xi)=−H(p)−∑i=1nP(X=xi)logQ(X=xi)=Hp(q)−H(p)
D
K
L
(
P
|
|
Q
)
=
E
P
[
log
P
(
X
)
Q
(
X
)
]
=
∑
i
=
1
n
P
(
X
=
x
i
)
log
P
(
X
=
x
i
)
Q
(
X
=
x
i
)
=
∑
i
=
1
n
P
(
X
=
x
i
)
log
P
(
X
=
x
i
)
−
∑
i
=
1
n
P
(
X
=
x
i
)
log
Q
(
X
=
x
i
)
=
−
H
(
p
)
−
∑
i
=
1
n
P
(
X
=
x
i
)
log
Q
(
X
=
x
i
)
=
H
p
(
q
)
−
H
(
p
)
这里 H(p) H ( p ) 为 P P 的熵,显然,当时,两者之间的相对熵 DKL(P||Q) D K L ( P | | Q ) =0.上式最后的 Hp(q) H p ( q ) 表示在 P P 分布下,使用进行编码需要的bit数,而 H(p) H ( p ) 表示对真实分布 P P 所需要的最小编码bit数。基于此,相对熵的意义就很明确了:表示在真实分布为 P P 的前提下,使用分布进行编码相对于使用真实分布 P P 进行编码(即最优编码)所多出来的bit数。
3、交叉熵
假设有两个分布P,Q,则它们在给定样本集上的交叉熵定义如下:
可以看出,交叉熵与上一节定义的相对熵仅相差了 H(p) H ( p ) ,当 P P 已知时,可以把看做一个常数,此时交叉熵与KL距离在行为上是等价的,都反映了分布P,Q的相似程度。最小化交叉熵等于最小化KL距离。它们都将在 P=Q P = Q 时取得最小值 H(p) H ( p ) ( P=Q P = Q 时KL距离为0)
4、交叉熵的应用
多分类的问题上,真实的类标签可以看作是分布,对某个样本属于哪个类别可以用One-hot的编码方式,是一个维度为C的向量,C表示有C个类别。比如在5个类别的分类中,[0, 1, 0, 0, 0]表示该样本属于第二个类,其概率值为1。我们把真实的类标签分布记为 P P ,该分布中,当属于它的真实类别 c c 时,。
同时,分类模型经过softmax函数之后,也是一个概率分布 Q Q ,因为,所以我们把模型的输出的分布记为q,它也是一个维度为C的向量,如[0.1, 0.8, 0.05, 0.05, 0]。 对一个样本来说,真实类标签分布与模型预测的类标签分布可以用交叉熵来表示:
CEH(P,Q)=−∑i=1CP(X=xi)logQ(X=xi)
C
E
H
(
P
,
Q
)
=
−
∑
i
=
1
C
P
(
X
=
x
i
)
log
Q
(
X
=
x
i
)
最终,对所有的样本,我们有以下损失函数:
L=−∑k=1n∑i=1CPk(X=xi)logQk(X=xi)
L
=
−
∑
k
=
1
n
∑
i
=
1
C
P
k
(
X
=
x
i
)
log
Q
k
(
X
=
x
i
)
其中 Pk(X=xi) P k ( X = x i ) 是样本 k k 属于类别的概率, Qk(X=xi) Q k ( X = x i ) 是样本 k k 预测为属于类别的概率。