徐亦达 概率模型学习 : gmm

article/2025/9/22 14:03:21

单高斯分布 MLE
在这里插入图片描述
posterior 正比例于 likelihood * prior
p ( θ ∣ x ) ∝ p ( x ∣ θ ) ∗ p ( θ ) p(\theta | x) \propto p(x|\theta) * p(\theta) p(θx)p(xθ)p(θ)
参数 θ 的后验分布 ∝ 参数 θ 表示的 x 分布上已知样本有多大概率 ∗ 参数 θ 的先验分布 参数\theta的后验分布 \propto 参数\theta表示的x分布上已知样本有多大概率 * 参数\theta的先验分布 参数θ的后验分布参数θ表示的x分布上已知样本有多大概率参数θ的先验分布
参数的后验 ∝ 样本的 l i k e l i h o o d ∗ 参数的先验 参数的后验 \propto 样本的likelihood * 参数的先验 参数的后验样本的likelihood参数的先验
MLE : max log_likelihood estimator
MAP: max a posterior

混合高斯分布(多个高斯分布混合在一起) MLE
在这里插入图片描述

单高斯混合分布, 只需要令: ∂ L ∂ u = 0 \frac{\partial{L}}{\partial{u}}=0 uL=0 ∂ L ∂ Σ = 0 \frac{\partial{L}}{\partial{\Sigma}}=0 ΣL=0 ; 即可一步到位的精确的求出 u 和 Σ u和\Sigma uΣ的值

混合高斯分布,由于L中有log(多个式子求和), 而log(多个式子求和)求出导数是可以的, 但 要解 ∂ L ∂ u = 0 \frac{\partial{L}}{\partial{u}}=0 uL=0 ∂ L ∂ Σ = 0 \frac{\partial{L}}{\partial{\Sigma}}=0 ΣL=0 比较难, 所以 没法一步到位精确求解,只能迭代求解 。 此迭代求解方法 即 EM算法

即:
解方程 ∂ l o g ( 多个式子的乘积 ) ∂ 其中一个变量 \frac{\partial{log(多个式子的乘积)}}{\partial{其中一个变量}} 其中一个变量log(多个式子的乘积) = 0 较难
解方程 ∂ l o g ( 多个式子的和 ) ∂ 其中一个变量 \frac{\partial{log(多个式子的和)}}{\partial{其中一个变量}} 其中一个变量log(多个式子的和) = 0 较容易
注意:两者的导数都可以求得出来

EM算法(混合高斯分布)
在这里插入图片描述

中心点或均值u、形状或协方差矩阵 Σ \Sigma Σ
在这里插入图片描述

em算法迭代过程演示
在这里插入图片描述
e m 算法参数 Θ 初始化为 Θ ( 1 ) em算法参数\Theta初始化为\Theta^{(1)} em算法参数Θ初始化为Θ(1)
e m 算法第 1 次迭代结果 Θ ( 2 ) em算法第1次迭代结果\Theta^{(2)} em算法第1次迭代结果Θ(2)
e m 算法第 2 次迭代结果 Θ ( 3 ) em算法第2次迭代结果\Theta^{(3)} em算法第2次迭代结果Θ(3)
e m 算法第 f 次迭代结果 ( e m 算法收敛时的结果 ) Θ ( f ) em算法第f次迭代结果(em算法收敛时的结果) \Theta^{(f)} em算法第f次迭代结果(em算法收敛时的结果)Θ(f)

em迭代描述
在这里插入图片描述
em算法迭代过程描述:
Θ ( g + 1 ) = Θ ( g ) \Theta^{(g+1)}=\Theta^{(g)} Θ(g+1)=Θ(g)
Θ ( g + 1 ) = a r g m a x Θ ∫ z l o g p ( X , z ∣ Θ ) p ( z ∣ X , Θ ( g ) ) d z \Theta^{(g+1)}={argmax}_{\Theta}\int_{z} {log p(X,z|\Theta) p(z|X,\Theta^{(g)})} dz Θ(g+1)=argmaxΘzlogp(X,z∣Θ)p(zX,Θ(g))dz (这里看完后 弄清楚了 回头要明确一下)

em算法引入的隐变量z应该保持边缘分布不变:
在这里插入图片描述

这里的 z i z_i zi 就是前面"EM算法(混合高斯分布)" 中的 α l \alpha_l αl
上图 p ( x i ) p(x_i) p(xi) 就是 p ( x i ∣ Θ ) p(x_i|\Theta) p(xi∣Θ)

em算法中 log_likelihood l o g p ( X ∣ Θ ) log p(X|\Theta) logp(X∣Θ) 逐步增加 推导 1
在这里插入图片描述
如果 对于任意 Θ \Theta Θ H ( Θ ( g ) , Θ ( g ) ) ≥ H ( Θ , Θ ( g ) ) H(\Theta^{(g)}, \Theta^{(g)} ) \ge H(\Theta, \Theta^{(g)} ) H(Θ(g),Θ(g))H(Θ,Θ(g))
H ( Θ ( g ) , Θ ( g ) ) ≥ H ( Θ ( g + 1 ) , Θ ( g ) ) H(\Theta^{(g)}, \Theta^{(g)} ) \ge H(\Theta^{(g+1)}, \Theta^{(g)} ) H(Θ(g),Θ(g))H(Θ(g+1),Θ(g))

em算法中 log_likelihood l o g p ( X ∣ Θ ) log p(X|\Theta) logp(X∣Θ) 逐步增加 推导 2
在这里插入图片描述
Jensen’s inequality (琴生不等式)

sklearn 手写数字数据集 gmm 例子 (图片的一个像素点被当成一个随机变量)
在这里插入图片描述

"""sklearn 手写数字数据集 gmm 例子 (图片的一个像素点被当成一个随机变量)
来自 https://jakevdp.github.io/PythonDataScienceHandbook/05.12-gaussian-mixtures.html
或 https://github.com/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/05.12-Gaussian-Mixtures.ipynb
"""import numpy as np
from sklearn.datasets import load_digits
from matplotlib import pyplot as plt
def plot_digits(data):fig, ax = plt.subplots(10, 10, figsize=(8, 8),subplot_kw=dict(xticks=[], yticks=[]))fig.subplots_adjust(hspace=0.05, wspace=0.05)for i, axi in enumerate(ax.flat):im = axi.imshow(data[i].reshape(8, 8), cmap='binary')im.set_clim(0, 16)plt.show()digits = load_digits()
print(digits.data.shape)#(1797, 64)# plot_digits(digits.data)from sklearn.decomposition import PCA
pca = PCA(n_components=0.99, whiten=True)
data = pca.fit_transform(digits.data)
print(data.shape)#(1797, 41)from sklearn.mixture import GaussianMixture
"""
n_components = np.arange(50, 210, 10)
models = [GaussianMixture(n_components=n, covariance_type='full', random_state=0) for n in n_components]
aics = [model.fit(data).aic(data) for model in models]
plt.plot(n_components, aics); plt.show()
"""gmm = GaussianMixture(n_components=150, covariance_type='full', random_state=0)
gmm.fit(data)
print(gmm.converged_)data_new,label_new = gmm.sample(n_samples=100)
print(data_new.shape)digits_new = pca.inverse_transform(data_new)
plot_digits(digits_new)

http://chatgpt.dhexx.cn/article/NMpwG27D.shtml

相关文章

首发:徐亦达教授团队最新发表的两篇机器学习论文

徐亦达团队在 Asian Conference on Machine Learning 的发表了两篇机器学习论文,本人得到徐老师授权在本站发布论文。 论文 1:Realistic Image Generation using Region-phrase Attention论文 2:Efficient Diversified Mini-Batch Selection …

隐马尔科夫模型(HMM)算法的理解与超详细推导

今天看了徐亦达教授的HMM讲解,感觉有所收获,并将隐马尔科夫模型算法的推导整理了一下,帮助大家一起理解这个算法。首先我们通过一个股票的案例来引入这个算法,我们来看看这个股票行情和涨跌观测值的一个状态图: 由图中…

python高级在线题目训练-第一套

单选 1、运行下列代码后,a的值为( C )。 myList "Hello World" a myList[3:8] A. llo W B. llo Wo C. lo Wo D. o Wor 2、下列代码的运行结果为( C )。 A.26,73,47,90, B.26,73,47,90 C.26,73,47,18, D.26,73,47,18 3、以下哪个选项可以创建一个范围…

DSP 投放的基本流程和算法

DSP 投放的基本流程和算法 DSP 在进行投放的时候通常按照如下流程: 步骤1:识别用户: DSP 系统通常会在广告展示的时候,同时放置一个检测点,这样当互联网用户第一次访问 广告主的网站时,就会种下一个cookie,这样DSP就可…

Go框架,库和软件的精选列表

2018最新精选的Go框架,库和软件的精选列表 一 https://awesome-go.com/ 2018最新精选的Go框架,库和软件的精选列表 二 https://awesome-go.com/ 2018最新精选的Go框架,库和软件的精选列表 三 https://awesome-go.com/ 2018最新精选的Go框架…

[Pyhon疫情大数据分析] 四.微博话题抓取及新冠肺炎疫情文本挖掘和情感分析

思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫、可视化分析、GIS地图显示、情感分析、舆情分析、主题挖掘、威胁情报溯源、知识图谱、预测预警及AI和NLP应用等。希望该系列线上远程教学对您有所帮助,也希望早点战胜病毒,武汉…

大数据的常见业务问题和业务场景

概述 搜索引擎概述 桥梁——引导用户找到所求满足用户需求的过程连接人与内容、人与服务 爬虫:数据收集中心,互联网世界的缩影索引系统:分析整理爬虫收集到的资源,为检索系统提供数据检索系统:从预处理好的资源中挑选…

常用数据分析指标和术语

按照以下三类进行汇总。 1、互联网常用名词解释 2、统计学名词解释 3、数据分析名词解释 一、互联网常用名词解释 1、PV(Page View)页面浏览量 指某段时间内访问网站或某一页面的用户的总数量,通常用来衡量一篇文章或一次活动带来的流量…

GoogLeNet论文阅读,代码实现(Inception系列)

文章目录 GoogLeNet(Inception v1)个人理解总结本篇论文主相对于AlexNet和VGG有三处改进(不同)1、在inception块中引入了11卷积2、将第一层全连接层替换为global-averge-pooling3、利用inception近似稀疏数据结构4、引入辅助分类层 代码(GoogeLeNet结构实现&#xf…

“Python小屋”1300篇历史文章分类速查表

总体说明: 各分类中的文章是按发布时间逆序排列的,动态更新。公众号所有代码均可作为教学案例,转载请注明出处,请勿用作商业用途。 快速查找历史文章的方法:1)单击本文右上角的按钮“...”,然后…

100个数据分析常用指标和术语

大家好,我是辰哥~ 有个朋友是金融行业产品经理,最近在对已有的站内用户做分层与标签分类,需要对用户进行聚类分析。一般从事数据分析行业的朋友对这类词并不陌生,但是像市场运营人员就会把这类些名词概念搞混,导致结果…

TF使用例子-情感分类

北京站 | NVIDIA DLI深度学习培训 2018年1月26日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文 正文共10052个字,4张图,预计阅读时间26分钟。 这次改写一下,做一个简单的分类模型和探讨一下hidden layer在聚类的应用场景下会有什…

计算机视觉(五)

Bag of features,简称Bof,中文翻译为“词袋”,是一种用于图像或视频检索的技术。而检索就要进行比对。两幅不同的图像如何比对,比对什么,这就需要提炼出每幅图像中精练的东西出来进行比较。 一、Bag of features算法基…

Eastmount博客导读:专栏系统分类和博客归纳总结

为了更好地帮助博友学习作者的博客,方便作者自己归纳总结专栏,本文详细介绍了作者八年来,在CSDN写的各种专栏,各种系列文章。八年来,作者经历了从本科到硕士,到贵州教书成家,再到现在的博士。八…

Python编程实现用KNN算法对红酒分类功能

一、任务要求 导入红酒数据集(load_wine),编写Python代码,完成以下任务: 1、实现计算平均酒精含量的功能; 2、实现对数据的标准化; 3、使用kNN算法实现红酒分类功能 二、代码实现 from sklearn…

文本挖掘(四万字总结篇:爬虫 - 文本预处理 - 高频词统计 - 聚类 - 情感分析)

1 爬虫 1.1 爬虫原理 这部分内容可以跳过,掌握与否对后面内容的阅读影响并不大,但有兴趣的话可以看看呐~ 实现一个爬虫,一般需要经过两个步骤:处理请求和解析源码/数据。 处理请求方面,我们可以使用Python程序自动发送…

python卷积神经网络代码,python卷积神经网络分类

怎样用python构建一个卷积神经网络模型 上周末利用python简单实现了一个卷积神经网络,只包含一个卷积层和一个maxpooling层,pooling层后面的多层神经网络采用了softmax形式的输出。 实验输入仍然采用MNIST图像使用10个featuremap时,卷积和p…

用python实现基于自媒体数据的人群聚类分析

🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习…

二叉树三种非递归遍历以及代码实现

二叉树三种非递归遍历 1.二叉树前序非递归遍历实现,(采用栈) 思路:(用一个栈) 1.首先用cur标记树的根(root),当cur非空的时候; 2.就直接打印根,并且将cur(也就是root)入栈; 3.接着遍历根的左子…

c++练习(5):二叉树非递归遍历

二叉树遍历 二叉树有三种遍历方法:前序(跟左右)跟节点在前面、中序(左跟右)跟节点在中间、后续(左右跟)跟节点在后面 前序(跟左右):上图的二叉树,第一次跟左右对应ABC…