首页 > 代码库 > 高斯混合模型与EM算法
高斯混合模型与EM算法
对于高斯混合模型是干什么的呢?它解决什么样的问题呢?它常用在非监督学习中,意思就是我们的训练样本集合只有数据,没有标签。
它用来解决这样的问题:我们有一堆的训练样本,这些样本可以一共分为K类,用z(i)表示。,但是具体样本属于哪类我们并不知道,现在我们需要建立一个模型来描述这个训练样本的分布。这时, 我们就可以用高斯混合模型来进行描述。
怎么入手呢?
高斯混合模型:
我们这么想,因为样本集合潜在地是可以分为K类的,用z(i)表示第 i 样本所属的类别,所以z(i) 的范围为从1至 K。对于我们可以用z(i)多项式分布模型来描述它的分布。然后呢,对于属于潜同一个类别内的样本,假设它们服从高斯分布(这和高斯判别模型有点类似的)。然后呢,假设我们创建了一个模型哈(其实它就是我们要讲的高斯混合模型),然后,我们呢,我们表示一个样本x(i) 的分布在这个模型下可以用概率表示为:
(注意:对于上式中的多元正态分布与多项式分布如果不太了解,可以看一个我 之前写的高斯判别分析模型与Logistic 分类器与 softmax分类器,里面有写到)
然后,我们写出它的拟然函数,如下所示:
虽然通过上面的分析,我们可以写出相应的公式来,但是呢,很难去求解啊。那怎么办??
注意下面我们先假设哈:如果我们假设我们已经知道了我们所求的样本x(i) 所属于的类别为的 z(i) 话,那么问题就会变得很简单了,此时,拟然函数可以变为了这样:
此时,通过类似高斯判别分析模型中的方法,我们最大化拟然函数,我们可以得到相关参数和值可以表示为:
(上面的式子很容易理解的吧,其实就是用频率来估计它们的期望。)
利用EM算法求解。
下面我们要做的就是利用EM算法,按照我们假设的思路来求。具体为:
重复下面的过程,直到收敛:{
E-step:
M-setp:
}
什么意思呢?其实第一个步骤E-step中,我们要做的就是估计训练集合中每一个样本属于每一个类别的概率的大小.怎么求呢,我们可以用下面公式:
第二个步骤中,会想为什么要这么更新参数值呢?
其实想想很简单:如果把它和 K-means的聚类算法作比较,我们做发现是这样的,在K-means的聚类算法我们已经明确指定了一个样本所属于的类别,而这里呢,我们没有明确去指定,而是都过概率的形式来指明的。所以,在更新参数时,我们通过概率对所以样本进行加权了,概率表示了该样本属于第 j 类别的可能性的大小,加权目的就是在计算该类别的高斯分布的参数时,指定不同的样本占有的比重不一样,属于该类别概率越大的样本占的权值越大。
最后说明的是,这样EM算法是收敛的,另外,它也存在局部极值的问题,所以呢, 我们可以通过多次不同的初始化值来解决哦。
高斯混合模型与EM算法