所谓EM算法,指的是就是Expect-Maximum算法,是一种非常有用的算法。假设这么一个问题,我们有一堆样本集合X,我们已知该样本总体的分布类型(比如是高斯分布),但是我们不知道这个分布的参数具体是多少,我们希望有方法能够根据这些观测到的样本集合来估计出这个分布的参数。怎么办呢?于是就有了极大似然估计,该方法思路很简单,计算出这些样本出现的分布概率公式,该公式肯定包含了这些参数作为公式的因子。我们的目标是使得该样本出现的概率最大,那么剩下的问题就是一个数学问题了,选择合适的参数值使得这个公式的值最大,比如求导等等。极大似然估计的的思路很直接,选择一个目标函数,使该目标函数最大。 如果我们在对上述问题再加一点难度,除了分布参数我们不知道,另外还有一些隐藏的变量我们也不知道,或者说观测到得数据不完整,在这种情况下,包含了隐藏变量的目标函数往往没有解析解,因此无法估算出这些参数变量。那我们又该怎么估计出这些参数和这些缺失的隐藏变量呢?解决的方法就是EM算法。关于EM算法,52npl上有一篇博客做了比较深刻的说明,请参阅。这里对其说明进行一些评注,便于大家理解。 EM算法的目标是找出有隐性变量的概率模型的最大可能性解,它分为2个步骤,E-step和M-step,E-step根据最初假设的模型参数值或者上一步的模型参数计算出隐性变量的后验概率,其实就是隐性变量的期望,M-step根据这个E-step的后验概率重新计算出模型参数,然后再重复这两个步骤,直至目标函数收敛。 观测到的变量组成的向量我们表示成X,所有隐性变量组成的向量为Z,模型的参数表示成(一个或多个参数)。在分类问题中,Z就表示的是可能的潜在分类,X就是需要分类的数据,我们得目标是找出模型的参数和隐性变量来使得X出现的概率最大,也就是最大(其实本来可以写成,但是不是随机变量而是一个参数,所以将 | 改成;) 由于很多模型的概率都带有指数,所以在上加一个对数ln,这个对数并不影响其极值,的最大值也就是ln的最大值。 假设是上的一个概率分布,那么就有, 公式(1) 最后一步是基于琴生不等式,所谓琴生不等式 需要注意的是,中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的。Convex Function在某些国内的数学书中指凹函数。Concave Function指凸函数。但在中国大陆涉及经济学的很多书中,凹凸性的提法和国外的提法是一致的,也就是和数学教材是反的。举个例子,同济大学高等数学教材对函数的凹凸性定义与本文相反,本条目的凹凸性是指其上方图是凹集或凸集,而同济大学高等数学教材则是指其下方图是凹集或凸集,两者定义正好相反。 在本文中,ln是一个凹函数。 根据公式(1),我们看到了的下界是多少。EM算法分为2步: 第一步:E-step 其目的是计算出的下界,以及在此下界时,的值。 根据琴声不等式,我们得知在到达下界时的条件为 公式(2) c为常数。我们已知,那么此临界条件下由公式(2)就有 公式2变化一下如下 公式3 第二步:M-step 在E-step中,我们得到了的下界以及此下界时的值,那么在M-step中我们的目标就变成了通过变换参数来最大化这个下界。下界提高了,那么值也会提高。 M-step本质上就是求ln的极值点,求极值点的方法就不用再啰嗦了吧,求偏导,通过求参数 EM算法概要如下 EM算法通过不断提高目标函数的下界的方法来寻找目标函数的最大值,因为通过M-step使得的下界不断提高,只要存在最大值,那么EM算法一定会收敛。 做了这么多分析,举两个例子,可能会更容易理解。先看第一个例子,来自文献[3]:
混合高斯模型 数据X是一个实例集合,它由k个不同的正态分布混合而成的分布生成,这里涉及k个不同的正态分布的混合,而且我们还不知道哪个变量实例由哪个分布生成的。因此这是一个涉及隐藏变量的典型例子。可以把每个实例完整描述成,其中xi是第i个实例的观测值,表示k个正态分布中的哪一个用于生成xi,确切得讲,当xi由第j个正态分布产生时,zij为1,否则为0。由此Z向量只有一个分量为1,其它分量为0。这里xi是实例描述中已经观察到的变量,是隐藏变量。k个正态分布的均值就是我们需要估计的模型参数。 算法伊始,我们首先假设一个模型参数初始值,接下来就是计算我们的目标函数,该目标函数的公式推导如下: 公式2
接下来就是E-step.我们的目标是选择一个概率分布使得达到下界,我们就有 这里E[Zij]=实例Xi由第j个高斯分布生成的概率
那此时我们目标函数的值根据公式2就是 公式3 接下来就是M-step,在确定的情况下,选择合适参数使得最大化,根据公式2,这就是一个数学问题,对公式3求偏导,你会发现参数的极值点为 然后算法就利用估算出的参数再重复计算E-step,M-step直至收敛。 因子分析 所谓因子分析,就是指从变量群中提取公共因子的方法,该因子是用来描述隐藏在观测变量中的一些更基本的,但又无法直接测量到的隐性变量。EM算法也可以用来解决这样的问题,从而能够估算出隐藏的公共因子及该模型的参数。文献4的博客给出了一个很好的说明,讲得比较清楚。这里主要是引用这篇文章的内容,加入一些自己的评论,使其更便于理解。 举个因子分析的例子,有m个n维特征向量的样本集,每个样本实例表示为,样本实例的生成模型为 其中是样本点,其维度为n,其表示为 代表因子,该因子存在于一个k维向量空间,该k维空间就代表因子的维度空间,也就是说每一个实例变量实际上是由这k维的因子所决定的,我们目标就是估算出实例变量的k维因子。其公式表示如下 因子遵循多元正态分布,。表示单位矩阵,对角线元素为1,其他元素为0. 是一个变换矩阵,有时也被称为装载矩阵,其目的是将因子映射到样本的n维空间。 是一个n维向量,其含义是样本的中心点。 是一个n维向量,表示的是真实样本和模型的误差,同一样,它也遵循多元高斯分布,其中是一个n x n对角矩阵 下面来分析EM算法的使用,首先明确我们的目标,我们的目标是根据样本实例集估算出参数值,,。有了这三个参数我们就能根据模型以及样本实例计算出每个样本对应的因子向量(也就是隐藏变量),一个矩阵方程组变化而已。 回想EM算法,那么对应因子分析,其E-step如下: 我们将观测到得实例变量X和隐藏变量Z组成一个联合的变量Y,该联合变量Y也符合多元高斯分布。为什么Y也符合多元高斯分布呢?很简单,首先Z是一个多元高斯分布,而X是多元高斯分布变量Z的一个线性变化,所以X也是一个多元高斯分布(参见文献[5],多元正态分布的线性变化仍然是),那么X,Z组合成的变量Y也符合高斯分布。其公式代表如下: 参见文献[5],你会发现多元正态分布的另外一个特性,多元正态分布的条件分布仍然是多元正态分布 该特性表述如下: 对应我们的例子,就有 这个过程中利用了z和独立假设() 公式如下 那么就可以得到Y的分布: 、 套用上述的特性-性质6,就有 这就是我们的目标。E-step就到此为止。再看M-step,M-step的目标函数如下 分别对3个参数求该目标函数的偏导,得到3个偏导公式,让其都为0,组成一个方程组。该方程组的解就是我们待沽参数。 具体的公式推导参见文献[4],文献[4]给出了比较详细的推导,如果对多元高斯分布了解的比较深入的话,该推导应该不难读懂。 个人觉得文献[3]中关于EM的讲述有一些瑕疵,讲得不是很清楚,但是文中的例子倒是可以作为参考。文献[4],[5]对此讲述的比较清楚,是个非常不错的参考,值得一读。
参考文献: [1]理解EM算法 52nlp [2]http://zh.wikipedia.org/wiki/%E5%87%B8%E5%87%BD%E6%95%B0 [3]数据挖掘原理与算法-毛国君 [4]http://www.cnblogs.com/jerrylead/archive/2011/05/11/2043317.html [5]多维高斯分布讲解http://www.docin.com/p-121202383.html [6] EM算法http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html [7] The Top Ten Algorithms in Data Mining |
- 浏览: 123238 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (341)
- Java (18)
- J2EE (0)
- Linux (81)
- VIM (22)
- windows (6)
- DB (11)
- Algorithm (57)
- Data structure (17)
- JS (5)
- C++ (65)
- HTML (6)
- Cloud (4)
- Eclipse (7)
- Python (42)
- Play (3)
- HTTP (1)
- awk (7)
- shell (20)
- Regular expression (5)
- NLP (33)
- ML (38)
- DM (43)
- Probabilistic (6)
- Crawler (14)
- matlab (1)
- perl (4)
- Design pattern (1)
- IO[File] (2)
- Deep Learning (1)
EM算法
发表评论
-
DeepLearning索引
2017-03-06 16:14 26250课:http://www.cnblogs.com/to ... -
人工智能——归结演绎推理
2011-10-26 09:46 399人工智能——归结演绎推理 1.子句 1)文字:原子谓 ... -
决策树ID3算法
2012-01-25 21:07 261http://leon-a.javaeye.com/blog ... -
Karush-Kuhn-Tucker 最优化条件 (KKT 条件)(转载)
2012-02-04 23:37 728一般地,一个最优化数学模型能够表示成下列标准形式: ... -
拉格朗日 SVM KKT
2012-02-04 23:39 353在R中使用支持向量机(SVM)(1) 1. 线性S ... -
SVM中的Karush-Kuhn-Tucker条件和对偶问题
2012-02-04 23:47 374因为这里公式编辑不方便,为求严谨,写在word上截图,图片边 ... -
求置信区间
2012-02-20 11:17 522英文为:binomial proportion confid ... -
学习SVM
2012-03-14 22:10 584【转载请注明出处】http://www.cnblogs ... -
EM算法
2012-03-14 22:11 380(EM算法)The EM Algorithm EM ... -
Latent dirichlet allocation note -- Prepare
2012-03-21 10:29 338转自莘莘学子blog :http ... -
基本文本聚类方法
2012-03-22 10:52 362转自:http://hi.baidu.com/y ... -
LDA
2012-03-27 10:44 372关键所在:it posits that each docum ... -
Simple Introduction to Dirichlet Process
2012-03-27 10:50 345http://hi.baidu.com/zcfeiyu123/ ... -
关于Latent Dirichlet Allocation及Hierarchical LDA模型的必读文章和相关代码
2012-03-27 11:07 480LDA和HLDA:(1)D. M. Blei, et al., ... -
Latent dirichlet allocation note
2012-03-29 18:55 3712 Latent Dirichlet Allocat ... -
Latent semantic analysis note(LSA)
2012-03-29 18:58 4131 LSA Introduction LSA(la ... -
SVD奇异值分解
2012-03-29 18:59 313SVD分解 SVD分解是LSA的数学基础,本文是我的LS ... -
伽马贝塔函数
2012-03-31 12:34 622在数理方程、概率论等学科经常遇到以下的含参变量的积分 , ... -
狄拉克δ函数(Dirac Delta function)
2012-04-19 14:07 1243PS:狄拉克δ函数(Dirac Delta function ... -
Entropy
2012-05-18 09:43 340相对熵(relative entropy)又称为KL散度(K ...
相关推荐
合成孔径雷达成像的距离徙动Range Migration算法,算法中先对条带模式生成的回波进行仿真,然后用距离徙动算法获得了很好的聚焦效果。
It needs file input, and test two different ways to use KMP alogrithm.
蚁群算法是一种优化选择进化算法,应用本算法可以解算gps载波相位整周模糊度 ,Ant_clony_of_alogrithm
1.粒子群算法的概念 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群. 2.粒子群算法分析 1、基本思想 2、更新规则 公式(1)...
遗传算法解算GPS载波相位整周模糊度,包括基本遗传算法和自适应遗传算法。
Alogrithm_Datastruct
alogrithm_structure_cpp
通过UI界面进行A *搜索Alogrithm降级 (0)环境 Win10 X64 代码块 opencv(只需几步即可使用opencv配置CodeBlocks,下面是 ) (1)游戏规则 从右下角块移动到左上角块,尝试找到最小的台阶路径,然后允许您一步步...
其主要介绍了在一般干扰模型下分布式自适应CSMA算法以及将CSMA调度算法与端到端拥塞控制相结合来达到最大吞吐量和实现公平竞争,另外还介绍了在算法实施中的实际问题。
c代码-secutity access alogrithm
C语言基本算法,各种基础算法,有代码示例,很详细,比较适合初学者
Pathfinding_alogrithm
c代码-secutity access alogrithm1
本书的第一个目标就是揭示机器学习的秘密。只有工程师和机修工有必要知道汽车发动机如何运作,但每位司机都必须明白转动方向盘会改变汽车的方向、踩刹车会让车停下。当今极少有人知道学习算法对应的原理是什么,更...
C语言最新编程技巧200例,很不错的一本书,故拿出来河大家一起分享!
2021年 专题 发现