赞
踩
小屌丝:鱼哥,给俺讲一讲什么是高斯啊
小鱼:高斯?
小屌丝:不是这个高斯
小鱼:不是这个高斯,那你等下,应该是这个。
小屌丝:… 也不是这个啊~
小鱼:这个还不是,那你再等下
小屌丝:好的好的。
小鱼:这次应该是对的。
小屌丝:… 啊啊啊~~ 不对啊, 鱼哥,你…
小鱼:咋了, 都三个形态了,还不对,那还有3个形态,你稍等。
小屌丝: 我说的不是高斯奥特曼,
小鱼:不是高斯奥特曼,那是赛罗奥特曼?欧布奥特曼?
小屌丝:… 也不是的啊
小鱼:难道你是说?
小屌丝:嗯嗯嗯。
小鱼: 不会真的是 贝利亚奥特曼…
小屌丝: 啊啊啊~ ~ 鱼哥, 我说的不是奥特曼,是高斯混合模型。
小鱼:哦哦哦~ ~ 谁让你不把名称说全了, 这整的…
小屌丝:鱼哥,赶紧的,讲一讲 高斯混合模型。
小鱼:这… 等我把这集奥特曼看完。
小屌丝:完美世界不香吗?印神王座不香吗? 还
小鱼:香… 这个真香…
小屌丝:那赶紧讲完,咱边泡澡边看动画片。
小鱼:这个更香。
高斯混合模型是一种概率模型,它假设所有的数据点都是由有限个高斯分布(也称为正态分布)生成的。
每个高斯分布代表数据中的一个子集或“簇”,而整个数据集则是这些高斯分布的混合。
高斯混合模型的核心思想是,通过估计每个高斯分布的参数(均值、协方差和权重),以及它们在混合模型中的比例,来拟合数据的概率分布。
这通常通过期望最大化(Expectation-Maximization, EM)算法来实现,该算法是一种迭代方法,用于在概率模型中寻找参数的最大似然估计。
实现高斯混合模型通常包括以下步骤:
高斯混合模型的概率密度函数可以表示为:
[ p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) ] [ p(x) = \sum_{k=1}^{K} \pi_k \mathcal{N}(x|\mu_k, \Sigma_k) ] [p(x)=k=1∑KπkN(x∣μk,Σk)]
其中,(K) 是高斯分布的个数, ( π k ) (\pi_k) (πk) 是第 ( k ) (k) (k) 个高斯分布的权重(满足 ( ∑ k = 1 K π k = 1 ) ) (\sum_{k=1}^{K} \pi_k = 1)) (∑k=1Kπk=1)), ( μ k ) (\mu_k) (μk) 和 ( Σ k ) (\Sigma_k) (Σk) 分别是第 ( k ) (k) (k) 个高斯分布的均值和协方差, ( N ( x ∣ μ k , Σ k ) ) (\mathcal{N}(x|\mu_k, \Sigma_k)) (N(x∣μk,Σk)) 是高斯分布的概率密度函数。
在EM算法的E步骤中,需要计算每个数据点属于每个高斯分布的后验概率:
[ γ ( z n k ) = π k N ( x n ∣ μ k , Σ k ) ∑ j = 1 K π j N ( x n ∣ μ j , Σ j ) ] [ \gamma(z_{nk}) = \frac{\pi_k \mathcal{N}(x_n|\mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_n|\mu_j, \Sigma_j)} ] [γ(znk)=∑j=1KπjN(xn∣μj,Σj)πkN(xn∣μk,Σk)]
其中, ( z n k ) (z_{nk}) (znk) 是一个二元变量,表示数据点 ( x n ) (x_n) (xn)是否属于第 ( k ) (k) (k) 个高斯分布。
在M步骤中,根据后验概率重新估计参数:
[ π k = N k N , μ k = 1 N k ∑ n = 1 N γ ( z n k ) x n , Σ k = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k ) T ( x n − μ k ) ] [ \pi_k = \frac{N_k}{N}, \quad \mu_k = \frac{1}{N_k} \sum_{n=1}^{N} \gamma(z_{nk})x_n, \quad \Sigma_k = \frac{1}{N_k} \sum_{n=1}^{N} \gamma(z_{nk})(x_n - \mu_k)^T(x_n - \mu_k) ] [πk=NNk,μk=Nk1n=1∑Nγ(znk)xn,Σk=Nk1n=1∑Nγ(znk)(xn−μk)T(xn−μk)]
其中, ( N k ) (N_k) (Nk)是属于第 ( k ) (k) (k) 个高斯分布的数据点的数量。
# -*- coding:utf-8 -*- # @Time : 2024-03-10 # @Author : Carl_DJ ''' 实现功能: scikit-learn库实现高斯混合模型 ''' from sklearn.mixture import GaussianMixture import numpy as np # 生成一些随机数据 np.random.seed(0) n_samples = 300 X, y = make_blobs(n_samples=n_samples, centers=4, cluster_std=0.60, random_state=0) # 使用高斯混合模型进行拟合 gmm = GaussianMixture(n_components=4).fit(X) # 预测数据点的标签 labels = gmm.predict(X) # 显示结果 plt.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis') plt.show()
解析:
生成随机数据:
高斯混合模型拟合:
预测数据点标签:
可视化结果:
看到这里,今天的内容就分享到告一段落了。
我们在回顾一下告诉混合模型:
高斯混合模型是一种强大的无监督学习算法,它能够发现数据中的复杂结构,并将数据划分为多个高斯分布的混合。通过EM算法迭代地估计每个高斯分布的参数,GMM能够有效地拟合数据的概率分布,并用于聚类、密度估计等任务。在实际应用中,GMM可以根据具体需求进行扩展
我是小鱼:
关注小鱼,学习机器学习领域的知识。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。