1. EM算法的基本思想

我们在应用中所面对的数据有时是缺损的/观测不完全的[1][2]。我们将数据分为:

  • 可观测数据,用\(Y\)表示;
  • 缺失数据,用\(Z\)表示;
  • 完全数据,用\(X=(Y, Z)\)表示。

我们尝试直接对可观测数据做极大似然估计:

\[L(\theta | Y)=P(Y|\theta)
\]

但是这样的似然函数可能非常复杂。我们发现完全数据的似然,即

\[L(\theta | Y, Z)=P(Y, Z|\theta)
\]

估计的难度要小得多。

除此之外对条件概率分布\(P(Z |Y, \theta)\)进行估计的难度也要小得多。

EM算法的基本思想是通过\(P(Y,Z|\theta)\)和\(P(Z |Y, \theta)\)这两个容易进行估计的分布来估计\(P(Y|\theta)\)。

事实上,在应用中缺失数据\(Z\)常常并不是真实存在,而是人为造出来的(为了方便概率分布的估计)。我们此时将缺失数据\(Z\)称为隐含数据(latent data)。

2. EM算法框架与解释

2.1 算法框架

EM算法不是单指一个算法,而是指一种算法设计思想,它是一类算法的框架。它通过迭代求对数似然函数\(\text{log}L(\theta | Y)=\text{log}P(Y|\theta)\)的极大似然估计。每次迭代包含两步:E步,求期望;M步,求极大化。下面是EM算法的描述:

2.2 算法推导

那为什么EM算法的E步会求 \(\sum_Z \text{log} P(Y,Z|\theta)P(Z | Y, \theta^{(t)})\)这样一个期望呢?

我们知道,可观测数据\(Y\)是给定的,我们原本想对\(\text{log} P(Y |\theta)\)做极大似然估计。而我们可以进一步得到

\[\begin{aligned}
\text{log} P(Y |\theta) &=\text{log}\sum_ZP(Y, Z|\theta)P(Z|\theta) \\
&= \text{log}\sum_Z \frac{P(Y, Z|\theta)}{q(Z)}q(Z)P(Z|\theta)\\
&\geqslant \sum_Z \text{log}[\frac{P(Y, Z|\theta)}{q(Z)}q(Z)] P(Z|\theta)(由\text{log}凹函数和\text{Jensen}不等式)
\end{aligned}
\]

其中\(q(Z)\)为不等于0的关于\(Z\)的某个分布。不等式可以看做是一个找下界的过程。

在我们这个情境下设\(q(Z)=P(Z|Y,\theta^{(t)})\),就得到了下界为

\[\sum_Z \text{log}[\frac{P(Y, Z|\theta)P(Z|Y, \theta^{(t)})}{P(Z|Y, \theta^{(t)})}]P(Z|\theta)
\]

将\(\text{log}\)函数内的部分展开为

\[\sum_Z \left( \text{log}P(Y, Z|\theta)P(Z|Y, \theta^{(t))})-\text{log}P(Z|Y, \theta^{(t)}) \right) P(Z|\theta)
\]

而\(P(Z|Y, \theta^{(t)})\)相对于\(\theta\)是常数不用管,而前一项\(\sum_Z \text{log} P(Y,Z|\theta)P(Z | Y, \theta^{(t)})\)就是我们的\(Q\)函数。

因此我们可以说\(Q\)函数在每次迭代中去逼近\(\text{log} P(Y |\theta)\)的下界。多次迭代极大化\(Q\)函数就能起到极大化\(\text{log} P(Y |\theta)\)的效果。

EM算法不断逼近函数下界的过程可以形象化解释为下图:

3. EM算法在高斯混合模型(GMM)中的应用

3.1 模型背景

在高斯混合聚类模型中,我们假设\(d\)维样本空间中的观测数据样本点\(\bm{y}\)服从高斯混合分布[3][4]

\[p(\bm{y}|\bf{\Theta})= \sum_{k=1}^K\alpha_k \phi(\bm{y}|\bm{u}_k, \bf{\Sigma}_k)
\]

其中\(\phi(\bm{y}|\bm{u}_k, \bf{\Sigma}_k)\)为多元高斯分布

\[\phi(\bm{y}|\bm{u}_k, \bf{\Sigma}_k)= \frac{1}{(2\pi)^{\frac{d}{2}}|\bf{\Sigma}|^{\frac{1}{2}}}e^{-\frac{1}{2}(\bm{y}-\bm{u})^T\bf{\Sigma}^{-1}(\bm{y}-\bm{u})}
\]

且有\(\alpha_k > 0\),\(\sum_{k=1}^K\alpha_k=1\)。

高斯混合分布可以形象化地由下图表示:

我们假设样本的生成过程由高斯混合分布给出:首先,选择高斯混合成分,其中\(\alpha_k\)为选择第\(k\)个混合成分的概率;然后根据选择的混合成分的概率密度函数进行采样,从而生成相应的样本。

3.2 高斯混合聚类算法推导

我们令随机变量\(C_i\in \{1,2,...,K\}\)表示样本\(\bm{y}_i\)的高斯混合成分。而这个\(C_i\)也就对应了我们打算将样本\(\bm{y}_i\)聚为第几类,它的取值就是我们的聚类算法要求的。我们的模型需要按照贝叶斯定理估计\(C_i\)的后验分布

\[\begin{aligned}
p(C_i=k | \bm{y}_i) & =\frac{p(C_i = k)p(\bm{y}_i|C_i = k) }{p(\bm{y}_i |\bf{\Theta})} \\
& = \frac{\alpha_k \phi(\bm{y}|\bm{u}_k, \bf{\Sigma}_k)}{\sum_{k=1}^K\alpha_k \phi(\bm{y}|\bm{u}_k, \bf{\Sigma}_k)}
\end{aligned}
\]

则我们按照以下法则确定样本\(\bm{y}_i\)被划分为的簇标记\(c_i^*\):

\[ c_i^* = \underset{k\in\{1,2...,K\}}{\text{argmax}}p(C_i=k | \bm{y}_i)
\]

我们前面提到按照贝叶斯定理估计概率分布\(p(C_i=k | \bm{y}_i)\),但我们需要先确定数据生成分布\(p(\bm{y}_i |\bf{\Theta})\)中的参数\(\bf{\Theta} = \{(\alpha_k, \bm{u}_k, \bf{\Sigma}_k)|1\leqslant k \leqslant K\}\),这时就可以套用我们前面的EM算法了。

我们设\(\bm{y}_i\)为可观测数据,\(\bm{z}_{i}=(z_{i1}, z_{i2},..., z_{iK})^T\)(one-hot向量,表示样本\(i\)的聚类结果)为未观测数据,\(\bm{x}=(\bm{y_i}, \bm{z}_{i})\)为完全数据。

按照EM算法的流程走:

(1) \(\text{E}\)步,即写出\(Q\)函数

\[\begin{aligned}
Q(\bf{\Theta}|\bf{\Theta}^{(t)}) & =\mathbb{E}_\bm{z}[\text{log} \space p(\bm{y},\bm{z}|\bf{\Theta})|\bm{y}, \bf{\Theta}^{(t)}]
\end{aligned}
\]

我么需要先写出完全数据的对数似然函数:

\[\begin{aligned}
\text{log}\space p(\bm{y},\bm{z}|\bf{\Theta}) & = \text{log} \prod_{i=1}^N p(\bm{y}_i, \bm{z}_i | \bf{\Theta}) \\
&= \text{log} \prod_{k=1}^K\prod_{i=1}^N[\alpha_k \phi(\bm{y}_i|\bm{\mu}_k, \bf{\Sigma}_k)]^{z_{ik}} \\
&= \text{log} \left(\prod_k^K \alpha_k^{n_k} \prod_{i=1}^N \phi(\bm{y}_i|\bm{\mu}_k, \bf{\Sigma}_k)^{z_{ik}} \right) \\
& = \sum_{k=1}^K \left(n_k\text{log}\alpha_k + \sum_{i=1}^Nz_{ik} \text{log} \phi(\bm{y}_i|\bm{\mu}_k, \bf{\Sigma}_k)\right)
\end{aligned}
\]

然后按照Q函数的定义求条件期望得:

\[\begin{aligned}
Q(\bf{\Theta}|\bf{\Theta}^{(t)}) & =\mathbb{E}_\bm{z}\left[\sum_{k=1}^K \left( n_k\text{log}\alpha_k + \sum_{i=1}^Nz_{ik} \text{log} \phi(\bm{y}_i|\bm{\mu}_k, \bf{\Sigma}_k)\right)|\bm{y}, \bf{\Theta}^{(t)}\right] \\
& = \sum_{k=1}^K \left( \sum_{i=1}^N\mathbb{E}(z_{ik}|\bm{y}, \bf{\Theta}^{(t)})\text{log}\alpha_k + \sum_{i=1}^N\mathbb{E}(z_{ik}|\bm{y}, \bf{\Theta}^{(t)})\text{log}\phi(\bm{y}_i|\bm{\mu}_k, \bf{\Sigma}_k)\right)
\end{aligned}
\]

这里\(\mathbb{E}(z_{ik}|\bm{y}, \bf{\Theta}^{(t)})\)就等于我们前面用贝叶斯定理求的 \(p(C_i=k | \bm{y}_i)\),我们将其简写为\(\hat{z}_{ik}\)。进一步将\(Q\)

函数写为:

\[Q(\bf{\Theta}|\bf{\Theta}^{(t)}) = \sum_{k=1}^K \left[ \sum_{i=1}^N\hat{z}_{ik} \text{log}\alpha_k + \sum_{i=1}^N\hat{z}_{ik} \left(\text{log}(\frac{1}{(2\pi)^{\frac{d}{2}}})-\text{log}|\bf{\Sigma_k}|^{\frac{1}{2}}-\frac{1}{2}(\bm{y}_i - \bm{\mu}_k)^T\bf{\Sigma}_k(\bm{y}_i-\bm{\mu}_k)\right)\right]
\]

(2) \(\text{M}\)步,求极大化\(Q\)函数的新一轮迭代参数

我们只需将上式分别对\(\bm{\mu}_k\)、\(\bf{\Sigma_k}\), \(\alpha_k\)(满足\(\sum_{k=1}^K\alpha_k = 1\))求偏导并令其等于0,可得到:

\[\begin{aligned}
\bm{\mu}_k^{(t+1)} &=\frac{\sum_{i=1}^N\hat{z}_{ik}\bm{y}_i}{\sum_{i=1}^N\hat{z}_{ik}} \\
\bf{\Sigma}_k^{(t+1)} &=\frac{\sum_{i=1}^N\hat{z}_{ik}(\bm{y}_i - \bm{\mu}_k)(\bm{y}_i - \bm{\mu}_k)^T}{\sum_{i=1}^N\hat{z}_{ik}} \\
\alpha^{(t+1)}_k &= \frac{\sum_{i=1}^N\hat{z}_{ik}}{N}
\end{aligned}
\]

3.3 高斯混合聚类算法描述

算法描述如下所示:

引用

  • [1] 李航. 统计学习方法(第2版)[M]. 清华大学出版社, 2019.
  • [2] 周志华. 机器学习[M]. 清华大学出版社, 2016.
  • [3] Calder K. Statistical inference[J]. New York: Holt, 1953.
  • [4] 张志华《统计机器学习》在线视频36-EM算法1: https://www.bilibili.com/video/BV1rW411N7tD?p=36

统计学习:EM算法及其在高斯混合模型(GMM)中的应用的更多相关文章

  1. EM算法原理以及高斯混合模型实践

    EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然 ...

  2. 又看了一次EM 算法,还有高斯混合模型,最大似然估计

    先列明材料: 高斯混合模型的推导计算(英文版): http://www.seanborman.com/publications/EM_algorithm.pdf 这位翻译写成中文版: http://w ...

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

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 GM ...

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

    1. 前言 我们之前有介绍过4. EM算法-高斯混合模型GMM详细代码实现,在那片博文里面把GMM说涉及到的过程,可能会遇到的问题,基本讲了.今天我们升级下,主要一起解析下EM算法中GMM(搞事混合模 ...

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

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-GMM代码实现 5. EM算法-高斯混合模型+Lasso 1. 前言 前面几篇博文对EM算法和G ...

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

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 EM ...

  7. EM算法和高斯混合模型GMM介绍

    EM算法 EM算法主要用于求概率密度函数参数的最大似然估计,将问题$\arg \max _{\theta_{1}} \sum_{i=1}^{n} \ln p\left(x_{i} | \theta_{ ...

  8. 高斯混合模型GMM与EM算法的Python实现

    GMM与EM算法的Python实现 高斯混合模型(GMM)是一种常用的聚类模型,通常我们利用最大期望算法(EM)对高斯混合模型中的参数进行估计. 1. 高斯混合模型(Gaussian Mixture ...

  9. 记录:EM 算法估计混合高斯模型参数

    当概率模型依赖于无法观测的隐性变量时,使用普通的极大似然估计法无法估计出概率模型中参数.此时需要利用优化的极大似然估计:EM算法. 在这里我只是想要使用这个EM算法估计混合高斯模型中的参数.由于直观原 ...

  10. 贝叶斯来理解高斯混合模型GMM

    最近学习基础算法<统计学习方法>,看到利用EM算法估计高斯混合模型(GMM)的时候,发现利用贝叶斯的来理解高斯混合模型的应用其实非常合适. 首先,假设对于贝叶斯比较熟悉,对高斯分布也熟悉. ...

随机推荐

  1. Java基础知识:面试官必问的问题

    数据类型 基本类型 byte/8 char/16 short/16 int/32 float/32 long/64 double/64 boolean/~ boolean 只有两个值:true.fal ...

  2. openGauss数据与PostgreSQL的差异对比

    openGauss 数据与 PostgreSQL 的差异对比 前言 openGauss 数据库已经发布 2.0.1 版本了,中启乘数科技是一家专业的专注于极致性能的数据库服务提供商,所以也关注 ope ...

  3. 通过path在windows下临时修改python和pip路径 以便于配置环境只对当前命令行窗口生效

    配置前 在cmd命令行下输入新env的路径 path=D:\Miniconda2\envs\openmmlab\openmmlab;D:\Miniconda2\envs\openmmlab\openm ...

  4. 力扣665(java)-非递减数列(中等)

    题目: 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= ...

  5. App DApp Deploy as Code! SAE & Terraform 实现 IaC 式部署应用eploy as Code! SAE & Terraform 实现 IaC 式部署应用

    简介: SAE 和 Terraform 的结合,能够帮助企业像处理代码一样管理自己的应用,对资源的操作都变得可审计,可追溯,可回滚,同时也降低人为操作带来的风险. 企业上云是近些年的发展热潮,越来越多 ...

  6. 赋予企业更多可能,云数据库SQL Server 2019版这几大亮点别错过

    直播预告 2020年3月26日 15:00-16:30 邀您一同见证 云数据库SQL Server 2019版重磅发布 全面提升性价比及数据库能力 点我观看 RDS SQL Server 2019不仅 ...

  7. 网易云音乐音视频算法的 Serverless 探索之路

    ​简介: 基于音视频算法服务化的经验,网易云音乐曲库团队与音视频算法团队一起协作,一起共建了网易云音乐音视频算法处理平台,为整个云音乐提供统一的音视频算法处理平台.本文将分享我们如何通过 Server ...

  8. [MySQL] 导入数据库和表的两种方式

    如果是导入 mysqldump 导出的 sql 文件,使用 mysql 命令再导入就可以了. 下面是另一种可选方式: use xxdb source /var/lib/mysql/xxtable.sq ...

  9. 每天5分钟复习OpenStack(十三)存储缓存技术Bcache

    Ceph作为一个分布式存储,在项目中常见的形态有两者,一种是采用 SSD 或NVME 磁盘做Ceph的日志盘,使用SATA磁盘来做数据盘.这样的好处是比较经济实惠.另一种则是全部采用 SSD 或NVM ...

  10. 关于多个 Cookie 的分隔符这件事

    对于 Cookie 的处理上,我最近遇到一个问题,那就是如何分割 Cookie 的内容.有人说是使用逗号分割,有人说是使用分号分割,究竟用哪个才是对的?其实这个答案是需要分为两个过程,分别是请求和响应 ...