理解高斯混合模型中期望最大化的M-Step

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 理解高斯混合模型中期望最大化的M-Step

在本篇文章中将解释高斯混合模型(GMM)的关键部分背后的数学原理,即期望最大化(EM),以及如何将这些概念转换为Python。这个故事的重点是EM或M-Step。

注意:这不是有关端到端GMM算法的全面说明。要进行更深入的研究,请参阅我们以前翻译的文章。

期望最大化

GMM中有一系列步骤,通常称为“期望最大化”,简称“ EM”。要解释如何理解EM数学,请首先考虑您可能要处理的模型。

640.png

样本由图形上的点表示。这些点形成一些不同的斑点。每个斑点都有一个中心,每个点都与每个斑点的中心相距一定距离。给定GMM模型数据,目标通常是根据最接近的中心按其样本点标记其他样本。有些点距离一个或多个中心几乎相等,因此,我们希望基于某种概率来标记点。

EM用到的符号

要学习如何学习机器学习算法,您一生中需要一些希腊语。因为算法中符号基本上都是以希腊文表示的。尽管可能会想掩盖基础知识,但是对单个希腊字母的简单掌握可以帮助您理解算法中的重要概念。

算法可能会令人生畏且令人困惑。例如,乍看之下,高度集中的希腊符号有时足以使人窒息。但是不要浪费时间,我们在这里只要考虑现在要使用的符号即可

640.png

除此以外,我们也有一些英文字母在EM中代表GMM的意思。通常,英文字母围绕着希腊字母,就像小领航鱼围着大鲨鱼游动。就像小鱼一样,英文字母有一个重要的作用,它为如何解释算法提供了指导。

640.png

M-Step的数学解释

现在我们已经隔离了方程的每个组成部分,让我们通过检查M-Step,将它们组合成一些常用的数学短语,这些短语对于用EM语言进行对话很重要。

簇,高斯,字母J或K,有时还包括C:通常都是同一件事-如果我们有3个簇,那么您可能会听到“每个高斯”,“每个j”,“每个高斯j”或 “对于每个K组件”-这些都是谈论相同3个簇的不同方法。在数据方面,我们可以绘制(x,y)样本/点的数组,并查看它们如何形成簇。

#a2Darrayofsamples [featuresandtargets]
#thelastcolumn, targets [0,1,2], representthreeclusters#thefirsttwocolumnsarethepointsthatmakeupourfeatures#eachfeatureisjustasetofpoints (x,y) in2Dspace#eachrowisasampleandclusterlabel[[-7.72642091-8.394956822. ]
  [ 5.453396050.742305371. ]
  [-2.978672019.556846170. ]
  [ 6.042673150.571318621. ] ...]

软分类(Soft Assignments),概率,响应度(Responsibility):聚类的一个主要思想是我们希望为每个样本找到一个数字,以告诉我们样本属于哪个聚类。在GMM中,对于我们评估的每个样本,我们可能会返回代表“每个高斯j的响应度”,每个“软分类”或每个“概率”的值。

这些阶段通常都是关于同一件事的,但响应度与概率之间存在关键区别。

#anarrayofassignmentdataaboutthe2Darrayofsamples#eachcolumnrepresentsacluster#eachrowrepresentsdataabouteachsample#ineachrow, wehavetheprobabilitythatasamplebelongstooneofthreeclusters-itaddsupto1 (asitshould)
#butthesumofeachcolumnisabignumbernumber (not1)
print(assignments)
#sampleoutput: anarrayofassignmentdata[[1.00000000e+0002.82033618e-1181.13001412e-070]
  [9.21706438e-0741.00000000e+0003.98146031e-029]
  [4.40884339e-0995.66602768e-0531.00000000e+000]...]
print(np.sum(assignments[0])
#sampleoutput: thesumacrosseachrowis11print(np.sum(assignments[:, 0])
#sampleoutput: thesumineachcolisabignumberthatvaries#LittleGamma: thereallysmallnumbersineachcolumn#BigGamma: thesumofeachcolumn, or33.0inthissample33.0

大写伽玛,小写伽玛,J,N,x和i:EM中的核心任务是为每个群集优化三组参数,或者“对于每个j,优化w(𝓌),mew(𝜇 )和方差(𝜎)。” 换句话说,群集的权重(𝓌),群集的中心点(𝜇)和群集的方差(𝜎)是多少?

对于权重(𝓌),我们将“大写伽玛”除以特征总数。从更早的时候开始,我们就知道每个聚类j的大写伽玛只是将给定聚类的每个样本的分配值相加的结果(该数字之和不等于1)。如下图所示640.png


对于EM期间高斯的权重参数,请考虑一些简单的事情,例如添加数字列表,然后将其除以样本总数。

对于mew (𝜇),不是像我们之前那样将所有小写伽玛加到一个小写伽玛中,而是对每个聚类j和每个样本i将小写伽玛与特征x进行矩阵乘法。如下图所示

640.png

请记住,mew只是每个簇的中心点-如果我们有3个簇,而我们的样本都是x,y坐标,那么mew将是3个x,y坐标的数组,每个簇一个。

#forfigure4-mew (mu)
#samearrayofassignmentdataasbefore#eachcolumnisaclusteroflittlegammasprint(assignments)
[[1.00000000e+0002.82033618e-1181.13001412e-070]
  [9.21706438e-0741.00000000e+0003.98146031e-029]
  [4.40884339e-0995.66602768e-0531.00000000e+000]...]
#thelittlegammasofcluster0isjustcolumn0[[1.00000000e+000 ]
  [9.21706438e-074 ]
  [4.40884339e-099 ]...]
#samearrayofsampledataasbefore#thefirsttwocolumnsarethex,ycoordinates#thelastcolumnistheclusterlabelofthesampleprint(features)
[[-7.72642091-8.394956822. ]
  [ 5.453396050.742305371. ]
  [-2.978672019.556846170. ]
  [ 6.042673150.571318621. ] ...]
#forfeatures, wejustneeditspoints[[-7.72642091-8.39495682 ]
  [ 5.453396050.74230537 ]
  [-2.978672019.55684617 ]
  [ 6.042673150.57131862 ] ...]
#ifusingnumpy (np) formatrixmultiplication#forcluster0 ...
big_gamma=np.sum(assignments[:, 0]
mew=np.matmul(assignments[:, 0], features) /big_gamma#returnsanarrayofmew[[-2.667803928.93576069]
  [-6.95170962-6.67621669]
  [ 4.499510011.93892013]]

对于方差(𝜎),请考虑到现在,我们有了点和中心点-随着方差的出现,我们基本上正在评估每个样本的点(每个i的x)到每个群集的中心点(每个i的mew)的距离。用EM语言来说,有些人可能会说“ x_i减去mew_i乘以Big Gamma j。”

640.png

#forfigure5-variance#asamplingofvarianceforcluster0ofnclusters#givenarraysforfeaturesandassignments...
x_i=featuresbig_gamma=np.sum(assignments[:, 0]
mew=np.matmul(assignments[:, 0], features) /big_gammanumerator=np.matmul(assignments[:, 0], (x_i-mew) **2)
variance=numerator/big_gamma#returnsanarrayofvariance[[0.64223451.06006186]
  [0.652547460.9274831 ]
  [0.950314610.92519751]]


以上步骤都是关于EM中的M-Step或最大化-所有关于权值、mew和方差的都是关于优化的;但是,初始赋值数组呢?我们如何得到每个样本的概率数组这是EM中的E-Step,也就是期望。

在E-Step中,我们尝试用贝叶斯规则猜出每个点的分配-这会产生一组值,这些值指示每个点对高斯的响应度或概率。最初会与猜测值(后验值)相差很远,但是在通过E-Step和M-Step循环之后,这些猜测会变得更好,更接近客观的地面真理。

GMM算法重复M-Step 和 E-Step直到收敛。例如,收敛性可能是迭代的最大次数,或者当每轮猜测之间的差异变得非常小时。希望最终的结果是,数据中的每个样本都有一个软分配的标签。

总结

在这篇文章中,我介绍了M-Step的高斯混合模型算法的期望最大化阶段的导航部分的理解。虽然从表面上看,数学似乎太复杂而无法处理,但我们可以通过理解其各个部分来处理其复杂性。例如,一些关键的理解,如发音的希腊符号和应用它们的操作与NumPy是重要的,以掌握总体概念。

目录
相关文章
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
2468 0
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
|
4月前
|
数据可视化
使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
|
4月前
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
|
4月前
|
机器学习/深度学习 运维 算法
高斯混合模型:GMM和期望最大化算法的理论和代码实现
高斯混合模型(gmm)是将数据表示为高斯(正态)分布的混合的统计模型。这些模型可用于识别数据集中的组,并捕获数据分布的复杂、多模态结构。
330 0
|
机器学习/深度学习 数据可视化 数据挖掘
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(2)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
255 0
|
机器学习/深度学习 数据可视化 计算机视觉
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(1)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
119 0
|
机器学习/深度学习
采用附加动量法和自适应学习率设计来改进bp神经网络的迭代速度,如果不迭代学习率会提高精度;迭代学习率(自适应)会加快收敛,但精度降低(Matlab代码实现)
采用附加动量法和自适应学习率设计来改进bp神经网络的迭代速度,如果不迭代学习率会提高精度;迭代学习率(自适应)会加快收敛,但精度降低(Matlab代码实现)
111 0
|
机器学习/深度学习 算法
【数字预失真(DPD)】静态DPD设计扩展为自适应设计及评估两种自适应DPD设计:基于(最小均方)LMS算法、使用递归预测误差方法(RPEM)算法研究(Matlab&Simulink实现)
【数字预失真(DPD)】静态DPD设计扩展为自适应设计及评估两种自适应DPD设计:基于(最小均方)LMS算法、使用递归预测误差方法(RPEM)算法研究(Matlab&Simulink实现)
156 0
|
算法
基于PSO的最优路径优化仿真,带GUI界面,可以设置粒子数目,迭代次数,优化目标,输出最优解和最优路径
基于PSO的最优路径优化仿真,带GUI界面,可以设置粒子数目,迭代次数,优化目标,输出最优解和最优路径
146 0
基于PSO的最优路径优化仿真,带GUI界面,可以设置粒子数目,迭代次数,优化目标,输出最优解和最优路径
|
算法 计算机视觉
Two-Stage目标检测困难负样本如何利用?大小目标如何同时优化?nRPN给你答案!
Two-Stage目标检测困难负样本如何利用?大小目标如何同时优化?nRPN给你答案!
133 0