1. EM算法-数学基础

2. EM算法-原理详解

3. EM算法-高斯混合模型GMM

4. EM算法-高斯混合模型GMM详细代码实现

5. EM算法-高斯混合模型GMM+Lasso

1. 前言

概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计model参数;但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计——EM算法

2. EM算法原理

EM算法称为期望极大值算法(expectation maximizition algorithm,EM),是一种启发式的迭代算法。

EM算法的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。

可以通过K-Means算法来简单理解EM算法的过程。

E步:

在初始化K个中心点后,我们对所有的样本归到K个类别。

M步:

在所有的样本归类后,重新求K个类别的中心点,相当于更新了均值。

3. EM算法公式

对于\(m\)个样本观察数据\(x=(x^{(1)},x^{(2)},...x^{(m)})\)中,找出样本的模型参数\(\theta\),极大化模型分布的对数似然函数如下,假设数据中有隐含变量\(z=(z^{(1)},z^{(2)},...z^{(m)})\)

\[
L(\theta) = \sum\limits_{i=1}^m logP(x^{(i)}|\theta)
\]
加入隐含变量公式变为如下,注意到下式中\(Q_i(z(i))\)是一个分布,因此\(\sum Q_i(z(i))logP(x(i),z(i)|θ)\)可以理解为\(logP(x(i),z(i)|θ)\)基于条件概率分布\(Q_i(z(i))\)的期望。

\[
Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta)
\]

\[
L(\theta) = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})P(x^{(i)},z^{(i)}|\theta)\;\;\;s.t.\sum\limits_{z}Q_i(z^{(i)}) =1\;\;\;\;\;(1)
\]

根据Jensen不等式,(1)式变为(2)
\[
E [f \left ( g(X) \right ) ] \ge f \left (E[g(X)] \right )
\]
\[
L(\theta) = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})P(x^{(i)},z^{(i)}|\theta)\ge\sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})logP(x^{(i)},z^{(i)}|\theta)\;\;\;s.t.\sum\limits_{z}Q_i(z^{(i)}) =1\;\;\;\;\;(2)
\]

4. EM算法流程

输入:观察数据\(x=(x^{(1)},x^{(2)},...x^{(m)})\),联合分布\(p(x,z|\theta)\), 条件分布\(p(z|x,\theta)\), EM算法退出的阈值\(\gamma\)。

  1. 随机初始化模型参数\(\theta\)的初值\(\theta^0\)。
  2. E步:计算联合分布的条件概率期望
    \[
    Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta^{j})
    \]
    \[
    L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|\theta)}
    \]
  3. M步:极大化\(L(\theta,\theta^j)\),得到\(θ^{j+1}\):
    \[
    \theta^{j+1} = arg \max \limits_{\theta}L(\theta, \theta^{j})
    \]
  4. 重复2,3两步,直到极大似然估计\(L(\theta,\theta^j)\)的变化小于\(\gamma\)

5. 总结

如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。

本节介绍的EM算法是通用的EM算法框架,其实EM算法有很多实现方式,其中比较流行的一种实现方式是高斯混合模型(Gaussian Mixed Model)。

2. EM算法-原理详解的更多相关文章

  1. EM算法原理详解

    1.引言 以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法:但是当模型 ...

  2. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  3. [置顶] Isolation Forest算法原理详解

    本文只介绍原论文中的 Isolation Forest 孤立点检测算法的原理,实际的代码实现详解请参照我的另一篇博客:Isolation Forest算法实现详解. 或者读者可以到我的GitHub上去 ...

  4. DQN算法原理详解

    一. 概述 强化学习算法可以分为三大类:value based, policy based 和 actor critic. 常见的是以DQN为代表的value based算法,这种算法中只有一个值函数 ...

  5. AAC解码算法原理详解

  6. 网络最大流问题之Ford-Fulkerson算法原理详解

    前言 最大流问题是网络优化中典型的问题,用形象的语言来描述就是在满足容量约束的前提下将尽可能多的流从源节点(始点)到汇节点(终点).解决此问题的经典方法很多,本文介绍广为人熟知的Ford-Fulker ...

  7. hash算法原理详解

    转载出处http://blog.csdn.net/tanggao1314/article/details/51457585 一.概念 哈希表就是一种以 键-值(key-indexed) 存储数据的结构 ...

  8. [置顶] Isolation Forest算法实现详解

    本文算法完整实现源码已开源至本人的GitHub(如果对你有帮助,请给一个 star ),参看其中的 iforest 包下的 IForest 和 ITree 两个类: https://github.co ...

  9. Isolation Forest算法实现详解

    本文介绍的 Isolation Forest 算法原理请参看我的博客:Isolation Forest异常检测算法原理详解,本文中我们只介绍详细的代码实现过程. 1.ITree的设计与实现 首先,我们 ...

随机推荐

  1. JavaScript三种方式改变标签css

    原文地址:https://www.cnblogs.com/xiangru0921/p/6514225.html <body> <div id="div">这 ...

  2. Easy APNs Provider 消息推送测试工具

    1.Easy APNs Provider 简介 Easy APNs Provider 是一款为 iOS.Mac App 提供推送测试的小工具. App Store 下载地址 Easy APNs Pro ...

  3. 【struts2】值栈(前篇)

    1 值栈是什么? 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Result.Intercept ...

  4. Spark技术栈

  5. idea13注册机

    public class Keygen { /** * @param s * @param i * @param bytes * @return */ public static short getC ...

  6. ef 通用类

    using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.I ...

  7. C++虚函数工作原理

    一.虚函数的工作原理      虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数.典型情况下,这一信息具有一种被称为 vptr(virtual table poi ...

  8. Android逆向之旅---破解&quot;穿靴子的猫&quot;游戏的收费功能

    一.游戏收费分析 游戏收费非常正常的,可是玩游戏最恶心的就是你还没玩就要充值,非常恼火,事实上我不怎么玩游戏,主要是给小孩子们弄,比方如今好多小屁孩们喜欢玩水果忍者这个游戏.可是这个游戏在没有開始玩的 ...

  9. FreeSWITCH收到重复的DTMF信号

    一.背景 用户是运营商手机,拨打的是运营商的固话号码进入的FreeSWITCH的IVR,进入IVR语音播报后,按指定的分机号呼相关人员. 二.现象 用户反映拨打124870找不到指定人员,以前是正常的 ...

  10. Intellij idea 配置热部署

    1. 采用外部tomcat的配置 1)打开右上角Run的Edit Configuration进入Tomcat配置选项页面 2)将On frame   deactivation选项更改为 Update ...