数量遗传或生统数据分析

最大熵模型

2019-02-28  本文已影响81人  madao756

前言:艰难的最大熵模型。最大熵有很多很难的地方,这篇文章不会去讲预备知识,而是在这个知识出现的时候,先讲结论,再来叙述。这样做的目的就是你可以记住结论,跳过这一个模块。来吧,让我们开始

最大熵原理

最大熵原理是概率学习的一个准则,最大熵原理认为,学习概率模型时,在所有的概率模型分布中,熵最大的模型是最好的模型

H(P)=-\sum{P(x)logP(x)}

要记住,我们训练就要使这个式子最大,得到P(x)的分布。

条件熵

做分类的时候,我们不光有 x 还有 y 。也就是说,我们要做有条件的最大熵。这时引入条件熵。
结论:推导出条件熵的公式,训练使条件熵最大

一开始看这个式子的时候,搞不清楚 P(x, y) 和 P(y | x) 的区别。

其实

P(x, y) = \frac{V(X=x, Y=y)}{N}

P(y | x) = \frac{P(x, y)}{P(x)}

优化条件熵的约束

现在,我们的问题转换成

最大化

但是习惯于最小化,所以变成

最小化

约束

约束条件的由来

约束条件下的优化

在约束条件下求函数最值,引入拉格朗日函数,文章篇幅不宜过长,我在另一篇文章介绍拉格朗日函数及其对偶性

先记住结论,由于拉格朗日函数及其对偶性,我们把约束条件和要最小化的函数整合到了一块

最小化
L(P, w) = -H(P) + w_{0}(1-\sum_{y}{P(y|x)}) + \sum_{i=1}^{n}w_{i}(E_{p}(f_{i})-E_{\widetilde p}(f_{i}))

其中:

求导

L(P, w)P(y|x)导数,得到的P(y|x)模型就是我们要求的模型,并记做P_{w}(y|x)

具体推导看《统计学习方法》,在这里补充他没有讲到的地方

求导得到

P_{w}(y|x) = \frac{exp(\sum_{i=1}^{n}w_{i}f_{i}(x,y))}{exp(1-w_{0})}

记做

P_w(y|x)=\frac{1}{Z_{w}(x)}exp(\sum_{i=1}^{n}w_{i}f_{i}(x,y))

现在推导Z_w(x):
\because \sum_{y}^{}{P(y|x)} = 1
\therefore \sum_{y}{\frac{1}{Z_{w}(x)}exp(\sum_{i=1}^{n}w_{i}f_{i}(x,y))} = 1
\therefore Z_w(x) = \sum_{y}exp(\sum_{i=1}^{n}w_{i}f_{i}(x,y))

在这里 Z_w(x)被称为规范因子,w_i是特征的权值,P_{w}(y|x)就是学习到的模型。

求解参数

通过上一步的求导,得到P_{w}(y|x),带入最上面提到的拉格朗日的函数。

最后对w求导取零得到最优参数

直接求导等于零,太复杂了。不能直接求出解析解。我们要换个思路,在换个思路之前,我们要提一提极大似然估计

极大似然估计

不写公式推导了,《统计学习方法》写的很详细了
只需知道

换个思路求最优参数

写到这里,离最后实现代码真的不远了,到最后自己实现的时候,代码真的不难,难的是里面的数学原理,太复杂了

这一节主要告诉你用改进的迭代尺度算法更新参数,具体证明我也不会,只需要知道如何更新参数就能完成代码了

算法(改进的迭代尺度算法IIS)

详见《统计学习方法》,在这里不详细叙述了

实现

GitHub

实现有一个很难的地方,不知道如何去计算

参考

上一篇下一篇

猜你喜欢

热点阅读