EM算法

所谓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

EM Alogrithm相关推荐

  1. 机器学习 cs229学习笔记4 EM for factor analysis PCA(Principal comp

    ============================================================================= EM FOR FACTOR ANALYSIS ...

  2. 我爱机器学习网机器学习类别文章汇总

    机器学习领域的几种主要学习方式 From Stumps to Trees to Forests KDD-2014 – The Biggest, Best, and Booming Data Scien ...

  3. 我爱机器学习--机器学习方向资料汇总

    转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...

  4. 关于多元正态分布的条件分布的证明

    之前在机器学习 cs229学习笔记3 (EM alogrithm,Mixture of Gaussians revisited & Factor analysis )中直接给出了多元正态分布的 ...

  5. 聚类和EM算法——K均值聚类

    20211116 数据分析 | 聚类分析--kmean kmeans最优k值的确定方法-手肘法和轮廓系数法 - 简书 python大战机器学习--聚类和EM算法 注:本文中涉及到的公式一律省略(公式不 ...

  6. oracle em 性能点不进,oracle em节点启动不成功问题处理总结

    客户数据库项目从oracle 9i数据库升级到oracle10g后,oracle em在节点1启动不成功,节点2可以正常启动. 节点1启动时报错如下: [oracle@zhgsdb1 ~]$ emct ...

  7. oracle无法登录em,oracle em登陆不了,账户密码过期

    登陆oracle em 登陆不了截图如下: 更改用户密码无效: 查看后台log: 2015-06-27 10:11:31,640 Thread-1080228448 WARN  collector: ...

  8. oracle11g开启1158,1、Oracle11g中浏览器访问不了http://localhost:1158/em的问题

    以前接触过oracle,但是没有真正的去用过,这段时间不是很忙,就开始从零开始学习oracle,这篇文章是我第一次写. 网上可以找到很多资料都是解决浏览器访问不了http://localhost:11 ...

  9. HTML中将px转换为em的语法,在JavaScript中转换EM为PX(并获得默认字体大小)

    CommunityChannel72提出了一个问题:Converting em to px in Javascript (and getting default font size),或许与您遇到的问 ...

最新文章

  1. api数据加密的定义_云原生时代,如何构建开箱即用的数据加密防护?
  2. Django基础之Model创建表
  3. css div 边缘渐变,围绕div的CSS3渐变边框
  4. GridView实现自动编号
  5. Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”
  6. IDEA对tomcat远程debug
  7. html 格式化 vim,代码格式化插件
  8. 【机器学习-西瓜书】七、贝叶斯分类器
  9. 5g是多大一勺_5g是多大一勺(5克的勺子有多大)
  10. 强化学习算法:AC系列详解
  11. 【大学生数学建模竞赛时间一览表】
  12. HTML如何使用隐藏图片,css3如何隐藏图片?
  13. 怎么查找无线的dns服务器,无线找不到服务器dns地址
  14. 【C语言复习】C语言中的文件操作
  15. python提高图片分辨率_python 获取图片分辨率的方法
  16. android闪光灯测心率,手指放在手机摄像头和闪光灯前检测心率的应用是什么原理?...
  17. 解决小米远程管理下电脑出现ftp文件错误提示
  18. Oracle常用函数总结
  19. php5 imap,LIV. IMAP, POP3 and NNTP Functions - PHP 5 中文文档
  20. Portainer -- Docker可视化管理工具的安装配置及使用

热门文章

  1. 分布式大数据sql查询引擎Presto初识
  2. 【Python学习系列二十二】pandas数据筛选和排序
  3. 机器学习笔记(一)绪论
  4. 算法导论之贪心算法(Huffman编码和拟阵)
  5. (转载)为什么Linux不需要碎片整理?
  6. 数据结构源码笔记(C语言):统计字符串中出现的字符及其次数
  7. Mysql创建、删除用户
  8. python nonetype_【已解决】Python程序错误:TypeError: ‘NoneType’ object is not iterable
  9. Create Digital Engagement on Multiple Channels
  10. 1、spring的概述