一、先说一个栗子

米饭的例子

假如现在在食堂吃饭,找了张桌子,我打了一碗饭,往这里一坐,碗放在桌上。以俯视的角度从上往下看,此时把桌子看做坐标轴,米饭为数据点,这是在二维平面上,那么数据点是由二维坐标确定的。那么碗就可以看做GMM模型二维聚类俯视图的圈,聚类的中心点自然就是在碗里。此时的桌子、碗、米饭组成的整体,就可以称之为二维平面上的一成分高斯混合模型。

这个时候,突然来了个同学,也正好端着一碗米饭,在我对面坐下了,也把碗往桌上这么一放。此时平面上就有两堆数据点了,这就可以看做是两个成分的高斯混合模型。此时的桌子、碗、米饭组成的整体,就可以称之为二维平面上的二成分高斯混合模型。如果这个时候,我发现桌上有一粒米饭,我就想啊,这粒米饭到时是你碗里的呢,还是我碗里的呢,诶,这时就需要用到高斯混合模型估计了。

步骤如下:

  • 1.根据两堆数据点确定高斯混合模型的参数均值向量和协方差矩阵,确定参数可以使用EM期望最大算法;这里最终得到描述两碗米饭的两个GMM。
  • 2.将桌上的这粒米饭以二维坐标表示,输入到我们计算好的两个高斯混合模型。得出在每个GMM下概率,一般情况下,哪个概率大,就认为属于哪一堆数据。一般的看来,会认为,这里米饭离谁近就是谁的,没错确实是这样。但是也有这样的可能,米饭是离我比较近,但是我打的是三毛的米饭,而你打的是两块的米饭,我的少,你的多,这个时候就不一定了,那么这就关系到GMM权重的设置了。

同样的,把食堂看做一个平面,把一个桌子上的碗装着的米饭,看做一堆数据。假设食堂有N张桌子,那么就有N堆数据,这时如果地上有一粒米饭,就需要对这N堆数据建模,然后根据此米饭的坐标确定大概是属于哪张桌子掉下来的。那么此时的模型就成为二维N成分高斯混合模型。

二、从图像的角度理解

通过上面例子有个大致的理解了,就是通过多个高斯模型通过EM算法拟合出一个混合的高斯模型。对应到图像中就是一个有多个波峰的灰度图(如前景和背景可以看成是两个波峰),而每个波峰就对应的是一个要分类的K点(相当于K-means的k个分类)。然后将每个像素点带入高斯混合模型计算概率,然后这个概率在K个分类中取最大的概率,那么这个像素点就是属于这个分类。

非平衡面板可以直接回归_GMM