GMM

news/2024/11/15 3:11:03/

GMM 模型

GMM由K个Gaussian分布线性叠加而成,先看看GMM的概率密度函数:

p(x)=k=1Kp(k)p(x|k)=k=1KπkN(x|μk,Σk)

该函数可以这么理解,假设我们有一个数据集,然后我们现在用GMM模型来描述这个数据集的分布。在已知数据集由component k 描述的情况下,数据集的概率密度函数为: p(x|k)p(x|k)

当然,总共有 K 个component,每个component 对生成数据集的贡献为 p(k)p(k) ,或者说数据集由component k生成的概率为 p(k)p(k),由 component k 生成数据集,其概率密度函数为 p(k)p(x|k)p(k)p(x|k) 。将所有的component加起来就得到了GMM的概率密度函数。有点绕口,大致懂就好。

如果我们要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 K个Gaussian Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数 pi(k) ,选中了 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布,转化为了已知的问题。

GMM 聚类

假设现在有一个大数据集,为什么要大数据集?待会会说。只要我们能用GMM算法来描述这个“客观存在”的数据集,那么GMM的K个component也就是对应的K个cluster了。根据数据来推算概率密度通常被称作 density estimation ,特别地,当我们在已知(或假定)了概率密度函数的形式,而要估计其中的参数的过程被称作“参数估计”。

每个component k 都是一个Gaussian分布,其均值设定为 μkμk ,方差设定为 ΣkΣk ,这个component的影响因子设定为 πkπk 。但是 我们一开始并不知道每个component k 的这几个参数的具体值,聚类误差函数中除了聚类后的label y之外,还有μkμkΣkΣkπkπk这3个我们不知道的隐含变量,这时问题就得用EM算法来迭代求解。

参数与似然函数

现在假设我们有 N 个数据点,并假设它们服从某个分布(记作 p(x)p(x) ),现在要确定里面的一些参数的值,例如,在 GMM 中,我们就需要确定 影响因子 π(k)π(k)、各类均值 μkμk 和 各类协方差 ΣkΣk 这些参数。

我们的想法是,找到这样一组参数,它所确定的概率分布生成这些给定的数据点的概率最大,而这个概率实际上就等于 ΠNi=1p(xi)Πi=1Np(xi),我们把这个乘积称作似然函数 (Likelihood Function)。通常单个点的概率都很小,许多很小的数字相乘起来在计算机里很容易造成浮点数下溢,因此我们通常会对其取对数,把乘积变成加和 Ni=1logp(xi)∑i=1Nlog⁡p(xi) ,具体函数如下:

i=1Nlog{k=1KπkN(xi|μk,Σk)}
∑i=1Nlog⁡{∑k=1KπkN(xi|μk,Σk)}

接下来我们只要将这个函数最大化(通常的做法是求导并令导数等于零,然后解方程),亦即找到这样一组参数值,它让似然函数取得最大值,我们就认为这是最合适的参数,这样就完成了参数估计的过程。

由于在对数函数里面又有加和,我们没法直接用求导解方程的办法直接求得最大值。为了解决这个问题,我们采取之前从 GMM 中随机选点的办法:分成两步,E步和M步,这就是用EM算法求解GMM的过程。其实这跟K-means的求解思想很像,或者说,K-means算法的求解中就是EM算法的精髓。

算法流程

1.估计数据由每个 Component 生成的概率(并不是每个 Component 被选中的概率):对于每个数据 来说,它由第 个 Component 生成的概率为:

γ(i,k)=πkN(xi|μk,Σk)Kj=1πjN(xi|μj,Σj)γ(i,k)=πkN(xi|μk,Σk)∑j=1KπjN(xi|μj,Σj)

其中 N(xi|μk,Σk)N(xi|μk,Σk) 就是后验概率

N(x|μ,Σ)=1(2π)D/21|Σ|1/2exp{12(xμ)TΣ1(xμ)}N(x|μ,Σ)=1(2π)D/21|Σ|1/2exp⁡{−12(x−μ)TΣ−1(x−μ)}

2.通过极大似然估计可以通过求到令参数=0得到参数 μkμkΣkΣk的值

μk=1Nki=1Nγ(i,k)xiμk=1Nk∑i=1Nγ(i,k)xi

Σ=1Nki=1Nγ(i,k)(xiμk)(xiμk)TΣ=1Nk∑i=1Nγ(i,k)(xi−μk)(xi−μk)T

其中,Nk=Ni=1γ(i,k)Nk=∑i=1Nγ(i,k) ,故 πkπk 可估计为 Nk/NNk/N

3.重复迭代前面两步,直到似然函数的值收敛为止。


算法流程图:


GMM和k-means的比较

相同点
都是迭代执行的算法,且迭代的策略也相同:算法开始执行时先对需要计算的参数赋初值,然后交替执行两个步骤,一个步骤是对数据的估计(k-means是估计每个点所属簇;GMM是计算隐含变量的期望;);第二步是用上一步算出的估计值重新计算参数值,更新目标参数(k-means是计算簇心位置;GMM是计算各个高斯分布的中心位置和协方差矩阵)
不同点
1)需要计算的参数不同:k-means是簇心位置;GMM是各个高斯分布的参数
2)计算目标参数的方法不同:k-means是计算当前簇中所有元素的位置的均值;GMM是基于概率的算法,是通过计算似然函数的最大值实现分布参数的求解的。
GMM输出的是数据点属于每个每类的概率,我们用最大似然方法去确定分类。就严谨性来说,用概率进行描述数据点的分类,GMM显然要比K-mean好很多。

关于GMM算法中奇异矩阵的问题

这个问题应该说是GMM算法的一个瑕疵,如果运行上面的代码可以发现在求协方差矩阵的逆矩阵的时候,有时候会报错,说协方差矩阵是奇异矩阵(singular),此时求解矩阵的行列式就会报错,关于这个问题,pluskid在 一篇博客
中已经说的很清楚。这里总结一下解决方法:

  1. 假设有N个D维的样本数据,如果协方差矩阵是奇异矩阵,那么要检查一下N是否足够大,D是否可以减少几维
  2. 最简单的解决方法之一,在协方差矩阵上加上一个对角线矩阵 λIλI,其中 λλ 要足够小 ,不过如果数据集太小,这样也只是减少发生协方差矩阵是奇异矩阵的概率而已。

摘自:https://blog.csdn.net/llp1992/article/details/47058109

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

相关文章

【ML】高斯混合模型(GMM)

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

GM-2

优势分析 当参考数列不止一个,被比较的因素也不止一个时,则需进行优势分析。 实现 数据:8个因素对3个目标变量的影响。 通过matlab编程: clc,clear load data.txt %把原始数据存放在纯文本文件 data.txt 中 data data; % d…

【模拟IC】二级运放设计的关键点——GBW与PM!

本章接下来的内容,将着重介绍如何得到要求的GBW与PM,同学们可以参照对比sansen第五、六章学习,但抛开课本,也完全可以理解本部分的内容。我们会将重点放在如何通过给定的指标——相位裕度以及GBW,得到合适的小信号参数…

GM2引擎脚本召唤宝宝说明

功能: 脚本召唤宝宝。 格式: RECALLMOB 怪物名称 宝宝等级(最高为 7) 叛变时间(分钟) 是否自动变色(0、1)固定颜色(1-7) 攻击力受自动变色颜色不同而不同 固定颜色攻击力受指定颜色不同而不同 注&…

leetcode688. 骑士在棋盘上的概率(java)

骑士在棋盘上的概率 leetcode688. 骑士在棋盘上的概率题目描述 解题思路代码演示动态规划专题 leetcode688. 骑士在棋盘上的概率 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/knight-probability-in-chessboard 题目描…

LVS--DR集群部署

LVS--DR集群 一、DR模式原理二、实验 一、DR模式原理 原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真…

游戏专用蓝牙耳机哪个牌子好?英雄联盟手游耳机推荐

为了通话方便人们发明了传统蓝牙耳机,解决了从有线到无线的距离,但是糟糕的音质问题一直令人不太满意,苹果AirPods的出现让人们体验到了真无线蓝牙耳机的便捷,随之国内耳机厂商奋起直奔,到现今真无线蓝牙耳机已经是百花…

【2018十大VR眼镜排行榜】VR眼镜有哪些品牌。哪个牌子的VR眼镜比较好,性价比高,适合玩VR游戏的

科技的发展,高科技产品层出不穷,VR眼镜的出现使人们足不出户也能享受到高品质的观影感受。VR(Virtual Reality)即虚拟现实,简称VR.虚拟现实头戴显示器设备,简称VR头显VR眼镜.现在,VR眼镜已不是什么稀奇的东…