当前位置: 首页 > article >正文

Python和MATLAB库尔巴克–莱布勒散度信息论统计学生物学和算法模型

🎯要点

  1. 高斯混合模型聚类和t分布随机邻域嵌入底层分析
  2. 信息论测量
  3. 复合彩票统计学计算结果
  4. 离散分布速率最优估计器
  5. 样本统计相似性
  6. 快速闭环散度和交叉熵计算
  7. 催乳素诱导模型贝叶斯快速推理模型
  8. 视觉皮层活动神经数据分布
    在这里插入图片描述

Python散度

在数理统计中,库尔巴克–莱布勒散度(也称为相对熵和 I 散度 ),表示为 D K L ( P ∥ Q ) D_{ KL }(P \| Q) DKL(PQ),是一种统计距离:衡量一个参考概率分布 P P P 与第二个概率分布 Q Q{ } Q 之间的差异。从数学上讲,它定义为
D K L ( P ∥ Q ) = ∑ x ∈ X P ( x ) log ⁡ ( P ( x ) Q ( x ) ) D_{KL}(P \| Q)=\sum_{x \in X } P(x) \log \left(\frac{P(x)}{Q(x)}\right) DKL(PQ)=xXP(x)log(Q(x)P(x))
让我们从离散情况开始。因此,让 P P P Q Q Q 成为在同一概率空间 X \mathcal { X } X 上定义的两个概率分布。第一次尝试可能是考虑分布之间差异的平均值。确实非常接近,但以下定义略有不同。库尔巴克–莱布勒散度(也称为相对熵)KL ( P ∥ Q ) (P \| Q) (PQ) 定义为概率 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x) 的对数之间差异的平均值:
K L ( P ∥ Q ) =  def  E [ log ⁡ P ( x ) − log ⁡ Q ( x ) ] KL(P \| Q) \stackrel{\text { def }}{=} E [\log P(x)-\log Q(x)] KL(PQ)= def E[logP(x)logQ(x)]
期望值使用概率 P P P(通常写为 x ∼ P x \sim P xP )计算。期望值的定义可得出以下表达式
K L ( P ∥ Q ) = ∑ x ∈ X P ( x ) log ⁡ ( P ( x ) Q ( x ) ) KL(P \| Q)=\sum_{x \in X } P(x) \log \left(\frac{P(x)}{Q(x)}\right) KL(PQ)=xXP(x)log(Q(x)P(x))
对于连续分布,我们写为
K L ( P ∥ Q ) = ∫ − ∞ ∞ p ( x ) log ⁡ ( p ( x ) q ( x ) ) d x KL(P \| Q)=\int_{-\infty}^{\infty} p(x) \log \left(\frac{p(x)}{q(x)}\right) d x KL(PQ)=p(x)log(q(x)p(x))dx
其中 p ( x ) p(x) p(x) q ( x ) q(x) q(x) 分别是 P P P Q Q Q 的密度。

如果 { p i } \left\{p_i\right\} {pi} { q i } \left\{q_i\right\} {qi} 是两个概率质量函数,即两个可数或有限的非负数序列,且和为 1,那么
∑ i p i log ⁡ ( p i q i ) ≥ 0 \sum_i p_i \log \left(\frac{p_i}{q_i}\right) \geq 0 ipilog(qipi)0
关于散度实际上表达了两个分布之间的某种距离,表达式
K L ( P ∥ Q ) = ∫ − ∞ p ( x ) ( log ⁡ p ( x ) − log ⁡ q ( x ) ) d x = ∫ − ∞ ∞ p ( x ) D ( x ) d x \begin{aligned} KL(P \| Q) & =\int_{-\infty} p(x)(\log p(x)-\log q(x)) d x \\ & =\int_{-\infty}^{\infty} p(x) D(x) d x \end{aligned} KL(PQ)=p(x)(logp(x)logq(x))dx=p(x)D(x)dx
P P P Q Q Q 为以下分布(每个可能的结果 x x x 都在 X = { 0 , 1 , 2 } X =\{0,1,2\} X={0,1,2} 中):
0 1 2  分布  P ( x ) 9 / 25 12 / 25 4 / 25  分布  Q ( x ) 1 / 3 1 / 3 1 / 3 \begin{array}{|c|c|c|c|} \hline & 0 & 1 & 2 \\ \hline \text { 分布 } P(x) & 9 / 25 & 12 / 25 & 4 / 25 \\ \hline \text { 分布 } Q(x) & 1 / 3 & 1 / 3 & 1 / 3 \\ \hline \end{array}  分布 P(x) 分布 Q(x)09/251/3112/251/324/251/3
我们来计算一下 K L ( P ∥ Q ) KL(P\|Q) KL(PQ)
K L ( P ∥ Q ) = ∑ x P ( x ) log ⁡ ( P ( x ) Q ( x ) ) = 9 / 25 log ⁡ ( 9 / 25 1 / 3 ) + 12 / 25 log ⁡ ( 12 / 25 1 / 3 ) + 4 / 25 log ⁡ ( 4 / 25 1 / 3 ) ≈ 0.0853 \begin{aligned} KL(P \| Q) & =\sum_x P(x) \log \left(\frac{P(x)}{Q(x)}\right) \\ & =9 / 25 \log \left(\frac{9 / 25}{1 / 3}\right)+12 / 25 \log \left(\frac{12 / 25}{1 / 3}\right)+4 / 25 \log \left(\frac{4 / 25}{1 / 3}\right) \\ & \approx 0.0853 \end{aligned} KL(PQ)=xP(x)log(Q(x)P(x))=9/25log(1/39/25)+12/25log(1/312/25)+4/25log(1/34/25)0.0853

使用Python评估

from scipy.stats import entropy
entropy([9/25, 12/25, 4/25], qk=[1/3, 1/3, 1/3])
0.0852996013183706
import matplotlib.pyplot as plt 
import numpy as np 

p = [9/25, 12/25, 4/25]
q = [1./3,1./3,1./3]
xx = ['0','1','2']

logq = np.log(q)
logp = np.log(p)

plt.bar(xx, q, color='beige')
plt.bar(xx, p, alpha=.6, color='orange')
plt.show()

plt.bar(xx, logq, color='beige')
plt.bar(xx, logp, alpha=.6, color='orange')
plt.show()
from scipy.stats import norm, skewnorm

x = np.arange(-3,2.5,.001)
plt.plot(x, 10*skewnorm.pdf(x,-1.2), color='black')
plt.plot(x, 10*norm.pdf(x, scale=1.1), color='orange')
log1 = np.log(skewnorm.pdf(x,-1.2))
log2 = np.log(norm.pdf(x, scale=1.1))
plt.plot(x, log1, color='black')
plt.plot(x, log2, color='orange')
plt.fill_between(x, log1, log2, 
                 where=log1>=log2, facecolor='grey', 
                 interpolate=True)
plt.fill_between(x, log1, log2, 
                 where=log1<log2, facecolor='orange', 
                 interpolate=True)
plt.show()

👉更新:亚图跨际


http://www.kler.cn/a/328379.html

相关文章:

  • MySQL 日志 主从复制
  • C++ 并发专题 - 线程安全的单例模式
  • 一个交替优化问题的求解
  • Chrome 浏览器 131 版本新特性
  • ### 哋它亢在5G基站中的应用:新兴技术与未来通信的融合
  • 通过华为鲲鹏认证发行上市的集成平台产品推荐
  • 李沐深度学习-多层感知机、模型选择、过拟合、欠拟合
  • PHP基础知识
  • 前端独立实现页面是否有发布
  • Android 热点分享二维码功能简单介绍
  • openpnp - 底部相机高级校正的参数设置
  • 第2篇:Linux入侵排查----应急响应篇
  • Python - PDF 转 png
  • Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)
  • EtherNET IP 转 Profinet 网关:工业通信的桥梁
  • css3-----2D转换、动画
  • 等保2.0数据库测评之达梦数据库测评
  • docker镜像下载【被丰厚】
  • JavaScript 用HTML5约束验证API做表单验证
  • 企业数据安全从0到1建设方法
  • 安全中心 (SOC) 与 网络运营中心 (NOC)
  • LLM之基于llama-index部署本地embedding与GLM-4模型对rag系统进行测评
  • 深度学习应用:改变世界的前沿科技
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • 并行编程实战——TBB框架的应用之一Supra的基础
  • Rust设计模式