首页 > 代码库 > EM算法理解

EM算法理解

       最近一直研究和看EM算法,尝试理解它的含义和用途,一直被人们称为“上帝的算法”,现在我就谈一下几点自己的看法。

       它主要运用的场景应该是含有隐变量的地方,其中一个典型的情况就是混合高斯模型。用通俗的话来说,当一个模型很难描述数据的分布的情况时,需要多个模型的时候,便会引入隐变量的概念。一般问题,假设一堆观测数据属于两个集合,但是我们事先不知道每个观测点来自哪个集合,知识后还要我们求出这两个分布的模型参数。

     假设知道属于哪一类求模型的参数,那么就是极大似然估计可以解决;假如知道高斯模型参数求属于哪一类,那么用贝叶斯公式就可以解决;但是既不知道属于哪一类也不知道模型参数,让我们同时优化,这个时候就出现了EM算法。具体的公式在这里就不介绍了,首先分为E步,通过假设属于哪一类(后续也需要不断迭代);M步,假设已经知道属于哪一类了,就可以用极大似然估计求出模型参数,然后不断迭代直至最后收敛。

EM算法理解