高斯混合模型(Gaussian Mixture Model)是机器学习中一种常用的聚类算法,本文介绍了其原理,并推导了其参数估计的过程。主要参考Christopher M. Bishop的《Pattern Recognition and Machine Learning》。

以粗体小写字母表示向量,粗体大写字母表示矩阵;标量不加粗,大写表示常数。

1. 高斯分布

高斯分布(Gaussian distribution),也称为正态分布(normal distribution),是一种常用的连续变量分布的模型。若单个随机变量

服从均值为
,方差为
的高斯分布,记为
,则其概率密度函数为:

对于一个

维的向量
,若其各元素服从均值为向量
,协方差矩阵为
的多元高斯分布,记为
,则概率密度为:

其中

维均值向量,
的协方差矩阵,
表示
的行列式。

(1)式中,指数部分的二次型

称为
的马哈拉诺比斯距离(马氏距离,Mahalanobis distance);当
为单位矩阵时退化为欧几里得距离(Euclidean distance)。多元高斯分布密度函数的等高线即
为常数时
的方程,是椭球方程(Ellipsoid - Wikipedia)。

2. 高斯混合模型(Gaussian Mixture Model)

多个高斯分布的线性叠加能拟合非常复杂的密度函数;通过足够多的高斯分布叠加,并调节它们的均值,协方差矩阵,以及线性组合的系数,可以精确地逼近任意连续密度([1], Section 2.3.9, p111)。

我们考虑

个高斯分布的线性叠加,这个高斯混合分布(Gaussian mixture distiburion)的概率密度函数为:

其中,

表示参数为
的高斯分布的概率密度。

我们称(2)式为一个高斯混合(Mixture of Gaussians, Gaussian Mixture)。其中每个高斯密度函数称为混合的一个分模型(component),有自己的均值

和协方差矩阵

(2)式中的参数

是模型的混合系数(mixing coefficients)。将(2)式左右两侧对
积分,得到

此外,由于

,所以
。即混合系数应满足

(更一般地,混合模型也可以是其他任意分布的叠加。)

由全概率公式,

的边缘分布(marginal distribution)的概率密度为:

上式与(2)式等价,其中

可以看作选择第
个分模型的先验概率(prior probability),
的条件概率密度。

在观测到

后,其来自第
个分模型的后验概率(posterior probability)
称为第
个分模型的响应度(responsibility)。

下图所示为包含两个一维分模型的高斯混合:

两个一维分模型的高斯混合

3. 隐变量 & 完全数据

引入一个

维的二值型随机变量
,来表示样本
由哪一分模型产生。
满足这样的条件:
,且
,即其
个元素中,有且只有一个为1,其余为0。
表示样本
由分模型
抽样得到。可以看出,
一共有
种可能的状态。
的边缘分布由混合系数给出:
。也可写成如下形式:

考虑由以下方式产生样本

  1. 先以离散分布

    抽样得到变量
  2. 设根据
    的取值选择了第
    个分模型,则以高斯分布
    抽样得到

记高斯混合模型的参数为

,则这个过程可由如下的graphical model表示[1]:
高斯混合模型的graphical model

变量

称为隐变量(latent variable),包含
取值的样本称为完全数据(complete data),只含有
取值的样本称为不完全数据(incomplete data),

给定

的条件概率密度为:

或者写成如下形式:

的边缘分布为联合概率分布
的所有可能状态求和:

也可由下面的式子得到:

这表明

的边缘分布就是高斯混合的形式。

4. 后验概率 & 响应度

根据贝叶斯定理(Bayes' theorem - Wikipedia),观测到

后,其来自第
个分模型的后验概率(posterior responsibility)为:

上式中,

为概率,
为概率密度。

将上式定义为:

,称为第
个分模型对
的响应度(responsibility)[2]。

对于样本集

,记
对应的隐变量为
,则第
个分模型对
的响应度为:

5. 对数似然函数 & 最大似然估计

现在有一个样本集

,我们假设
是由一个高斯混合模型产生的,要估计这个模型的参数:

样本集

(不完全数据)的似然函数(likelihood function)为:

似然函数中的连乘求导比较麻烦,取自然对数将其转换成对数的和,得到对数似然函数(the log of the likelihood function):

其中,

最大似然估计(maximum likelihood estimation),即通过求似然函数的最大值来估计概率模型的参数。用最大似然估计来计算高斯混合模型的参数,形成如下的优化问题:

采用拉格朗日乘子法来求极值,拉格朗日函数为:

先将

求梯度。因为

所以,

注意上式中

即为响应度
,所以有:

,则

左乘

,整理得

定义

,则
可理解为被分配到第
个分模型(聚类)的“有效“的样本数。

中各元素求偏导:

接下来涉及矩阵求导(Matrix calculus - Wikipedia),要复杂一些,这里不做推导,按参考文献[1]Chapter 9的公式(9.19),给出

的结果:

求偏导并令其为0:

注意到上式左右两边乘以

可凑出
,所以有

上式对

求和得

所以

,进而

综上,对数似然函数

的极值点满足的条件为:

需要注意的是,上式并未给出高斯混合模型的解析解/闭式解(analytical soluiton/closed-form solution),因为响应度

由式(4)给出,而参数
未知,故
无法计算。

不过,根据(6)式可使用迭代算法来计算模型参数。

6. EM算法计算高斯混合模型的参数见后续。

参考文献

[1] Christopher M. Bishop. Pattern Recognition and Machine Learning, Springer, 2006.

[2] 李航,统计学习方法,清华大学出版社,2012年。

高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)相关推荐

  1. 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...

    从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球.遗憾的是在很多分类问题中,属于同一类别的样本点并不满足"椭圆"分布的特性.这就引入了高斯混合模型.--可 ...

  2. 高斯混合模型(Gaussian Mixture Model)

    混 合 模 型 使 我 们 能 够 一 瞥 以 后 会 用 到 的 一 个 非 常 重 要 的 概 念 -- 潜 变 量(latent variable).潜变量是我们不能直接观测到的随机变量.

  3. 混合高斯模型(Gaussian Mixture Model,GMM)

    高斯混合聚类和k 均值算法(k-means)都属于原型聚类,但与k均值用原型向量来刻画聚类结构不同,高斯混合聚类采用概率模型来表达聚类原型. 一.混合模型(Mixture Model) 混合模型是一个 ...

  4. 数值计算方法 线性方程组的数值解法(4)---向量和矩阵范数(norm) 高斯-赛德尔(Gauss-Seidel)迭代、共轭梯度(Conjugate Gradient)迭代

    (范数部分matlab有现成函数,若有需要直接参照matlab_norm) 向量范数 设x∈Rn\boldsymbol x\in \boldsymbol R^nx∈Rn则范数||x||满足:∣∣x∣∣ ...

  5. 高斯—赛德尔求解线性方程+C代码

    高斯-赛德尔迭代求矩阵特征值公式如下: 举例: 实现代码: #include "stdio.h" #include "stdlib.h" #include &q ...

  6. 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现

    高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现 代码 运行 手算例题 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的 ...

  7. MATLAB实现雅可比与高斯塞德尔迭代

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...

  8. [计算机数值分析]高斯-塞德尔迭代公式解线性方程组

    在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的"新值"常比"老值"更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式 ...

  9. 高斯混合模型--GMM(Gaussian Mixture Model)

    参考:http://blog.sina.com.cn/s/blog_54d460e40101ec00.html 概率指事件随机发生的机率,对于均匀分布函数,概率密度等于一段区间(事件的取值范围)的概率 ...

最新文章

  1. Go学习笔记07-结构体与方法
  2. Android的Menu状态动态设置方法onPrepareOptionsMenu(Menu menu) (转载)
  3. 【ASP】简单Url编码和Url解码实例
  4. 计算机图像图形设计制作 步骤,怎样在电脑上制作流程图?小编“墙裂”推荐它!...
  5. 乐高无线服务器必须有房主,乐高无限成就有哪些-乐高无限成就大全_手心游戏...
  6. JSF之经常使用注解
  7. OA项目之我的审批(查询会议签字)
  8. python如何设置窗口为活动窗口
  9. 阿里云域名转京东云服务器配置图
  10. Windows10+YOLOV3+VisualStudio2017最新版本超详细过程
  11. 海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案
  12. C++设计模式-中介者模式详解
  13. HTML CSS JS实现网页聊天窗口,js实现聊天对话框
  14. 数据结构与算法笔记:抽象思维之对比算法,发现共性(下楼梯台阶和象棋跳马问题算法重构)
  15. 支持向量机 二 :非线性支持向量机
  16. php json_encode unicode,phpjson_encode总是返回unicode字符u.问题解决
  17. [jvm-sandbox] 多个agent并用
  18. 亲爱的老狼-清除浮动float的5种方法
  19. 输入三个数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形是一般三角形、等腰三角形还是等边三角形。
  20. 苹果iTunes Store下架加密货币播客

热门文章

  1. error while loading shared libraries: libmysql....
  2. apache常用的配置指令:ServerRoot
  3. Javascript在页面加载时的执行顺序
  4. Linux下理解进程,fork()创建子进程
  5. Ice笔记--C++线程与并发(小结)
  6. 自适应中值滤波及实现
  7. 数字图像处理:基于MATLAB的车牌识别项目
  8. 两个点击事件共用一个方法_杭州淘宝直播代运营:一个简单的方法,提升直播间封面图点击率!...
  9. Ubuntu上安装显卡驱动
  10. SAP Fiori + Vue = ?