一 高斯混合模型
二 使用EM算法对高斯混合模型进行参数估计
假设观测数据y1,y2,…yn 由高斯混合模型生成
因为高斯混合模型是由许多高斯模型组合而成的,我们无法确定某一个观测数据yj 具体是由哪一个高斯模型生成的,这也就是我们这个概率模型的一个隐变量。它的定义如下:
第一步 我们先得出这个问题的完全数据的对数似然函数
第二步 根据EM算法 我们要计算Q函数
第三步 根据EM算法 要求出极大化Q函数的参数
即求
下求偏导数并令其为 0 得到的。
下面给出高斯混合模型参数估计的EM算法流程
三 代码实现
class Gaussian_EM:
def __init__(self,Train,K,M):
# Train 表示观测变量
self.Train = Train
# K表示高斯混合模型有多少分量
self.K=K
#a 表示高斯混合模型中每一个模型前面的系数
self.a=[0.4,0.5,0.1]
#avg,var=self.init_e_and_var()
# var 表示高斯混合模型中每一个模型的方差
self.var=[1000,500,100]
#u 表示高斯混合模型中每一个模型的期望
self.u =[16,28,45]
#迭代次数
self.M=M
#第j 个观测来自第k个分模型的概率
self.gama=None
def init_e_and_var(self):
#初始化期望方差
sum=0
for i in range(self.Train.shape[0]):
sum+=self.Train[i]