EM算法 估计混合高斯模型参数 Python实现

来源:互联网 发布:火炮分类 知乎 编辑:程序博客网 时间:2024/04/26 11:54

EM算法 估计混合高斯模型参数 Python实现

EM算法是一种用来解决含有隐变量问题的算法,混合高斯模型中对于某个数据我们并不知道是来自于哪个模型,因此可以视为隐

变量,故可以采用隐含高斯模型来求解,混合高斯模型的具体推导可以参考《统计学习方法》9.3章节这里不给出详细的推导公式,其实就是参数的迭代,首先写出Q函数,然后再极大化Q函数得到迭代公式

输入数据:datain=[-64,-48,6,8,14,16,23,24,28,29,41,49,56,60,75]

这里假设数据来源于两个高斯模型的混合,算法目标是估计每个模型的权重、期望和方差

 


程序运行结果



上面直方图表示输入数据的频率,曲线图红色表示两个高斯模型叠加的概率分布


总结:迭代40次的时候,参数已经收敛

           初值不同,运行得到的参数结果也不同,这也说明EM算法只能保证局部最优

           对于参数初值的选择有不同的策略,常见的策略有:

                  1:选取正负实例的均值和方差

                  2:随机选取,大多数情况下是有效的,还可以多次选取,最后取拟合最好                           的那组初值

                  3:Neal和Hinton等在论文中讨论了不同的初值选取策略




0 0
原创粉丝点击