高斯混合模型也是一种常见的聚类算法,与K均值聚类算法类似,同样使用了EM算法进行迭代计算。高斯混合模型假设每个簇的数据都符合高斯分布(又叫正太分布)的,当前数据呈现的分布就是各个簇的高斯分布的叠加在一起的结果。
高斯分布模型即用多个高斯分布函数的线性组合来对数据分布进行拟合。理论上高斯混合模型可以拟合出任意类型的分布。
说起高斯分布,大家都不陌生,通常身高,分数等都大致符合高斯分布。因此,当我们研究各类数据时,假设同一类的数据符合高斯分布,也是很简单自然的假设;当数据事实上有多个类,或者我们希望将数据划分为一些簇时,可以假设不同簇中的样本各自服从不同的高斯分布,由此得到的聚类算法称为高斯混合模型。
高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的,在该假设下,每个单独的分模型都是标准高斯模型,其均值u和方差e是待估计得参数。此外每个分模型都还有一个参数P,可以理解为权重或生成数据的概率。
高斯混合模型是一个生成式模型。可以这样理解数据的生成过程,假设一个最简单的情况,即只有两个一维标准高斯分布模型N(0,1)和N(5,1),其权重分别为0.7 和0.3..那么在生成第一个数据点时,先按照权重的比例,随即选择一个分布,比如选择第一个高斯分布,,接着从N(0,1)中生成一个点,如-0.5,便是第一个数据点。在生成第二个数据点时,随机选择到第二个高斯分布N(5,1),生成第二个点4.7 ,如此循环执行,便生成出所有数据点。
然而,通常我们并不能直接得出高斯混合模型的参数,,而是观察到一系列数据点,给出一个类别的数量K后,希望求得最佳的K个高斯分布模型。因此,高斯混合模型的计算,便成了最佳均值u,方差e,权重派的寻找,这类问题通常通过最大似然估计来求解。遗憾的是,此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数时和的对数,难以展开和对其求偏导。
在这种情况下,可以利用上一届介绍过的EM算法框架来求解该优化问题,。EM算法在最大化目标函数时,先固定一个变量使得整体函数变为凸优化函数,,求导得到最值然后利用最优参数更新被固定的变量。。进入下一个循环。具体到高斯混合模型的求解。EM算法的迭代过程如下。
首先,初始随机选择各参数