我们知道生活中的很多现象,比如身高体重的分布,都满足高斯分布 (正态分布)。而高斯混合模型,则是通过多个高斯分布的叠加,实现对数据集的拟合。

高斯分布

如果学过概率论,我们知道高斯分布的公式如下:
X ∼ N ( μ , σ 2 ) X \sim N(\mu,\sigma^2) X∼N(μ,σ2)
生活中的很多现象,比如身高,都近似一种高斯分布:

考虑一个问题,如果有一组数据,其中包括男性和女性的身高,比起使用一个高斯分布,使用两个高斯分布拟合的效果是不是更好呢?

然而,我们只知道数据集,并不知道分布的参数,高斯混合要做的,就是把每个高斯分布的参数求出来。

多元高斯分布

多元高斯分布的公式如下:
p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) p(x) = \frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)} p(x)=(2π)2n​∣Σ∣21​1​e−21​(x−μ)TΣ−1(x−μ)

  • μ \mu μ 是 n 维均值向量
  • Σ \Sigma Σ 是 n × n n\times n n×n 的协方差矩阵

高斯混合模型 (GMM)

考虑数据集

编号 密度 含糖率
1 0.697 0.460
2 0.774 0.376
3 0.634 0.264
4 0.608 0.318
5 0.556 0.215
6 0.403 0.237
7 0.481 0.149
8 0.437 0.211
9 0.666 0.091
10 0.243 0.267

初始化

首先考虑将数据集分成几类,比如分 3 类。

接下来就需要初始化 3 个类,也就是三个高斯分布的参数:

初始化三个高斯分布的权重各为 1/3
α 1 = α 2 = α 3 = 0.3333 \alpha_1=\alpha_2=\alpha_3=0.3333 α1​=α2​=α3​=0.3333
初始化三个高斯分布的协方差矩阵,由于样本集有 2 个维度,故高斯分布也满足二维
Σ 1 = Σ 2 = Σ 3 = ( 0.1 0 0 0.1 ) \Sigma_1=\Sigma_2=\Sigma_3=\begin{pmatrix} 0.1 & 0 \\ 0 & 0.1 \end{pmatrix} Σ1​=Σ2​=Σ3​=(0.10​00.1​)
随机选择 3 个样本作为 3 个高斯分布的初始参数
μ 1 = x 2 = ( 0.774 , 0.376 ) \mu_1=x_2=(0.774,0.376) μ1​=x2​=(0.774,0.376)

μ 2 = x 5 = ( 0.556 , 0.215 ) \mu_2=x_5=(0.556,0.215) μ2​=x5​=(0.556,0.215)

μ 3 = x 8 = ( 0.437 , 0.211 ) \mu_3=x_8=(0.437,0.211) μ3​=x8​=(0.437,0.211)

求出每个样本对于每个高斯分布的概率密度

p 1 ( x 1 ) = 1 2 π ∣ Σ 1 ∣ 1 2 e − 1 2 ( x 1 − μ 1 ) T Σ 1 − 1 ( x 1 − μ 1 ) p_1(x_1) = \frac{1}{2\pi|\Sigma_1|^{\frac{1}{2}}}e^{-\frac{1}{2}(x_1-\mu_1)^T\Sigma_1^{-1}(x_1-\mu_1)} p1​(x1​)=2π∣Σ1​∣21​1​e−21​(x1​−μ1​)TΣ1−1​(x1​−μ1​)

其中
∣ Σ 1 ∣ = 0.01 |\Sigma_1|=0.01 ∣Σ1​∣=0.01

x 1 − μ 1 = ( − 0.077 0.084 ) x_1-\mu_1=\begin{pmatrix} -0.077 & 0.084 \end{pmatrix} x1​−μ1​=(−0.077​0.084​)

计算得到
p 1 ( x 1 ) = 1.4915 p_1(x_1) = 1.4915 p1​(x1​)=1.4915
同理
p 2 ( x 1 ) = 1 2 π ∣ Σ 2 ∣ 1 2 e − 1 2 ( x 1 − μ 2 ) T Σ 1 − 1 ( x 1 − μ 2 ) p_2(x_1) = \frac{1}{2\pi|\Sigma_2|^{\frac{1}{2}}}e^{-\frac{1}{2}(x_1-\mu_2)^T\Sigma_1^{-1}(x_1-\mu_2)} p2​(x1​)=2π∣Σ2​∣21​1​e−21​(x1​−μ2​)TΣ1−1​(x1​−μ2​)
计算得到
p 2 ( x 1 ) = 1.0673 p_2(x_1)=1.0673 p2​(x1​)=1.0673

p 3 ( x 1 ) = 1 2 π ∣ Σ 3 ∣ 1 2 e − 1 2 ( x 1 − μ 3 ) T Σ 1 − 1 ( x 1 − μ 3 ) p_3(x_1) = \frac{1}{2\pi|\Sigma_3|^{\frac{1}{2}}}e^{-\frac{1}{2}(x_1-\mu_3)^T\Sigma_1^{-1}(x_1-\mu_3)} p3​(x1​)=2π∣Σ3​∣21​1​e−21​(x1​−μ3​)TΣ1−1​(x1​−μ3​)

= 0.6998 =0.6998 =0.6998

经过对 10 个样本的计算,得到如下矩阵:

  • 每一行代表一个样本
  • 每一列代表样本在该类的概率密度
([[1.49150105, 1.06734902, 0.6998446 ],[1.59154943, 1.10239273, 0.69713097],[1.35525283, 1.5254402 , 1.22695811],[1.36357241, 1.48905699, 1.19207803],[1.10239273, 1.59154943, 1.45081146],[0.72607499, 1.41233311, 1.5222782 ],[0.80076963, 1.51407248, 1.57621756],[0.69713097, 1.45081146, 1.59154943],[1.00026306, 1.38725646, 1.20404055],[0.36622698, 0.96208067, 1.22986945]])

将概率密度乘以权重 α \alpha α

即第 1 列的每个值 * α 1 \alpha_1 α1​,第 2 列的每个值 * α 2 \alpha_2 α2​,第 3 列的每个值 * α 3 \alpha_3 α3​

对于第一个样本,得到:
γ 1 ( x 1 ) = α 1 ⋅ p 1 ( x 1 ) = 0.4972 \gamma_1(x_1) = \alpha_1 \cdot p_1(x_1)=0.4972 γ1​(x1​)=α1​⋅p1​(x1​)=0.4972

γ 2 ( x 1 ) = α 1 ⋅ p 1 ( x 1 ) = 0.3558 \gamma_2(x_1) = \alpha_1 \cdot p_1(x_1)=0.3558 γ2​(x1​)=α1​⋅p1​(x1​)=0.3558

γ 3 ( x 1 ) = α 1 ⋅ p 1 ( x 1 ) = 0.2333 \gamma_3(x_1) = \alpha_1 \cdot p_1(x_1)=0.2333 γ3​(x1​)=α1​⋅p1​(x1​)=0.2333

对于 10 个样本,得到如下矩阵:

([[0.49716702, 0.35578301, 0.23328153],[0.53051648, 0.36746424, 0.23237699],[0.45175094, 0.50848007, 0.40898604],[0.45452414, 0.49635233, 0.39735934],[0.36746424, 0.53051648, 0.48360382],[0.242025  , 0.4707777 , 0.50742607],[0.26692321, 0.50469083, 0.52540585],[0.23237699, 0.48360382, 0.53051648],[0.33342102, 0.46241882, 0.40134685],[0.12207566, 0.32069356, 0.40995648]])

归一化得到 γ \gamma γ

即对于每一个样本:
γ j ( x ) = γ j ( x ) ∑ i γ i ( x ) \gamma_j(x)=\frac{\gamma_j(x)}{\sum_i\gamma_i(x)} γj​(x)=∑i​γi​(x)γj​(x)​
对于第一个样本:
γ 1 ( x 1 ) = γ 1 ( x 1 ) γ 1 ( x 1 ) + γ 2 ( x 1 ) + γ 3 ( x 1 ) = 0.4577 \gamma_1(x_1)=\frac{\gamma_1(x_1)}{\gamma_1(x_1)+\gamma_2(x_1)+\gamma_3(x_1)}=0.4577 γ1​(x1​)=γ1​(x1​)+γ2​(x1​)+γ3​(x1​)γ1​(x1​)​=0.4577

γ 2 ( x 1 ) = γ 2 ( x 1 ) γ 1 ( x 1 ) + γ 2 ( x 1 ) + γ 3 ( x 1 ) = 0.3275 \gamma_2(x_1)=\frac{\gamma_2(x_1)}{\gamma_1(x_1)+\gamma_2(x_1)+\gamma_3(x_1)}=0.3275 γ2​(x1​)=γ1​(x1​)+γ2​(x1​)+γ3​(x1​)γ2​(x1​)​=0.3275

γ 3 ( x 1 ) = γ 3 ( x 1 ) γ 1 ( x 1 ) + γ 2 ( x 1 ) + γ 3 ( x 1 ) = 0.2148 \gamma_3(x_1)=\frac{\gamma_3(x_1)}{\gamma_1(x_1)+\gamma_2(x_1)+\gamma_3(x_1)}=0.2148 γ3​(x1​)=γ1​(x1​)+γ2​(x1​)+γ3​(x1​)γ3​(x1​)​=0.2148

对于每一个样本,得到如下矩阵:

([[0.45769893, 0.32753883, 0.21476225],[0.46933504, 0.32508669, 0.20557828],[0.32993377, 0.37136557, 0.29870066],[0.3371251 , 0.36814949, 0.2947254 ],[0.26597304, 0.38399132, 0.35003563],[0.19834395, 0.38581102, 0.41584503],[0.20579731, 0.38911572, 0.40508697],[0.18642398, 0.38797021, 0.4256058 ],[0.27850378, 0.38625456, 0.33524166],[0.14315935, 0.37608056, 0.48076009]])

更新参数

更新 α \alpha α

α \alpha α 相当于每个聚类概率的均值,更新公式如下:
α i = γ i ∑ j γ j \alpha_i = \frac{\gamma_i}{\sum_j\gamma_j} αi​=∑j​γj​γi​​
更新后的 α \alpha α:
α 1 = 0.28722943 \alpha_1=0.28722943 α1​=0.28722943

α 2 = 0.3701364 \alpha_2=0.3701364 α2​=0.3701364

α 3 = 0.34263418 \alpha_3=0.34263418 α3​=0.34263418

更新 μ \mu μ

μ \mu μ 即 x 的均值,更新公式如下:
μ i , j = ∑ i x i , j ⋅ γ i , j ∑ i γ i , j \mu_{i,j}=\frac{\sum_i x_{i,j}\cdot\gamma_{i,j}}{\sum_i\gamma_{i,j}} μi,j​=∑i​γi,j​∑i​xi,j​⋅γi,j​​
即对于每一个聚类:其 μ \mu μ = 该聚类的 γ \gamma γ * 对应的样本 / 该聚类的 γ \gamma γ 之和

对于第一个样本:
∑ i γ i , 1 = 2.8723 \sum_i\gamma_{i,1} = 2.8723 i∑​γi,1​=2.8723

∑ i x i , 1 γ i , 1 = 1.7250 \sum_i x_{i,1}\gamma_{i,1} = 1.7250 i∑​xi,1​γi,1​=1.7250


μ 1 , 1 = ∑ i x i , 1 γ i , 1 ∑ i γ i , 1 = 0.6006 \mu_{1,1} = \frac{\sum_ix_{i,1}\gamma_{i,1}}{\sum_i\gamma_{i,1}}=0.6006 μ1,1​=∑i​γi,1​∑i​xi,1​γi,1​​=0.6006
同理
μ 1 , 2 = ∑ i x i , 2 γ i , 1 ∑ i γ i , 1 = 0.2811 \mu_{1,2} = \frac{\sum_ix_{i,2}\gamma_{i,1}}{\sum_i\gamma_{i,1}}=0.2811 μ1,2​=∑i​γi,1​∑i​xi,2​γi,1​​=0.2811
对于每一个样本,求得矩阵:

([[0.60055553, 0.28114106],[0.54399246, 0.24676209],[0.51381731, 0.23498059]])

更新 Σ \Sigma Σ

更新公式如下:
Σ i = ∑ j ( x j − μ i ) T ( x j − μ i ) γ i , j ∑ j γ i , j \Sigma_i=\frac{\sum_j(x_j-\mu_i)^T(x_j-\mu_i)\gamma_{i,j}}{\sum_j\gamma_{i,j}} Σi​=∑j​γi,j​∑j​(xj​−μi​)T(xj​−μi​)γi,j​​
更新后的 Σ 1 \Sigma_1 Σ1​:

[[0.01011193, 0.00593932],[0.00593932, 0.01346392]]

更新后的 Σ 2 \Sigma_2 Σ2​:

[[0.00311919, 0.0047306 ],[0.0047306 , 0.02108242]]

更新后的 Σ 3 \Sigma_3 Σ3​:

[[0.01032781, 0.00330684],[0.00330684, 0.01090279]]

按照上面的顺序,进行多次迭代更新,最终根据概率密度可以得到分类结果:

后的 Σ 1 \Sigma_1 Σ1​:

[[0.01011193, 0.00593932],[0.00593932, 0.01346392]]

更新后的 Σ 2 \Sigma_2 Σ2​:

[[0.00311919, 0.0047306 ],[0.0047306 , 0.02108242]]

更新后的 Σ 3 \Sigma_3 Σ3​:

[[0.01032781, 0.00330684],[0.00330684, 0.01090279]]

按照上面的顺序,进行多次迭代更新,最终根据概率密度可以得到分类结果:

【机器学习自学笔记6】高斯混合模型(GMM)相关推荐

  1. 机器学习笔记之高斯混合模型(一)模型介绍

    机器学习笔记之高斯混合模型--模型介绍 引言 高斯混合模型介绍 示例介绍 从几何角度观察高斯混合模型 从混合模型的角度观察 概率混合模型的引出 从概率生成模型的角度观察高斯混合模型 引言 上一系列介绍 ...

  2. ITK学习笔记(八) ITK高斯混合模型 GMM EM

    ITK学习笔记(八) ITK高斯混合模型 GMM EM 1.高斯混合模型 2.变分贝叶斯高斯混合 3.ITK中的GMM.EM 1.高斯混合模型 sklearn.mixture是一个能够学习高斯混合模型 ...

  3. 使用高斯混合模型(GMM)近似未知分布:EM算法的应用

    该篇博客是对邱锡鹏老师<神经网络与深度学习>的学习笔记.在阅读本博文之前,建议读者先阅读上一篇博客EM算法. 高斯混合模型(Gaussian Mixture Model) 如果一个连续随机 ...

  4. 一维(多维)高斯模型(One(Multi)-dimensional Gaussian Model) 高斯混合模型GMM(Gaussian Mixture Model)

    一维高斯模型(One-dimensional Gaussian Model) 若随机变量X服从一个数学期望为,标准方差为的高斯分布,记为: x~N(,). 则概率密度函数为: 高斯分布的期望值决定了其 ...

  5. 高斯混合模型GMM、核心参数、高斯混合模型GMM的数学形式

    高斯混合模型GMM.核心参数.高斯混合模型GMM的数学形式 高斯混合模型GMM 混合模型是一个可以用来表示在总体分布(distribution)中含有 K 个子分布的概率模型,换句话说,混合模型表示了 ...

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

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

  7. 高斯混合模型--GMM

    原文:http://blog.sina.com.cn/s/blog_54d460e40101ec00.html   高斯混合模型--GMM(Gaussian Mixture Model)     统计 ...

  8. 单高斯分布模型GSM,高斯混合模型GMM

    本文就高斯混合模型(GMM,Gaussian Mixture Model)参数如何确立这个问题,详细讲解期望最大化(EM,Expectation Maximization)算法的实施过程. 单高斯分布 ...

  9. EM算法应用:k均值聚类(k-means)和高斯混合模型(GMM)

    文章目录 k-means聚类 EM角度的理解 算法流程 特点 k值选择 局限性 高斯混合模型 GMM的问题描述 1,明确隐变量 2.EM算法的E步:确定Q函数 3. EM算法的E步 4. 停止条件 上 ...

最新文章

  1. 【Codeforces】427B Prison Transfer(别让罪犯跑了...)
  2. 无重复字符串的排列组合
  3. 机器人售卖雪糕机_智能售货机售货机,冰淇淋厂
  4. ios php 序列化,PHP常见的序列化与反序列化操作实例分析
  5. python流程图-使用Graphviz快速绘制流程图
  6. Linux command: dos2unix
  7. Windows 10每天定时执行脚本
  8. 输入输出系统1 ----- 特性 输出输出方式
  9. 语音基础知识-基本语音知识,声谱图,log梅普图,MFCC,deltas详解
  10. window.innerHeight和document.documentElement.clientHeight区别
  11. Depth Map Prediction from a Single Image using a Multi-Scale Deep Network--Eigen D
  12. GPS 经纬度换算方法和定位误差计算
  13. java+mysql 基于ssm的高校毕业生就业管理系统
  14. DIN数据电缆行业现状调研及趋势分析报告
  15. Go2sky -- Golang用skywalking实现全链路追踪
  16. C#-ShowWindow
  17. newifi虚拟服务器,简单几个步骤,newifi mini变身网络打印服务器,轻松省下100+-win7默认网关不可用...
  18. 论文精读|VRCNet:变分关联点云补全网络(CVPR2021)
  19. QQ小程序支付 调起微信支付
  20. app 服务器维护通知,启用 App Store 服务器通知

热门文章

  1. java小魔女大冒险_小魔女大冒险,小魔女大冒险下载,小魔女大冒险官网,礼包,活动,图片,评测,专区,论坛 - 酷酷跑手机游戏...
  2. Postgresql数据库javaweb教程详细完整版(一)
  3. storm100有害吗 vapor_风暴电子烟的怎么样?风暴电子烟有哪些产品?
  4. 微信浏览器 苹果 ios 网页跳转没反应
  5. 连续调用两次socket函数
  6. 理解S12(X)架构中的地址映射方案
  7. 读书笔记-《大话数据结构》-算法设计的要求-正确性-文末有福利
  8. 小学教师使用计算机责任书,计算机教室管理员安全责任书
  9. mysql 查询删除重复数据,保留其中一条数据
  10. 英语魔法师之语法俱乐部 | 笔记1 | 序