混合高斯模型(GMM)与EM算法
混合高斯模型(GMM)与EM算法
Question
有一个数据集中的每个数据点是这样产生的,先从K个类别中选择一个类别,然后从该类别对应的数据产生分布中产生数据点。若K选1的对应的分布是Multinoulli分布,每个类别对应的数据产生分布是不同的高斯分布,估计数据点x对应的分布。
分析
这个问题对应的模型就是一个混合高斯模型,具体的数据产生过程如下:
我们引入了隐变量z, 假设模型的参数跟图中的定义一样,我们可以得到:
这就是混合高斯模型对应的观察数据概率分布,它是一个无监督模型的聚类模型,每个类别对应的后验分量
表示该点属于某个类别的概率,要想得到某个点对应的分量,我们必须先根据数据集估计出模型参数,这就是上面问题的目标。
求解
要估计出模型参数,对于含隐变量的无监督模型,绝大部分情况下都是用EM算法求解。
E步(E-step)
其中m时数据点的维度。
E步就是在老的参数的基础上求出隐藏数据集的分布,并计算联合变量分布对数的期望。
M步 (M-step)
M步时最大化E步期望,获得新的参数。
Algorithm
Require: 数据集D,类别数K。
Step 1: 初始化参数α, μ, Σ;
Step 2: 执行E步,获得Eγik, Enk;
Step 3: 执行M步,更新α, μ, Σ;
Step 4: 重复E步和M步,知道F收敛或者α, μ, Σ收敛。