采用EM算法求解高斯混合模型参数

来源:互联网 发布:北京的设计公司知乎 编辑:程序博客网 时间:2024/05/07 05:30

高斯混合模型参数

(别看了吧。。。CSDN上我的博客的图无缘无故全挂了,自己搭建了博客,正在迁移博客中)

多元高斯分布的定义为:对于n为样本空间χ中的随机变量x,x服从高斯分布,其概率密度为:


其中μ为n维均值向量,Σ为n×n的协方差矩阵,高斯分布完全由这两个参数确定,可以把这种确定关系记为p(x|μ,Σ)。

定义高斯混合分布为:



假设混合高斯模型由k个多元高斯分布混合而成,其中 , 分别为第i个高斯分布的均值向量和协方差矩阵。 被称为混合系数,表示第i的高斯分布出现的概率,因此应当满足归一性:

如果训练集由上述过程生成,令表示 属于的高斯混合的成分,由贝叶斯定理易得 的后验概率为


表示的是属于第i个高斯分布的后验概率,为了方便描述,后面用 表示。那么,对于样本的簇标记如下确定:



通俗的说就是找到他最可能属于的那个高斯分布。

对于式(2.2)中模型参数的求解方法,很直观的可以想到采用最大化对数似然


下面介绍一下,本次试验中,训练样本生成的过程,我初始化Σ为多个对角阵构成的向量,也就是说每个多元高斯分布的协方差矩阵为一个对角阵。均值可任意设置。对于每n个高斯分布,其第i维的方差就是他对角阵上元素

的值,然后对这个多元高斯分布的每一维,已知均值方差,可以利用python的random. gauss生成一个数,然后,将所有维度组合成一个向量,就是这个多元高斯分布的一个样本。对于不同的多元高斯分布,还要考虑他的混合系数 ,也就是他的出现概率,这个不难实现。

EM算法求解高斯混合模型原理

在2.2.1节中,已经得到了最大化似然(2.5),接下来,对(2.5)求导,设导数为0得到:



 求导设倒数为0:




混合系数 除了最大化LL(D),还要满足 ≥0, =1,考虑LL(D)的拉格朗日形式,对其求导后设导数为0,可以得到:



这里还有一个问题,虽然我们得到了导数为0的表达式,但是 这三个参数和 有相互依赖的关系,为此,我们为设置一个初值,这个初值可以根据样本合理设置,然后根据这些初值得到再利用 ,借助公式(2.6)、(2.7)、(2.8)得到新的, 然后再利用这些参数更新如此往复可以达到收敛状态,这个详细的数学证明没有特别理解,大概是利用了Jensen不等式。

EM算法编程实现

编程实现参考了周志华老师的《机器学习》第210页,下面附上伪代码:


对已知参数数据估计参数

生成数据为3个2元高斯分布混合模型,三个分布的均值分别为:(1,1)、(2,1)、(1.5,2)。设置三组不同的协方差矩阵,对运行结果做了比较分析。





对未知参数数据估计参数




0 0
原创粉丝点击