11 GMM——高斯混合模型

news/2024/11/24 9:09:34/

文章目录

  • 11 GMM——高斯混合模型
    • 11.1 模型介绍
    • 11.2 通过MLE估计参数
    • 11.3 EM求解

11 GMM——高斯混合模型

11.1 模型介绍

从几何角度来说:

  • 高斯混合模型表示:加权平均——由多个高斯分布混合叠加而成,如图

  • 公式可以表达为:
    p ( x ) = ∑ i = 1 K α i ⋅ N ( x ∣ μ i , Σ i ) , ∑ i = 1 K α i = 1 p(x) = \sum_{i=1}^K \alpha_i \cdot N(x|\mu_i, \Sigma_i), \quad \sum_{i=1}^K \alpha_i = 1 p(x)=i=1KαiN(xμi,Σi),i=1Kαi=1

若从混合模型的角度来说:

  • 数据可以表示为:
    { x : X = { x i } i = 1 N z : Z = { z i } i = 1 N { z ∈ { C 1 , C 2 , … , C K } P ( z ) ∈ { p 1 , p 2 , … , p K } \begin{cases} x: X = {\lbrace x_i \rbrace}_{i=1}^{N} \\ z: Z = {\lbrace z_i \rbrace}_{i=1}^{N} \\ \end{cases} \qquad \begin{cases} z \in {\lbrace C_1, C_2, \dots, C_K \rbrace} \\ P(z) \in {\lbrace p_1, p_2, \dots, p_K \rbrace} \\ \end{cases} {x:X={xi}i=1Nz:Z={zi}i=1N{z{C1,C2,,CK}P(z){p1,p2,,pK}

  • 其中 x x x表示ovserve variable, z z z表示latent variable

  • 这里的隐变量 z z z表示样本X分别属于哪一个高斯

从概率图的角度看,GMM是概率生成模型,可以从隐变量的分布中生成N个数据,如下图:

11.2 通过MLE估计参数

首先简单的导出一下GMM的公式(核心思想就是引入 z z z):
P ( x ) = ∑ i = 1 K P ( x , z = C i ) = ∑ i = 1 K P ( x , z = C i ) = ∑ i = 1 K P ( z = C i ) P ( x ∣ z = C i ) = ∑ i = 1 K p i ⋅ N ( x ∣ μ i , Σ i ) P(x) = \sum_{i=1}^K P(x, z = C_i) = \sum_{i=1}^K P(x, z = C_i) = \sum_{i=1}^K P(z=C_i)P(x|z = C_i )= \sum_{i=1}^K p_i \cdot N(x|\mu_i, \Sigma_i) P(x)=i=1KP(x,z=Ci)=i=1KP(x,z=Ci)=i=1KP(z=Ci)P(xz=Ci)=i=1KpiN(xμi,Σi)
假设我们直接用MLE去进行参数求解,有:
θ ^ M L E = a r g max ⁡ θ log ⁡ P ( X ) = a r g max ⁡ θ ∑ i = 1 N log ⁡ P ( x i ) = a r g max ⁡ θ ∑ i = 1 N log ⁡ ∑ j = 1 K p j ⋅ N ( x i ∣ μ j , Σ j ) \begin{align} {\hat \theta}_{MLE} & = arg\max_{\theta} \log P(X) \\ & = arg\max_\theta \sum_{i=1}^N \log P(x_i) \\ & = arg\max_\theta \sum_{i=1}^N \log \sum_{j=1}^K p_j \cdot N(x_i|\mu_j, \Sigma_j) \end{align} θ^MLE=argθmaxlogP(X)=argθmaxi=1NlogP(xi)=argθmaxi=1Nlogj=1KpjN(xiμj,Σj)
我们发现公式中的对数还嵌套了累加运算,导致无法通过MLE求的解析解。

11.3 EM求解

由于无法求的解析解,我们只能通过近似方法求的近似解,通过GMM的性质,我们可以代入EM公式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9UOSavbJ-1686302925549)(assets/11 GMM——高斯混合模型/image-20230606192743051.png)]


http://www.ppmy.cn/news/297582.html

相关文章

详解基于罗德里格斯(Rodrigues)公式由旋转向量到旋转矩阵的 Python 实现

文章目录 旋转向量 rotation vector旋转矩阵 rotation matrix罗德里格斯公式 Rodrigues formula基于 Python 和 NumPy 实现 Rodrigues 公式 旋转向量 rotation vector 任何一个旋转都可以通过一个 旋转轴 加一个 旋转角 进行描述, 即围绕 旋转轴 旋转一个 旋转角. 此时可以通过…

模拟一个简易计算器程序(c语言)

提示: 若输入: 5,,4, 则输出:549 输入: 5,-,4, 则输出:5-41 输入: 5,*,4, 则输出:5*420 输入&…

C51简易计算器微机课设

目前实现功能&#xff1a; 1.末尾数置0 2.加减乘的五位数计算 3.计算结果溢出时&#xff0c;报错“ERROR” 4.有删除键 #include <REGX52.H> int digit[]{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~9数字数码管的段选 int zero[]{0xff,0xc0};//0xff即…

台式计算机功率一般多少瓦,台式电脑功率一般多大 台式机功率有多少【详细介绍】...

摘要&#xff1a;台式电脑现在在很多家庭都备有一台的&#xff0c;而很多人在使用台式电脑的时候&#xff0c;我想大家都很关心台式电脑功率多少的问题&#xff0c;那么台式电脑功率一般有多大呢?本文一起来看看。 【台式电脑功率】台式电脑功率一般多大 台式机功率有多大 台式…

【Flutter】如何更改 Flutter 应用的启动图标

文章目录 一、前言二、什么是启动图标三、为什么我们需要更改启动图标四、如何更改启动图标五、注意事项六、总结 一、前言 欢迎来到 Flutter 的世界&#xff01;在这篇文章中&#xff0c;我们将探索 Flutter 的一些基础知识。但是&#xff0c;你知道吗&#xff1f;这只是冰山…

C++经典程序训练3---模拟计算器

题目描述 简单计算器模拟&#xff1a;输入两个整数和一个运算符&#xff0c;输出运算结果&#xff1b; 输入 第一行输入两个整数&#xff1b; 第二行输入一个运算符&#xff08;、-、*、/); 输出 输出对两个数运算后的结果&#xff1b; 样例输入 30 50 * 样例输出 1500…

C语言初学者--制作简易计算器(+-*/四种运算)

运行结果 #include<stdio.h> int main() { float a, b; char c; printf("请输入两个数:"); scanf_s("%f%f", &a, &b); printf("请输入一个符号:"); getchar(); c getchar(); if (c ) printf(&q…

C语言 模拟计算器实现

#include <stdio.h> #include <windows.h> void main(){float x,y;char op;while(1){printf("\n");printf("请输入x运算符y:\n");scanf("%f%c%f",&x,&op,&y);switch(op){case :printf("%g%g%g",x,y,xy);break…