uniform机器学习极简入门4—高斯混合聚类(GMM Gaussian Mixture Model)

uniform机器学习极简入门3 我们介绍了KMeans的基本概念,这个方法是给每个样本归属一个类别,我们可以找出每个类别的原型向量,但是很多场景里往往不是这种0-1事件,我们需要的是某个样本属于各个类别的概率。高斯混合聚类模型正是这样一种模型,用概率分布来表示类别标签。

1 高斯混合聚类概述(GMM)

基本定义:

假设已知空间概率分布是由k个高斯分布混合而成,每个样本都是来源于这混合分布的采样。

公式表示如下
P_M(x_j)=\sum_{i=1}^{k}\alpha_iP(x_j|\mu_i,\sigma^2_i)
其中第i个分量的高斯分布表示如下
P(x_j|\mu_i, \sigma^2_i)=\frac{1}{\sqrt{2\pi}\sigma_i}e^{-\frac{(x_j-\mu_i)^2}{2\sigma^2_i}}
公式很直接表示了某个样本xj的概率是由多个高斯分布组合而成。其中\alpha表示第i个高斯分布的先验概率。
已知某个样本xj,属于i的后验概率
P(z_j=i)=\alpha_i
P(z_j=i|x_j)=\frac{P(z_j=i)P(x_j|z_j=i)}{\sum_lP(z_j=l)P(x_j|z_j=l)}
=\frac{\alpha_iP(x_j|z_j=i)}{\sum_l\alpha_lP(x_j|z_j=l)}

后验概率直观上也很好理解,就是已知某个样本,求解其来源i高斯分布的概率。
我们简化表示
r_{ji}=\frac{\alpha_iP(x_j|z_j=i)}{\sum_l\alpha_lP(x_j|z_j=l)} \ \ \ \ \ \ \ (1)

2 高斯混合聚类模型求解推导

通过模型描述,我们看出需要求解的参数有
(\alpha_i, \mu_i, \sigma^2_i)
如何求解概率参数?我们这个教程最开就介绍了两种参数估计的方法:

  1. 最大似然求解
  2. 最大后验概率求解

这里每个高斯分量都有两个参数,如果加上先验分布假设似乎不太方便,我们这里用最大似然来求解如下:
L = \prod^{j=1}_{n}P_M(x_j)
=\prod^{j=1}_{n}[\sum_{i=1}^{k}\alpha_iP(x_j|\mu_i,\sigma^2_i)]
这里我们依然采用取对数来优化(都是凸函数),而且里面P(·)表示的是高斯分布,继续推导如下
L = \sum_{j=1}^{n} log[\sum_{i=1}^{k}\alpha_iP(x_j|\mu_i,\sigma^2_i)]
=\sum_{j=1}^{n} log[\sum_{i=1}^{k}\alpha_i\frac{1}{\sqrt{2\pi}\sigma_i}e^{-\frac{(x_j-\mu_i)^2}{2{\sigma}^2_i}}]
我们分别对之前提到的求解的三个参数求导,得:
\frac{\partial L}{\partial \mu_i}=\sum_{j=1}^{n}\frac{\alpha_iP(x_j|\mu_i,\sigma^2_i)[\frac{x_j-\mu_i}{\sigma^2_i}]}{\sum_{l=1}^{k}\alpha_lP(x_j|\mu_l,\sigma^2_l)}
=\sum_{j=1}^{n}r_{ji}(x_j-\mu_i)=0
=>\mu_i=\frac{\sum_{j=1}^n r_{ji}x_j}{\sum_{j=1}^n r_{ji}} \ \ \ \ (2)
先不管这个公式推导,我们直观理解这个结果,每个高斯分布的均值这个参数其实就是每个样本的加权求和(权重就是这个样本属于这个高斯分布的概率)。
这里加权求和,如果是在KMeans,这里的权重就要么为0要么为1,其实就是KMeans更加泛化,如下KMeans的均值向量
\mu_i=\frac{\sum_{j=1}^{n}1\{z_j=i\}x_j}{\sum_{j=1}^{n}1\{z_j=i\}}
这样就好理解了。

我们继续求解方差这个项
\frac{\partial L}{\partial \sigma_i} =\sum_{j=1}^{n}\frac{\alpha_i\frac{1}{\sqrt{2\pi}}[\frac{-1}{\sigma_i^2}e^{f}+\frac{1}{\sigma_i}e^f(\frac{(x_j-\mu_i)^2}{\sigma^3_i})] }{\sum_{l=1}^{k}\alpha_lP(x_j|\mu_l,\sigma^2_l)}
=\sum_{j=1}^nr_{ji}[(x_j-\mu_i)^2-\sigma^2_i] = 0
=>\sigma^2_i=\frac{\sum_{j=1}^{n}(x_j-\mu_i)(x_j-\mu_i)^T}{\sum_{j=1}^{n}} \ \ \ \ \ (3)
同样对比于Kmeans,我们上节说到属于球形的聚类,所以方差就是直接等于1(常数)

我们已知关系
\sum_i\alpha_i=1
这里用拉格朗日乘子
l = L + \lambda(\sum_{i=1}^{k}\alpha_i-1)
同样求导
\alpha_i=\frac{1}{n}\sum_{j=1}^{n}r_{ji} \ \ \ \ (4)
这里同样是采用EM算法(其实Kmeans也是用EM算法来求解,这个算法我们下一节会介绍到)

随机初始化参数(\alpha, \mu, \sigma)

  • E步
    根据公式(1)求解rji
  • M 步
    根据E步求解结果,一句公式(2)(3)(4)求解对应的三个参数
    然后根据更新的三个参数继续反复求解EM

3 应用

1)空间点分布

还记得我们在最大似然法里举的例子,学校里男生和女生的身高问题,在大样本情况下,身高可以看成服从高斯分布,因此用GMM来求解那女的身高是合理的。

假设我们有如下数据:


Data

(红色和蓝色假设事先不知道,我们如果需要聚类可能需要确认下K)

用上节提到的曲率的方法


k_SSE

可以看到曲率较大的是k=2, 4
我们就用这两个参数来试验

  • KMeans


    KMeans
  • GMM
    如果用GMM,效果如下


    GMM

从结果来看,GMM效果明显更合理,能够很好捕捉到高斯分量的分布。

2)基于GMM的图像应用

另外一个应用就是在图像里对前景和背景的建模。
下面摘自博客 车辆前景检测算法

在运动目标的前景检测中,GMM的目标是实现对视频帧中的像素进行前景/背景的二分类。通过统计视频图像中各个点的像素值获取背景模型,最后利用背景减除的思想提取出运动目标。
GMM假设在摄像机固定的场景下,在一段足够长的时间区间内,背景目标出现的概率要远高于前景目标。利用监控视频的这一特点,对视频帧上的任意坐标的像素值进行时间方向的统计,为每个坐标分配若干个高斯概率密度函数作为该位置的像素值概率分布模型。

该方法是对每个像素坐标的像素值进行高斯混合建模,所以模型参数也较大(每个像素点都有若干个高斯分布)

假设坐标(x,y),我们对该点在视频一段时间的像素值进行建模,用k个高斯分布描述
M_p=(G_1(\mu_1,\sigma_1,w_1), G_1(\mu_2,\sigma_2,w_2), ..., G_1(\mu_k,\sigma_k,w_k))
图像每个像素点的像素值如果看成只服从一个高斯分布,那只需要求解每个像素点的参数(均值,方差),如果看成是由多个高斯分布组成,则求解参数(均值,方差,权重)。
如下图,一个是单峰,一个是三峰的像素值分布

单峰的像素值分布
多峰的像素值分布
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文首发公众号【花间奇谈】,转载请联系公众号授权。 张小姐一大清早来到公司,就发现自己的办公室被围的水泄不通。 “...
    花间奇谈阅读 529评论 0 6
  • 暗线练习——画了八把钥匙。 原因有二:一是想多练习几个图样;二是因为赋予钥匙更多的含义,一把钥匙开一把锁,人生需要...
    喜悦Iris阅读 320评论 0 0
  • 其实,最开始的时候,我并没有想7月份当值月生,因为我知道7月份我的工作依旧很忙。但后来,心态发生了转变,我相信自己...
    小仙女雨婷阅读 482评论 4 3
  • 人间最珍贵的是什么是善良 善良的人总是在播种阳光和雨露抚慰人们心灵的创伤 善良的人总是以他人之乐为乐乐于施与帮助人...
    杨启峰阅读 547评论 1 10