一、最大熵模型
证明: ,求导是凸函数,在x=1处取得极值
1、熵
熵是信息的度量,与信心量成反比。
信息量:
事件发生的概率越高,对应的信息量越低,事件发生的概率越小,对应的信息量越大。
熵是信息量的期望:
两点分布的最大熵:
三点分布:
p1=p2=p3的时候,曲面的值最高(图1)
当X满足均匀分布时,熵最大:
联合熵和条件熵
联合熵:H(X,Y),表示X,Y同时发生的不确定性
解释:联合熵=X发生的熵+X发生的条件下Y发生的熵
联合熵的性质:
- 联合熵>=变量熵中最大的
- 联合熵<=变量熵之和
条件熵:Y发生的条件下,X发生的不确定性
相对熵
度量两个分布之间的差异
如果用距离度量的话,两个分布的点的个数要相等,如果不等的话,无法进行单个点距离的度量。
E_px 表示期望
证明 :利用Jenson不等式,
Jensen不等式表述如下:
如果f是凸函数,X是随机变量,那么
- 如果f是凹函数,X是随机变量,那么
交叉熵
互信息
(五六行添加负号)
总结
2、最大熵模型
承认已知事物
对未知事物不做任何假设,没有任何偏见
示例:
假设1:
假设2:
利用最大熵模型:
承认已知的X,让未知的Y的概率最大。
写成一般的形式:
最大熵原则:
对于一个随机事件的概率分布进行预测时,预测应当满足全部已知的约束,而对未知的情况下不做任何主观的假设,在这种情况下,概率分布是最均匀的,预测的风险性最小,因此得到的概率分布的熵最大。
最大熵原则就是使得未知部分的概率分布都相等,因为相等情况下不确定性最大,也就是熵最大。
正态分布是给定均值和方差情况下的最好的分布,熵最大的分布。
示例2:
写成拉格朗日函数的样子求解:
求解:
只剩lambda为未知的,求解,指数函数的解析解很难求:
前面是条件熵,后面是常数,所以极大似然估计和最大熵模型具有相同的形式。
但是最大熵函数的目标函数好建立
最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。
最大熵模型的优点有:
a) 最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型,作为经典的分类模型时准确率较高。
b) 可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度
最大熵模型的缺点有:
a) 由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难
二、EM算法(期望最大化算法)
我们经常会从样本数据中,找出最可能得到该样本的模型参数,最常用的就是对数似然函数。
但是在一些情况下,得到的观察数据含有未观察到的隐含数据,此时的隐含数据和模型参数都变成了未知的,所以无法用极大化对数似然函数的模型来得到模型的参数。
EM算法解决含有未知观测数据的思路是利用启发式的迭代方法,既然我们没法直接求得模型分布参数,那么可以先猜想隐含数据(E步),接着基于观察数据和猜想数据来极大化对数似然函数(M步),求解模型参数。
由于之前的数据是猜测的,所以得到的模型参数一般还不是我们想要的结果,不过基于当前得到的模型参数,继续猜测隐含数据,然后继续极大化对数似然,求解我们的模型参数,以此类推,不断迭代,直到模型分布参数基本无变化,算法收敛,得到最优参数。
kmeans无法给出属于某类的可信度
利用极大似然估计推出EM算法:
上式是先取对数,再求导=0,得到0.7。
假设含有隐变量的似然函数为:
对上式取ln:
对数函数中有加和项,难以求得解析解,故求近似最优解。
要求迭代至得到 ,即 ,迭代若干次,就是渐渐逼近最优解。
被称为下确界函数,我们要使得
尽可能的大,就要使得
尽可能的大,所以我们每次求得下确界函数的极大值(求偏导=0,得到极大值),将该极大值带入似然函数,求得新的下确界函数,一直迭代到
,得到的参数即为最优参数。
红色那条线就是我们的对数似然函数,蓝色那条是我们在当前参数下找到的对数似然的下界函数,可以看到,我们找到它的局部极值那么参数更新成thetanew,此时对数似然函数的值也得到了上升,这样重复进行下去,是不是就可以收敛到对数似然函数的一个局部极值了嘛。对的,局部极值
EM算法思想:
含有隐含项的最大似然函数难求解–>求得下边界函数的极值->将其看做此时的函数参数–>得到新的似然函数–>再次得到新的下边界曲线–>迭代至收敛
1 拿到所有的观测样本,根据先验或者喜好先给一个参数估计。
2 根据这个参数估计和样本计算类别分布Q,得到最贴近对数似然函数的下界函数。
3 对下界函数求极值,更新参数分布。
4 迭代计算,直至收敛。
EM算法的流程:
输入:已知数据Y,和未知隐变量Z(随机赋值)
输出:
1°:给
随机赋初值
2°:E步,令
为第n次已经求得的参数,对
以
为概率求期望。
3°:M步,对
函数求偏导,得到极大值,得到使得其获得极大值的
值。
4°:重复2和3步,直到
5°:输出最优模型参数
EM算法可以保证收敛到一个稳定点,但是不能保证收敛到全局的极大值点,因此是局部的最优算法。当然,如果我们的优化目标是凸的,则EM算法可以保证收敛到全局最大值。
如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。比较下其他的机器学习算法,其实很多算法都有类似的思想。比如SMO算法(支持向量机原理(四)SMO算法原理),坐标轴下降法(Lasso回归算法: 坐标轴下降法与最小角回归法小结), 都使用了类似的思想来求解问题。
三、GMM
高斯混合模型指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同分布的情况,或者是同一类分布但是参数不同,或者是不同类型的分布。
GMM中,样本的分类标签是未知的
下图中,明显是两个类别,如果没有GMM,那么只能用一个二维高斯分布来描述图1的数据。
这时候就可以使用GMM了!
如图2,数据在平面上的空间分布和图1一样,这时使用两个二维高斯分布来描述图2中的数据,分别记为
和
. 图中的两个椭圆分别是这两个高斯分布的二倍标准差椭圆。可以看到使用两个二维高斯分布来描述图中的数据显然更合理。实际上图中的两个聚类的中的点是通过两个不同的正态分布随机生成而来。如果将两个二维高斯分布
和
合成一个二维的分布,那么就可以用合成后的分布来描述图2中的所有点。最直观的方法就是对这两个二维高斯分布做线性组合,用线性组合后的分布来描述整个集合中的数据。这就是高斯混合模型(GMM)。
GMM:
设有随机变量X ,则混合高斯模型可以用下式表示:
其中 称为混合模型中的第k 个分量(component)。如前面图2中的例子,有两个聚类,可以用两个二维高斯分布来表示,那么分量数 . 是混合系数(mixture coefficient),且满足:
相当于每个分量 的权重。