当我们想要得到一个随机事件的概率分布时,如果没有足够的信息来完全确定其概率分布,那么最为保险的方法就是选择一个使得熵最大的分布。

最大熵模型

  • 1.信息论知识
    • 1.1信息熵的概念
    • 1.2.条件熵
    • 1.3相对熵
    • 1.4互信息
    • 1.5几个量之间的关系
  • 2.无约束条件
  • 3.最大熵原理
    • 3.1构造约束条件
    • 3.2求解概率分布

1.信息论知识

  这里就照搬我写的一篇关于决策树的内容了。原文链接:决策树与随机森林(从入门到精通)

1.1信息熵的概念

   设离散型随机变量X的取值有x1,x2,x3,...,xnx_{1},x_{2},x_{3},...,x_{n}x1​,x2​,x3​,...,xn​,其发生概率分别为p1,p2,p3,...,pnp_{1},p_{2},p_{3},...,p_{n}p1​,p2​,p3​,...,pn​,那么就可以定义信息熵为:

一般对数的底数是2,当然也可以换成e,当对数底数为2时,信息熵的单位为比特,信息熵也称香农熵。当对数不为2而是其他大于2的整数r时,我们称信息熵为r-进制熵,记为Hr(X)H_{r}(X)Hr​(X),它与信息熵转换公式为:

信息熵用以描述信源的不确定度, 概率越大,可能性越大,但是信息量越小,不确定性越小,熵越小。

1.2.条件熵

设随机变量(X,Y)具有联合概率分布:

  条件熵H(Y∣X)H(Y|X)H(Y∣X)表示 在已知随机变量X的条件下随机变量Y的不确定性。可以这样理解:(X,Y)发生所包含的熵,减去X单独发生的熵,就是在X发生的前提下,Y发生新带来的熵。
所以条件熵有如下公式成立:

推导如下:

1.3相对熵

  相对熵,又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度等。定义如下:
设p(x),q(x)是随机变量X中取值的两个概率分布,则p对q的相对熵为:

在信息理论中,相对熵等价于两个分布的信息熵(Shannon entropy)的差值。 即:

1.4互信息

  两个随机变量X和Y的互信息,定义为X,Y的联合分布和独立分布乘积的相对熵。即:

所以根据KL散度也就是相对熵的定义,可以推出互信息的表达式如下:

继续推导如下:

所以最后有:

1.5几个量之间的关系

结合上述条件熵的两个表达式,可以进一步推出:

当然我们也可以根据熵的定义来直接推出上面这个互信息的公式:

同时我们也可以得到两个不等式:

上面这个不等式告诉我们,对于一个与X相关的随机变量Y,只要我们得知了一点关于Y的信息,那么X的不确定度就会减小。
最后,借助强大的韦恩图来记住这些关系:

2.无约束条件

  假设有一随机变量X是离散的,我们只是知道它有K个可能的取值,其余什么信息都不知道,那么我们该如何估计才能使得熵最大呢?

X 1…K
p p1…pK
根据上面熵的定义,我们知道我们要做的其实就是:

概率相加为1这个条件肯定得是天然满足的,换成求最小值:

同样利用拉格朗日乘子法,我们令:

我们让L对pip_{i}pi​求导得:

  可以看到,每一个pip_{i}pi​都是一个相等的常数,又因为相加为1,所以每一个取值发生的概率都相等并且为1/K。因此,不知道任何已知条件的情况下,离散的随机变量均匀分布时,它的熵最大。

3.最大熵原理

  我们设数据集为(x1,x2,...,xN)(x_{1},x_{2},...,x_{N})(x1​,x2​,...,xN​)。
  最大熵原理认为:在所有可能的概率模型中,熵最大的模型为最好的概率模型。求最大熵模型的步骤大致为:

  1. 根据已知约束条件筛选出可能的概率模型
  2. 在所有可能的概率模型中选出一个熵最大的模型作为最终的模型。

3.1构造约束条件

  我们第一步要根据已知条件筛选出可能的概率模型,那么什么才是已知条件?这个需要我们自己构造,构造步骤如下:

  • 我们定义一个f(x),f(x)是任意一个关于随机变量x的函数,我们称它为特征函数。
  • 根据我们上面给出的训练数据集,我们可以得到f(x)的经验分布为p^(f(x))\hat{p}(f(x))p^​(f(x)),进而求得其经验分布的期望为:Ep^[f(x)]E_{\hat{p}}[f(x)]Ep^​​[f(x)]=一个已知量。
  • 解释一下经验分布:p^(f(x1))\hat{p}(f(x1))p^​(f(x1))=x1x_{1}x1​在训练集中出现的次数/样本集的总数目。

   为什么我们要定义一个经验概率分布呢? 因为如果我们判断的随机变量x的概率分布是正确的,那么我们定义一个任意一个特征函数f(x),算出它的经验概率分布的期望,应该就等于f(x)真实的期望,这样我们就构造了一个约束条件。

3.2求解概率分布

那么我们最终要求解的就是:

其中δ\deltaδ已知。利用拉格朗日乘子法,我们令:

其中λ0是一个常数,λ是一个列向量,\lambda_{0}是一个常数,\lambda是一个列向量,λ0​是一个常数,λ是一个列向量,f(x)也是一个列向量,它们都是Q维。我们让L对p(x)p(x)p(x)求导得:

于是我们就得到了p(x)p(x)p(x)的具体值,也就是x的具体分布。剩余参数可以通过KKT条件来求,这里就不再叙述了,具体可以参考:强对偶性、弱对偶性以及KKT条件的证明(对偶问题的几何证明)

机器学习---最大熵模型(MEM)小结相关推荐

  1. 机器学习--最大熵模型

    参考链接:https://www.jianshu.com/p/e7c13002440d https://www.cnblogs.com/wxquare/p/5858008.html 详解机器学习中的熵 ...

  2. 机器学习-最大熵模型

    最大熵模型是一种分类模型,它学习之后对某个x判断的结果是一个概率,即对一个自变量,它的分类分别是y1,y2,y3-yn的概率,然后概率最大的分类结果就是我们所要的结果分类ym. 最大熵原理 最大熵原理 ...

  3. 最大熵模型(MEM)

    最大熵模型的优点在于可以添加任意自定义特征,且不需要保持维度一致性(通俗而言,就是每个样本满足哪些特征,就放哪些特征:特征函数的取值均为 0 或 1:放进来的特征即表示该样本在该特征维度上取值为 1, ...

  4. 最大熵(max entropy)模型原理小结

    最大熵(max entropy)模型原理小结 1. 认识各种"熵" 1.1 信息量:信息的度量 1.2 熵:信息量的期望,不确定性的度量 1.3 联合熵 1.4 条件熵 1.5 互 ...

  5. 【机器学习基础】数学推导+纯Python实现机器学习算法22:最大熵模型

    Python机器学习算法实现 Author:louwill Machine Learning Lab 最大熵原理(Maximum Entropy Principle)是一种基于信息熵理论的一般原理,在 ...

  6. 【机器学习】LR与最大熵模型的关系

    逻辑回归与最大熵模型MaxEnt的关系? 逻辑回归跟最大熵模型到底有啥区别呢? 简单粗暴 的回答是:逻辑回归跟最大熵模型没有本质区别.逻辑回归是最大熵对应类别为二类时的特殊情况,也就是当逻辑回归类别扩 ...

  7. 【机器学习】最大熵模型(Maximum Entropy Model)

    最大熵模型(Maximum Entropy Model,以下简称MaxEnt),MaxEnt 是概率模型学习中一个准则,其思想为:在学习概率模型时,所有可能的模型中熵最大的模型是最好的模型:若概率模型 ...

  8. 【机器学习】对数线性模型之Logistic回归、SoftMax回归和最大熵模型

    来源 | AI小白入门 作者 | 文杰 编辑 | yuquanle 完整代码见:原文链接 1. Logistic回归 ​ 分类问题可以看作是在回归函数上的一个分类.一般情况下定义二值函数,然而二值函数 ...

  9. 各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 链接:https://www.zhihu.com/question ...

最新文章

  1. centos7.9 配置nginx实现前后端分离
  2. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--L-用来作弊的药水
  3. [Java Web – Maven – 1A]maven 3.3.3 for windows 配置(转)
  4. ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记
  5. mysql undrop_MySQL · 数据恢复 · undrop-for-innodb
  6. php类和自定义函数实例,php中三个调用用户自定义函数实例详解
  7. Hexo添加Follow me on CSDN效果
  8. Spring Boot 2.x 注册 Servlet 三大组件 Servlet、Filter、Listener
  9. 单代号网络图计算例题_海量优质网络图模板,轻巧实用的国产作图神器
  10. 【Windows Mobile】Win10 停留在加载界面无法进入主界面
  11. centos下载和安装mongodb
  12. Vuforia Vumark初探
  13. S3C2440裸机------GPIO
  14. Linux IP代理筛选系统
  15. leetcode之Kth Largest Element in an Array
  16. 搭建一整套电销机器人系统需要哪些技术和资源
  17. 怎么用python编写程序计算标准差_自学生信Python(第五天)|如何计算标准差?...
  18. java 删除指定文件夹内所有文件
  19. 软件测试与游戏测试的不同之处
  20. 复旦大学陈怡然:文本摘要的跨数据集迁移研究

热门文章

  1. windows 10 系统重装
  2. call方法apply方法
  3. 计算机一级word网上学习教程,计算机一级《MS Office》的复习方法与应试技巧
  4. SAP PP组织结构及概念
  5. unity18——对模型所有mash平滑组优化处理
  6. YUV和RGB的相互转换实验
  7. 网络推广的三个重点方向
  8. Python学习笔记(4)-字符串操作
  9. 茶会 | 电商微营销茶会第1期预告
  10. html添加启动项,csgo启动项参数 教你如何添加启动项