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

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

Question

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

分析

这个问题对应的模型就是一个混合高斯模型,具体的数据产生过程如下:
混合高斯模型(GMM)与EM算法_第1张图片
我们引入了隐变量z, 假设模型的参数跟图中的定义一样,我们可以得到:
p ( x ∣ α , μ , Σ ) = ∑ k = 1 K α k N ( 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 p(xα,μ,Σ)=k=1KαkN(xμk,Σk),kαk=1

这就是混合高斯模型对应的观察数据概率分布,它是一个无监督模型的聚类模型,每个类别对应的后验分量
γ k = α k N ( x ∣ μ k , Σ k ) ∑ k = 1 K α k N ( 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)} γk=k=1KαkN(xμk,Σk)αkN(xμk,Σk)

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

求解

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

E步(E-step)

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

M步 (M-step)

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

Algorithm

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

你可能感兴趣的:(机器学习)