混合高斯模型(GMM)与EM算法

混合高斯模型(GMM)与EM算法

Question

有一个数据集D={x1,x2,...,xN}D=\{x_1, x_2, ..., x_N\}中的每个数据点是这样产生的,先从K个类别中选择一个类别,然后从该类别对应的数据产生分布中产生数据点。若K选1的对应的分布是Multinoulli分布,每个类别对应的数据产生分布是不同的高斯分布,估计数据点x对应的分布。

分析

这个问题对应的模型就是一个混合高斯模型,具体的数据产生过程如下:
混合高斯模型(GMM)与EM算法
我们引入了隐变量z, 假设模型的参数跟图中的定义一样,我们可以得到:
p(xα,μ,Σ)=k=1KαkN(xμk,Σk),kαk=1 p(x | \alpha, \mu, \Sigma) = \sum_{k=1}^{K} \alpha_k \mathrm{N}(x | \mu_k, \Sigma_k), \quad \quad 其中\sum_k \alpha_k = 1

这就是混合高斯模型对应的观察数据概率分布,它是一个无监督模型的聚类模型,每个类别对应的后验分量
γk=αkN(xμk,Σk)k=1KαkN(xμk,Σk)\gamma_k = \frac{\alpha_k \mathrm{N}(x | \mu_k, \Sigma_k)}{\sum_{k=1}^{K} \alpha_k \mathrm{N}(x | \mu_k, \Sigma_k)}

表示该点属于某个类别的概率,要想得到某个点对应的分量,我们必须先根据数据集估计出模型参数θ={αμ,Σ}\theta = \{\alpha,\mu, \Sigma\},这就是上面问题的目标。

求解

要估计出模型参数,对于含隐变量的无监督模型,绝大部分情况下都是用EM算法求解。

E步(E-step)

混合高斯模型(GMM)与EM算法混合高斯模型(GMM)与EM算法
其中m时数据点的维度。
E步就是在老的参数的基础上求出隐藏数据集的分布,并计算联合变量分布对数的期望。

M步 (M-step)

混合高斯模型(GMM)与EM算法
M步时最大化E步期望,获得新的参数。

Algorithm

Require: 数据集D,类别数K。
Step 1: 初始化参数α, μ, Σ;
Step 2: 执行E步,获得Eγik, Enk;
Step 3: 执行M步,更新α, μ, Σ;
Step 4: 重复E步和M步,知道F收敛或者α, μ, Σ收敛。