【机器学习】无监督学习算法之:高斯混合模型

news2025/1/20 6:03:01

高斯混合模型

  • 1、引言
  • 2、高斯混合模型
    • 2.1 定义
    • 2.2 原理
    • 2.3 实现方式
    • 2.4 算法公式
      • 2.4.1 概率密度函数
      • 2.4.2 EM算法之E步骤
      • 2.4.2 EM算法之M步骤
    • 2.5 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥,给俺讲一讲什么是高斯啊
小鱼:高斯?
在这里插入图片描述

小屌丝:不是这个高斯
小鱼:不是这个高斯,那你等下,应该是这个。
在这里插入图片描述

小屌丝:… 也不是这个啊~
小鱼:这个还不是,那你再等下
小屌丝:好的好的。
小鱼:这次应该是对的。
在这里插入图片描述

小屌丝:… 啊啊啊~~ 不对啊, 鱼哥,你…
小鱼:咋了, 都三个形态了,还不对,那还有3个形态,你稍等。
小屌丝: 我说的不是高斯奥特曼,
小鱼:不是高斯奥特曼,那是赛罗奥特曼?欧布奥特曼?
小屌丝:… 也不是的啊
小鱼:难道你是说?
小屌丝:嗯嗯嗯。
小鱼: 不会真的是 贝利亚奥特曼…
小屌丝: 啊啊啊~ ~ 鱼哥, 我说的不是奥特曼,是高斯混合模型
小鱼:哦哦哦~ ~ 谁让你不把名称说全了, 这整的…
小屌丝:鱼哥,赶紧的,讲一讲 高斯混合模型。
小鱼:这… 等我把这集奥特曼看完。
小屌丝:完美世界不香吗?印神王座不香吗? 还
小鱼:香… 这个真香…
小屌丝:那赶紧讲完,咱边泡澡边看动画片。
小鱼:这个更香。
在这里插入图片描述

2、高斯混合模型

2.1 定义

高斯混合模型是一种概率模型,它假设所有的数据点都是由有限个高斯分布(也称为正态分布)生成的。
每个高斯分布代表数据中的一个子集或“簇”,而整个数据集则是这些高斯分布的混合。

2.2 原理

高斯混合模型的核心思想是,通过估计每个高斯分布的参数(均值、协方差和权重),以及它们在混合模型中的比例,来拟合数据的概率分布。

这通常通过期望最大化(Expectation-Maximization, EM)算法来实现,该算法是一种迭代方法,用于在概率模型中寻找参数的最大似然估计。

2.3 实现方式

实现高斯混合模型通常包括以下步骤:

  • 初始化:为每个高斯分布随机选择均值、协方差和权重。
  • E步骤(期望步骤):根据当前参数估计,计算每个数据点属于每个高斯分布的概率。
  • M步骤(最大化步骤):使用E步骤中计算的概率,重新估计每个高斯分布的参数。
  • 迭代:重复E步骤和M步骤,直到参数收敛或达到预设的迭代次数。

2.4 算法公式

2.4.1 概率密度函数

高斯混合模型的概率密度函数可以表示为:

[ 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=1Kπ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)) 是高斯分布的概率密度函数。

2.4.2 EM算法之E步骤

在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) 个高斯分布。

2.4.2 EM算法之M步骤

在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=1Nγ(znk)xn,Σk=Nk1n=1Nγ(znk)(xnμk)T(xnμk)]

其中, ( N k ) (N_k) (Nk)是属于第 ( k ) (k) (k) 个高斯分布的数据点的数量。

2.5 代码示例

# -*- 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()


解析

  • 生成随机数据

    • 使用numpy库生成了一个包含300个样本的随机数据集X,这些样本是二维的,并且根据四个中心点(centers=4)进行聚类,每个簇的标准差为0.6。
    • y是这些样本的真实标签,但在后续的高斯混合模型使用中并未直接使用到这些标签,因为GMM是一种无监督学习算法。
  • 高斯混合模型拟合

    • 使用sklearn.mixture中的GaussianMixture类创建了一个高斯混合模型对象gmm,并指定模型中有四个高斯成分(n_components=4),对应于数据中的四个簇。
    • 使用fit方法对数据集X进行拟合,估计每个高斯成分的均值、协方差和权重。
  • 预测数据点标签

    • 使用predict方法对数据集X中的每个数据点进行标签预测。这里,“标签”是指每个数据点最可能属于的高斯成分的索引。在聚类上下文中,这些标签可以被视为数据点的簇分配。
  • 可视化结果

    • 使用matplotlib的scatter函数,根据预测得到的标签labels,将数据点绘制在二维平面上,并使用颜色映射cmap='viridis’区分不同的簇。
    • plt.show()用于显示绘制的散点图。

    在这里插入图片描述

3、总结

看到这里,今天的内容就分享到告一段落了。
我们在回顾一下告诉混合模型:
高斯混合模型是一种强大的无监督学习算法,它能够发现数据中的复杂结构,并将数据划分为多个高斯分布的混合。通过EM算法迭代地估计每个高斯分布的参数,GMM能够有效地拟合数据的概率分布,并用于聚类、密度估计等任务。在实际应用中,GMM可以根据具体需求进行扩展

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 多个名企认证讲师等
  • 认证金牌面试官
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习机器学习领域的知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果意将Gemini引入iPhone;英伟达发布新AI GPU;Grok正式开源

苹果正在谈判将 Gemini 引入 iPhone Mark Gurman 报道,苹果正在谈判将 Google 的生成式 AI 大模型 Gemini 引入 iPhone。 知情人士透露,两家公司正在积极谈判,让苹果获得 Gemini 授权,为今年 iPhone 软件的一些新功能提供动力。苹…

HCIA——30奈奎斯特定理、香农定理

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

Spring Boot 自动化单元测试类的编写过程

前言 Web环境模拟测试 企业开发不仅要保障业务层与数据层的功能安全有效,也要保障表现层的功能正常。但是我们一般对表现层的测试都是通过postman手工测试的,并没有在打包过程中代码体现表现层功能被测试通过。那么能否在测试用例中对表现层进行功能测…

【NLP笔记】RNN总结

文章目录 经典RNN单向RNN双向RNNDeep RNNRNN特性总结 变体RNNLSTMGRU 参考及转载内容: 循环神经网络(RNN)深度学习05-RNN循环神经网络完全理解RNN(循环神经网络) 传统的CNN(Covolutional Neural Network&am…

【考研数学】汤家凤《1800题》值不值得做?

属于中等偏上的水平,想要基础扎实把1800拿下就错不了! 这1800道题,真的不是盖的,数量相当可观!想搞定它们,可得抓紧时间,不然真做不完。而且,想要效果更佳,还得来个二刷…

Django分页器

Django分页器 分页器前瞻之url urls.py不需要做修改 urlpatterns [path(test/, views.test,nametest), ]假设此时在原有的路径http://127.0.0.1:8000/app01/test后面添加/?page2 然后再后端获取到page def test(request):page request.GET.get(page)print(page) # 2retu…

MATLAB环境下基于改进最大相关峭度解卷积的滚动轴承故障诊断

相关峭度解卷积MCKD是一种新的解卷积方法,其设计了一个新的目标函数—相关峭度,并以此为优化目标设计一系列的FIR滤波器,为实现最好的效果,需要从中找到最优滤波器并最终实现对信号中噪声的抑制和对信号中冲击成分的突出的目的。M…

O2OA红头文件流转与O2OA版式公文编辑器基本使用

O2OA开发平台在流程管理中,提供了符合国家党政机关公文格式标准(GB/T 9704—2012)的公文编辑组件,可以让用户在包含公文管理的项目实施过程中,轻松地实现标准化公文格式的在线编辑、痕迹保留、手写签批等功能。并且可以…

Spire.PDF for .NET【文档操作】演示:将PDF拆分为多个PDF文件

Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库,开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理,且无需安装 Adobe Acrobat。 E-iceblue 功能类库Spire 系列文档处…

基于Springcloud+Vue校园招聘系统 Eureka分布式微服务

以行动研究为主,辅以文献法、教育实验法和个案研究法等方法相结合的研究方法。在研究方法,遵循软件工程中软件生命周期的规则。概括来讲可以划分成三大步:系统规划、系统开发和系统运行维护。将其上述步骤细分下来,可以分为以下8小…

[Qt学习笔记]Qt实现鼠标点击或移动时改变鼠标的样式以及自定义鼠标样式

1、鼠标样式介绍以及对应函数 在Qt中大概有20种左右的内置鼠标样式,一般使用setCursor(Qt::CursorShape shape)来进行设置,一般常用的有标准箭头、手型,双箭头等等形状,对于不同的操作系统下,鼠标的样式显示会略有差别…

java Flink(四十三)Flink Interval Join源码解析以及简单实例

背景 之前我们在一片文章里简单介绍过Flink的多流合并算子 java Flink(三十六)Flink多流合并算子UNION、CONNECT、CoGroup、Join 今天我们通过Flink 1.14的源码对Flink的Interval Join进行深入的理解。 Interval Join不是两个窗口做关联,…

智慧城市的发展趋势与挑战:未来展望

随着信息技术的飞速发展,智慧城市已成为现代城市发展的重要方向。智慧城市通过集成应用先进的信息通信技术,实现城市管理、服务、运行的智能化,为城市的可持续发展注入了新的活力。然而,在智慧城市的发展过程中,也面临…

C语言——结构体自定义类型

目录 结构体类型 声明结构体 结构体的特殊声明 创建结构体变量和初始化结构体变量 结构体的自引用 结构体内存对齐 对齐规则 内存对齐存在意义 默认对齐数的修改 结构体传参 结构体实现位段 了解位段是什么 位段的内存分配 位段有跨平台的问题及使用注意事项 C语言…

电脑插上网线之后仍然没网络怎么办?

前言 有小伙伴在使用Windows系统的时候,经常会遇到电脑没网络,但又不知道具体怎么调整才好。 本篇内容适合插网线和使用Wi-Fi的小伙伴,文章本质上是重置电脑的网络设置。 注意事项:网络重置操作会让已连接过的wifi密码丢失&…

51单片机学习笔记7 串转并操作方法

51单片机学习笔记7 串转并操作方法 一、串转并操作简介二、74HC595介绍1. **功能**:2. **引脚**:3. **工作原理**:4. 开发板原理图(1)8*8 LED点阵:(2)74HC595 串转并: 三…

【PyTorch][chapter 22][李宏毅深度学习][ WGAN]【实战三】

前言: 本篇主要讲两个WGAN的两个例子: 1 高斯混合模型 WGAN实现 2 MNIST 手写数字识别 -WGAN 实现 WGAN 训练起来蛮麻烦的,如果要获得好的效果很多超参数需要手动设置 1: 噪声的维度 2: 学习率 3: 生成器,鉴别器…

Bert的一些理解

Bert的一些理解 Masked Language Model (MLM)Next Sentence Prediction (NSP)总结 参考链接1 参考链接2 BERT 模型的训练数据集通常是以预训练任务的形式来构建的,其中包括两个主要任务:Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。…

使用Vscode连接云进行前端开发

使用Vscode连接云进行前端开发 1、ssh连接腾讯云 本人使用的是腾讯云。 然后vscode,用最新版,插件选择remote ssh,或者remote xxx下载过来。 然后点击远程资源管理器,选择SSH通道 然后输入命令如下。 ssh rootip然后输入密码 腾讯云应该…

Linux环境下使用Eclipse Paho C 实现(MQTT Client)异步订阅Message

目录 概述 1 认识Eclipse Paho C 1.1 paho.mqtt.c简介 1.2 下载和安装paho.mqtt.c 1.3 一些重要的函数 2 异步订阅消息实现 2.1 编写异步订阅消息功能 2.1.1 初始化MQTT参数 2.1.2 初始化函数 2.1.3 订阅消息的回调函数 2.1.4 取消订阅Topic 2.2 编译代码和测试 3…