各种形式的熵函数,KL距离
自信息量I(x)=-log(p(x)),其他依次类推。
离散变量x的熵H(x)=E(I(x))=-$\sum\limits_{x}{p(x)lnp(x)}$
连续变量x的微分熵H(x)=E(I(x))=-$\int{p(x)lnp(x)dx} $
条件熵H(y|x)=-$\int\int{p(x,y)lnp(y|x)dydx}$
两个变量X和 Y 的联合熵定义为:
H(X,Y)=-$\int\int{p(x,y)lnp(x,y)dxdy}$
H(x,y)=H(y|x)+H(x)
若x,y独立,H(x,y)=H(x)+H(y),此时对x的了解不能增进对y的了解。
交叉熵Cross Entropy
H(p;q)=-$\int{p(x)lnq(x)dx}$
很少见,通常使用KL距离
Kullback-Leibler divergence:KL(p||q)=-$\int{p(x)lnq(x)dx}-(-\int{p(x)lnp(x)dx})$=H(p)+H(p;q)=-$\int{p(x)ln{\frac{q(x)}{p(x)}}dx}$
p=q时,KL(p||q)=0,H(p;q)=H(p)
交叉熵与kl距离相差一个H(p)
当p未知而q已知时,通过改变KL中的p、q的位置,可以减少未知量,便于计算相似度。
交叉熵是一种万能的Monte-Carlo技术,常用于稀有事件的仿真建模、多峰函数的最优化问题。交叉熵技术已用于解决经典的旅行商问题、背包问题、最短路问题、最大割问题等。这里给一个文章链接:A Tutorial on the Cross-Entropy Method
交叉熵算法的推导过程中又牵扯出来一个问题:如何求一个数学期望?常用的方法有这么几种:
概率方法,比如Crude Monte-Carlo
测度变换法change of measure
偏微分方程的变量代换法
Green函数法
Fourier变换法
在实际中变量X服从的概率分布h往往是不知道的,我们会用g来近似地代替h----这本质上是一种函数估计。有一种度量g和h相近程度的方法叫 Kullback-Leibler距离,又叫交叉熵,通常选取g和h具有相同的概率分布类型(比如已知h是指数分布,那么就选g也是指数分布)----参数估计,只是pdf参数不一样(实际上h中的参数根本就是未知的)。
基于期望交叉熵的特征项选择
CE(w)=$\sum\limits_{i}p(c_{i}|w)log\frac{p(c_{i}|w}{p(c_{i}}$
p(ci|w)表示在出现词条w时文档属于类别ci的概率。
交叉熵反应了文本类别的概率分布与在出现了某个词条的情况下文本类别的概率分布之间的距离。词条的交叉熵越大,对文本类别分布影响也就越大。所以选CE最大的K个词条作为最终的特征项。
互信息Mutual Informantion
yj对xi的互信息定义为后验概率与先验概率比值的对数。
I(x,y)=log$\frac{p(x|y)}{p(x)}=I(x)-I(x|y)$
互信息越大,表明y对于确定x的取值的贡献度越大。
系统的平均互信息
I(X,Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)
可见平均互信息就是信息增益!
I(X,Y)=KL(p(x,y)||p(x)p(y))=-$\int\int{p(x,y)ln(\frac{p(x)p(y)}{p(x,y)})dxdy}$
互信息在特征选择中的应用
词条w与类别ci的互信息为
MI(w,c)=log$\frac{p(w|c)}{p(w)}$
p(w)表示出现w的文档点总文档数目的比例,p(w|ci)表示在类别ci中出现w的文档点总文档数目的比例。
对整个系统来说,词条w的互信息为
$MI_{avg}(w,c)=\sum\limits_{i}p(c)log\frac{p(w|c)}{p(w)}$
最后选互信息最大的前K个词条作为特征项。
各种形式的熵函数,KL距离的更多相关文章
- (转载)KL距离,Kullback-Leibler Divergence
转自:KL距离,Kullback-Leibler Divergence KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对 ...
- [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取
算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...
- 最大熵与最大似然,以及KL距离。
DNN中最常使用的离散数值优化目标,莫过于交差熵.两个分布p,q的交差熵,与KL距离实际上是同一回事. $-\sum plog(q)=D_{KL}(p\shortparallel q)-\sum pl ...
- KL距离,Kullback-Leibler Divergence
http://www.cnblogs.com/ywl925/p/3554502.html http://www.cnblogs.com/hxsyl/p/4910218.html http://blog ...
- 【转载】 KL距离(相对熵)
原文地址: https://www.cnblogs.com/nlpowen/p/3620470.html ----------------------------------------------- ...
- KL距离(相对熵)
KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy).它衡量的是相同事件空间里的两个概率分 ...
- KL散度、JS散度、Wasserstein距离
1. KL散度 KL散度又称为相对熵,信息散度,信息增益.KL散度是是两个概率分布 $P$ 和 $Q$ 之间差别的非对称性的度量. KL散度是用来 度量使用基于 $Q$ 的编码来编码来自 $P$ 的 ...
- PRML读书会第十章 Approximate Inference(近似推断,变分推断,KL散度,平均场, Mean Field )
主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:02:04 我们在前面看到,概率推断的核心任务就是计算某分布下的某个函数的期望.或者计算边缘概率分布.条件 ...
- 信息论相关概念:熵 交叉熵 KL散度 JS散度
目录 机器学习基础--信息论相关概念总结以及理解 1. 信息量(熵) 2. KL散度 3. 交叉熵 4. JS散度 机器学习基础--信息论相关概念总结以及理解 摘要: 熵(entropy).KL 散度 ...
随机推荐
- 远程连接MySQL MySQL的远程连接
在笔记本上安装了mysql, 想测试一下连接池对性能的影响,用了另一台PC来测试一段sql,出现以下错误: jdbc:mysql://10.201.11.128:3306/test Cannot cr ...
- 给大一新生学习c程序的一些建议的一些建议
这是一篇给刚学习c程序的学弟们的一篇日志.如果想学好c程序,以及不想走太多弯路,希望能看一下这篇文章,如果说基础较好,或者说已经是大二,大三,这篇文章不会有什么帮助. 刚转到软件工程系,加了几个新生群 ...
- MySql连接时出现1251 client does no support authentic错误解决方法
使用Navicat Premium软件连接时,报错: 解决方法: 修改配置项:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password B ...
- [osg][osgEarth][osgGA][原] EarthManipulator------基于oe的相机漫游器(浅析)
知识基础:osg漫游器基础 class OSGEARTHUTIL_EXPORT EarthManipulator : public osgGA::CameraManipulator EarthMani ...
- eclipse中启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误
原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因2:eclipse的版本与jre或者jdk版本不一致 ...
- 力扣(LeetCode)976. 三角形的最大周长
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. 示例 1: 输入:[2,1,2] 输出:5 示例 2 ...
- 将本地项目上传到gitlab下
转载自: https://blog.csdn.net/litianxiang_kaola/article/details/74075151 1.安装git https://git-scm.com ...
- lua --- unpack
unpack 返回数组中的所有元素,包括 nil,注意是数组,对于 k-v 是不返回的!!! do , ,o = } print(unpack(tab)) --默认从索引 1 开始 )) --从索引 ...
- Python全栈开发-Day2-Python基础2
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- Appium的工作原理
把我们写的python语言代码,看做客户端 通过客户端向appium服务器发送请求 appium服务器把我们的代码转换成手机可以识别的指令 然后把指令发给手机,手机根据指令做出相应的操作 最后手机把操 ...