相对熵(KL散度)计算过程
2018-03-29 00:59
423 查看
KL散度(Kullback-Leibler Divergence)也叫做相对熵,用于度量两个概率分布之间的差异程度。
比如随机变量X∼PX∼P取值为1,2,31,2,3时的概率分别为[0.2,0.4,0.4][0.2,0.4,0.4],随机变量Y∼QY∼Q取值为1,2,31,2,3时的概率分别为[0.4,0.2,0.4][0.4,0.2,0.4],则:
D(P∥Q)=0.2×log(0.20.4)+0.4×log(0.40.2)+0.4×log(0.40.4)=0.2×−0.69+0.4×0.69+0.4×0=0.138(3)(3)D(P∥Q)=0.2×log(0.20.4)+0.4×log(0.40.2)+0.4×log(0.40.4)=0.2×−0.69+0.4×0.69+0.4×0=0.138
Python代码实现,离散型KL散度可通过SciPy进行计算:
KL散度的性质:
DKL(P∥Q)≥0DKL(P∥Q)≥0,即非负性。
DKL(P∥Q)≠DKL(Q∥P)DKL(P∥Q)≠DKL(Q∥P),即不对称性。
(没怎么用到,后面再补吧)
离散型
DKL(P∥Q)=∑i=1nPilog(PiQi)DKL(P∥Q)=∑i=1nPilog(PiQi)比如随机变量X∼PX∼P取值为1,2,31,2,3时的概率分别为[0.2,0.4,0.4][0.2,0.4,0.4],随机变量Y∼QY∼Q取值为1,2,31,2,3时的概率分别为[0.4,0.2,0.4][0.4,0.2,0.4],则:
D(P∥Q)=0.2×log(0.20.4)+0.4×log(0.40.2)+0.4×log(0.40.4)=0.2×−0.69+0.4×0.69+0.4×0=0.138(3)(3)D(P∥Q)=0.2×log(0.20.4)+0.4×log(0.40.2)+0.4×log(0.40.4)=0.2×−0.69+0.4×0.69+0.4×0=0.138
Python代码实现,离散型KL散度可通过SciPy进行计算:
from scipy import stats P = [0.2, 0.4, 0.4] Q = [0.4, 0.2, 0.4] stats.entropy(P,Q) # 0.13862943611198905 P = [0.2, 0.4, 0.4] Q = [0.5, 0.1, 0.4] stats.entropy(P,Q) # 0.3195159298250885 P = [0.2, 0.4, 0.4] Q = [0.3, 0.3, 0.4] stats.entropy(P,Q) # 0.03533491069691495
KL散度的性质:
DKL(P∥Q)≥0DKL(P∥Q)≥0,即非负性。
DKL(P∥Q)≠DKL(Q∥P)DKL(P∥Q)≠DKL(Q∥P),即不对称性。
连续型
DKL(P∥Q)=∫+∞−∞p(x)logp(x)q(x)dxDKL(P∥Q)=∫−∞+∞p(x)logp(x)q(x)dx(没怎么用到,后面再补吧)
相关文章推荐
- 交叉熵、相对熵及KL散度通俗理解
- 相对熵(KL散度)
- 相对熵(KL散度)
- 相对熵(KL散度)
- 相对熵(互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度即KL散度)的深入理解
- KL 散度,相对熵
- 【原】浅谈KL散度(相对熵)在用户画像中的应用
- 交叉熵cross entropy和相对熵(kl散度)
- 熵,交叉熵,相对熵(KL散度)
- 相对熵(KL散度)
- 熵、交叉熵、相对熵(KL 散度)意义及其关系
- KL散度 自信息 熵 相对熵 KL divergence entropy
- 特征选择--信息增益(相对熵、KL散度、KL距离)
- 10.2 香农熵、相对熵(KL散度)与交叉熵
- 相对熵(KL散度)
- 最大似然估计,交叉熵,相对熵(KL散度)
- 机器学习基础(五十八)—— 香农熵、相对熵(KL散度)与交叉熵
- Hadoop计算框架shuffle过程详解
- 最大值计算过程(Find the Largest Number)
- KL散度,相对熵