从数学角度看最大期望(EM)算法 II
【转载请注明出处】http://www.cnblogs.com/mashiqi
2015/3/13
对于隐变量只有有限个取值(比如$N$个)的情况,我们可以将隐变量表示为${z_j} = [{z_{j1}},{z_{j2}}, \cdots ,{z_{jN}}]$,其中${z_{jk}} \in \{ 0,1\} $且${z_{j1}} + {z_{j2}} + \cdots + {z_{jN}} = 1$。这样表示的目的主要是为了使后面的计算方便。如果:
$$\left\{ \matrix{
p({z_{jk}} = 1) = {\pi _k}\cr
p({p_j}|{z_{jk}} = 1;\theta ) = {f_k}({p_j};\theta ) \cr} \right.$$
则我们可以把$p({p_j},{z_j};\theta )$表示为:
$$p({p_j},{z_j};\theta ) = \mathop \prod \limits_{k = 1}^N {[{\pi _k}{f_k}({p_j};\theta )]^{{z_{jk}}}}$$
下面,我们看看怎么得到complete-data log-likelihood:
$$\eqalign{
L(\theta ) &= \mathop \sum \limits_{j = 1}^M \ln p({p_j};\theta ) = \mathop \sum \limits_{j = 1}^M \ln [\mathop \sum \limits_k^{} p({p_j},{z_{jk}} = 1;\theta )] \cr
&= \mathop \sum \limits_{j = 1}^M \ln [\mathop \sum \limits_k^{} p({p_j},{z_{jk}} = 1;\theta ){{p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})} \over {p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})}}] \cr
&= \mathop \sum \limits_{j = 1}^M \ln [\mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}}){{p({p_j},{z_{jk}} = 1;\theta )} \over {p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})}}] \cr
&\ge \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})}}]{\kern 1pt} {\kern 1pt} (Jensen's) \cr
&= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})}}p({p_j};{\theta ^{(n)}})] \cr
&= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})}}] \cr
&+ \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [p({p_j};{\theta ^{(n)}})] \cr
&= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})}}] + \mathop \sum \limits_{j = 1}^M \ln p({p_j};{\theta ^{(n)}}) \cr
&= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})}}] + L({\theta ^{(n)}}) \cr} $$
因此,记$l(\theta ) = \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})}}]$,我们可以得到:
$$\left\{ \matrix{
l({\theta ^{(n)}}) = 0 \cr
L(\theta ) \ge l(\theta ) + L({\theta ^{(n)}}) \cr} \right.$$
如果我们能求得$l(\theta )$的极大值点$\theta^{*}$,则一定有
$$L({\theta ^*}) \ge L({\theta ^{(n)}})$$
我们就可以把$\theta^{*}$当作$\theta^{(n+1)}$。
由于
$$\eqalign{
l(\theta ) &= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{{p({p_j},{z_{jk}} = 1;\theta )} \over {p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})}}] \cr
&= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln p({p_j},{z_{jk}} = 1;\theta ) + const \cr
&= {\cal Q}(\theta ,{\theta ^{(n)}}) + const \cr
{\cal Q}(\theta ,{\theta ^{(n)}}) &= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln p({p_j},{z_{jk}} = 1;\theta ) \cr} $$
因此,通常情况下我们优化$l(\theta )$的前面这一项${\cal Q}(\theta ,{\theta ^{(n)}})$就行了,许多介绍EM算法的资料也就是直接优化${\cal Q}(\theta ,{\theta ^{(n)}})$这一项。在这一项里面:
$$\eqalign{
p({p_j},{z_{jk}} = 1;\theta ) &= p({z_{jk}} = 1;\theta )p({p_j}|{z_{jk}} = 1;\theta ) \cr
&= {\pi _k}{f_k}({p_j};\theta ) \cr} $$
带入式可得:
$$\eqalign{
{\cal Q}(\theta ,{\theta ^{(n)}}) &= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})\ln [{\pi _k}{f_k}({p_j};\theta )] \cr
&= \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} p({z_{jk}} = 1|{p_j};{\theta ^{(n)}})[\ln {\pi _k} + \ln {f_k}({p_j};\theta )] \cr} $$
为此我们需要计算这个后验概率:
$$\eqalign{
p({z_{jk}} = 1|{p_j};{\theta ^{(n)}}) &= {{p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})} \over {p({p_j};{\theta ^{(n)}})}} = {{p({p_j},{z_{jk}} = 1;{\theta ^{(n)}})} \over {\mathop \sum \limits_K^{} p({p_j},{z_{jK}} = 1;{\theta ^{(n)}})}} \cr
&= {{p({z_{jk}} = 1;{\theta ^{(n)}})p({p_j}|{z_{jk}} = 1;{\theta ^{(n)}})} \over {\mathop \sum \limits_K^{} p({z_{jK}} = 1;{\theta ^{(n)}})p({p_j}|{z_{jK}} = 1;{\theta ^{(n)}})}} \cr
&= {{\pi _K^{(n)}{f_k}({p_j};{\theta ^{(n)}})} \over {\mathop \sum \limits_K^{} \pi _K^{(n)}{f_K}({p_j};{\theta ^{(n)}})}} \cr} $$
因此,
$${\cal Q}(\theta ,{\theta ^{(n)}}) = \mathop \sum \limits_{j = 1}^M \mathop \sum \limits_k^{} {{\pi _K^{(n)}{f_k}({p_j};{\theta ^{(n)}})} \over {\mathop \sum \limits_K^{} \pi _K^{(n)}{f_K}({p_j};{\theta ^{(n)}})}}[\ln {\pi _k} + \ln {f_k}({p_j};\theta )]$$
我们求最优化问题:
$$[{\pi ^{(n + 1)}},{\theta ^{(n + 1)}}] = \mathop {\arg \max }\limits_{\pi ,\theta } {\cal Q}(\theta ,{\theta ^{(n)}})$$
就可以得到新一轮的迭代结果。
从数学角度看最大期望(EM)算法 II的更多相关文章
- 从数学角度看最大期望(EM)算法 I
[转载请注明出处]http://www.cnblogs.com/mashiqi 2014/11/18 更新.发现以前的公式(2)里有错误,现已改过来.由于这几天和Can讨论了EM算法,回头看我以前写的 ...
- 数据挖掘十大经典算法(5) 最大期望(EM)算法
在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...
- 详解十大经典机器学习算法——EM算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第14篇文章,我们来聊聊大名鼎鼎的EM算法. EM算法的英文全称是Expectation-maximization al ...
- python机器学习笔记:EM算法
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域的基础,比如隐式马尔科夫算法(HMM),LDA主题模型的变分推断算法等等.本文对于E ...
- EM算法(Expectation Maximization Algorithm)
EM算法(Expectation Maximization Algorithm) 1. 前言 这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的< ...
- PLSA及EM算法
前言:本文主要介绍PLSA及EM算法,首先给出LSA(隐性语义分析)的早期方法SVD,然后引入基于概率的PLSA模型,其参数学习采用EM算法.接着我们分析如何运用EM算法估计一个简单的mixture ...
- Expectation-Maximization(EM) 算法
Expectation-Maximization 算法是统计学中用来给带隐含变量的模型做最大似然(和最大后验概率)的一种方法.EM 的应用特别广泛,经典的比如做概率密度估计用的 Gaussian Mi ...
- 浅谈EM算法的两个理解角度
http://blog.csdn.net/xmu_jupiter/article/details/50936177 最近在写毕业论文,由于EM算法在我的研究方向中经常用到,所以把相关的资料又拿出来看了 ...
- EM最大期望化算法
最大期望算法(Expectation-maximization algorithm,又译期望最大化算法)在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计. 在统计计算中,最 ...
随机推荐
- javascript 常用实用函数。。。。。。
javascript 正则表达式 1.获取屏幕大小尺寸 /* 获取屏幕大小尺寸 */ var getScreen = function () { var screen = { width: 0, he ...
- CentOS安装Nvidia显卡驱动提示Nouveau正在使用的问题
如题,在安装Nvidia官方提供的驱动时,提示Nouveau正在被使用,需要停用后才能继续安装,在网上搜了不少方法,各种尝试后均无效. 最后通过设置内核启动参数给屏蔽了,方法如下: 切换到root用户 ...
- python pip install
wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz https://github.com/pypa ...
- kvm -- Kernel-based Virtual Machine
1.虚拟机类型: 类型1 硬件上直接安装hp 类型2 硬件上安装HOST 上面跑VMM 2.kvm概要 kvm 不算类型1也不算类型二.两种特性都有,他是linux的一个内核模块,内核中本身没有hv ...
- 基于Jquery、JqueryUI插件编写
刚开始编写jquery插件的时候,只是从网上找个模板看着写,并不理解.刚刚仔细把官网的API看了下,突然觉得豁然开朗了.马上放假了想着应该整理整理不然忘了又. How to create a Jque ...
- Linux_命令_积累
1.ps 查看进程状态 ZC: "ps -a" 和 "ps a" 有区别... (具体查看 "man ps") 1.1.ps aux 1.2 ...
- 【Python】下拉框元素的找法
首先,从selenium.webdriver.support.ui里调用Select类,如下: 其次,找到下拉框元素,再找下拉框里要最终选择的元素,如下: 注意:调用Select类后,不必再加clic ...
- 初识python中的类与对象
这篇博客的路线是由深入浅,所以尽管图画的花花绿绿的很好看,但是请先关注我的文字,因为初接触类的小伙伴直接看类的实现可能会觉得难度大,只要耐着性子看下去,就会有一种“拨开迷雾看未来”的感觉了. 一.py ...
- WebView注入Java对象注意事项
在android4.2以前,注入步骤如下: webview.getSetting().setJavaScriptEnable(true); class JsObject { public String ...
- angular directive指令内的参数
angular.module('myApp', []) .directive('myDirective', function() { return { restrict: String, priori ...