高斯混合模型通常被归类为聚类算法,但本质上 他是一个密度估计算法

本文目录:

1 观察K-means算法的缺陷

2 引出高斯混合模型

3 将GMM用作密度估计

4 由分布函数得到生成模型

5 确定需要多少成分?

本例中所有代码的实现已上传至 git仓库

1 观察K-means算法的缺陷

k-means算法的非概率性和仅根据到族中心的距离指派族的特征导致该算法性能低下

且k-means算法只对简单的,分离性能好的,并且是圆形分布的数据有比较好的效果

通过实例来观察K-means算法的缺陷

%

k-means算法相当于在每个族的中心放置了一个圆圈,(针对此处的二维数据来说)

半径是根据最远的点与族中心点的距离算出

下面用一个函数将这个聚类圆圈可视化

from 

如果数据点不是圆形分布

k-means算法的聚类效果就会变差

rng 

2 引出高斯混合模型

高斯混合模型能够计算出每个数据点,属于每个族中心的概率大小

在默认参数设置的、数据简单可分的情况下,

GMM的分类效果与k-means基本相同

from 

得到数据的概率分布结果

probs 

编写绘制gmm绘制边界的函数

from 

  • 在圆形数据上的聚类结果
gmm 

  • 在偏斜拉伸数据上的聚类结果
gmm 

3 将GMM用作密度估计

GMM本质上是一个密度估计算法;也就是说,从技术的角度考虑,

一个 GMM 拟合的结果并不是一个聚类模型,而是描述数据分布的生成概率模型。

  • 非线性边界的情况
# 构建非线性可分数据

如果使用2个成分聚类(即废了结果设置为2),基本没什么效果

gmm2 

如果设置为多个聚类成分

gmm16 

这里采用 16 个高斯曲线的混合形式不是为了找到数据的分隔的簇,而是为了对输入数据的总体分布建模

4 由分布函数得到生成模型

分布函数的生成模型可以生成新的,与输入数据类似的随机分布函数(生成新的数据点

用 GMM 拟合原始数据获得的 16 个成分生成的 400 个新数据点

Xnew 

5 需要多少成分?

作为一种生成模型,GMM 提供了一种确定数据集最优成分数量的方法。

  • 赤池信息量准则(Akaike information criterion) AIC
  • 贝叶斯信息准则(Bayesian information criterion) BIC
n_components 

观察可得,在 8~12 个主成分的时候,AIC 较小

高斯-赛得尔迭代式 c++_高斯混合模型(聚类、密度估计)相关推荐

  1. 高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)

    高斯混合模型(Gaussian Mixture Model)是机器学习中一种常用的聚类算法,本文介绍了其原理,并推导了其参数估计的过程.主要参考Christopher M. Bishop的<Pa ...

  2. 数值计算方法 线性方程组的数值解法(4)---向量和矩阵范数(norm) 高斯-赛德尔(Gauss-Seidel)迭代、共轭梯度(Conjugate Gradient)迭代

    (范数部分matlab有现成函数,若有需要直接参照matlab_norm) 向量范数 设x∈Rn\boldsymbol x\in \boldsymbol R^nx∈Rn则范数||x||满足:∣∣x∣∣ ...

  3. 高斯—赛德尔求解线性方程+C代码

    高斯-赛德尔迭代求矩阵特征值公式如下: 举例: 实现代码: #include "stdio.h" #include "stdlib.h" #include &q ...

  4. 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现

    高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现 代码 运行 手算例题 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的 ...

  5. MATLAB实现雅可比与高斯塞德尔迭代

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...

  6. [计算机数值分析]高斯-塞德尔迭代公式解线性方程组

    在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的"新值"常比"老值"更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式 ...

  7. 三种迭代法解方程组(雅可比Jacobi、高斯-赛德尔Gaisi_saideer、逐次超松弛SOR)

    分析用下列迭代法解线性方程组 4 -1 0 -1 0 0       0 -1 4 -1 0 -1 0        5 0 -1 4 -1 0 -1        -2 -1 0 -1 4 -1 0 ...

  8. Matlab实现——严格对角占优三对角方程组求解(高斯赛尔德Gauss-Seidel迭代、超松弛)

    欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-<挨踢日志> 严格对角占优三对角方程组求解 对中等规模的n阶的(n<100)线性方程组,直接法的准确性和可靠性,所以常采用直接法 对 ...

  9. 【深入浅出强化学习原理入门】高斯-赛德尔(Gauss-Seidel)迭代法

    基于模型的动态规划方法中,使用高斯-赛德尔迭代算法求解值函数. 这种迭代算法到底是怎么求解线性方程组的,文章迭代法求解线性方程组给出了非常详细的解释. 但理解该文还需要了解相关的基础知识: 1.范数 ...

  10. 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)

    %---高斯-赛德尔迭代法----- %---Gauss - Seidel iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % ...

最新文章

  1. markdown 使用
  2. 基于ESP32智能车竞赛裁判系统第二版硬件调试-6-26
  3. 任意用户密码重置的10种姿势
  4. CentOS6虚拟机下面配置双网卡
  5. 就业局培训计算机心得,人社局计算机培训心得体会.doc
  6. 【Ubuntu】Ubuntu16.04安装 搜狗输入法 史上最详细
  7. 【MOSS】快速调试Sharepoint站点
  8. Eclipse 中修改java编译版本
  9. Android Service+Socket 联网交互
  10. 2017/08/22 工作日志
  11. 自己在OC考试中的试题
  12. 支付宝花呗接口接入php,支付宝小程序开通花呗接口,这是正式向微信小程序正式宣战?...
  13. 深度学习推荐模型-NFM
  14. 2008 DHCP中继器代理服务
  15. 记录一下Android 长截屏功能
  16. 计算机修改了服务如何恢复,怎么修复MSDTC服务?
  17. 2021-1-25计算机快速入门,简单掌握各种技巧
  18. Python生成器教程
  19. 怎么给领导做项目汇报
  20. 【Zotero】与坚果云配合使用同步失败解决方法

热门文章

  1. 感觉非常经典的一片博文(关于缓存)
  2. 【其他】使win7尽量少占用C盘空间
  3. extjs修改页面的内容关键问题
  4. 2.软件架构设计:大型网站技术架构与业务架构融合之道 --- 架构的道与术
  5. matlab R2017b 初始化缓慢的问题
  6. 边界安全 - CDN/DMZ/网络协议
  7. ajaxFileUpload 异步上传文件简单使用
  8. 使用注解方式搭建SpringMVC
  9. Python开发【第十九篇】:Python操作MySQL
  10. Flume案例之采集特定目录的数据到HDFS