导语:高斯混合模型的入门指南

高斯混合模型是一种强大的聚类算法。本文将带你了解高斯混合模型的工作原理以及如何在 Python 中实现它们,我们还将讨论 k-means 聚类算法,看看高斯混合模型是如何对它进行改进的。

我真的很喜欢研究无监督的学习问题。相对于一个有监督的学习问题来说,它们提供了一个完全不同的挑战——有更多的空间来试验我的数据。难怪机器学习领域的大多数发展和突破都发生在无监督学习领域。

无监督学习中最流行的技术之一是聚类。这是一个概念且很容易掌握,我们通常在机器学习的早期学习它。我相信你已经经历甚至参与过客户细分、市场篮分析等项目。

高斯混合模型

但问题是——集群有很多层。它不仅限于我们之前学习的基本算法。它是一种强大的无监督学习技术,我们可以在现实世界中准确无误地使用它。

高斯混合模型是我在本文中要讨论的一种聚类算法。

想预测你最喜欢的产品的销量吗?想通过不同客户群体的视角来理解客户流失?不管是什么用例,你都会发现高斯混合模型非常有用。

在本文中,我们将采用自下而上的方法。因此,我们将首先学习聚类的基础知识,包括快速回顾 k-means 算法。然后,我们将深入研究高斯混合模型的概念并用 Python 实现它们。

如果你对集群和数据科学还不熟悉,我建议您学习以下综合课程:Applied Machine Learning

本文将分为以下几个部分:

  • 聚类简介

  • k-means 聚类简介

  • k-means 聚类的缺点

  • 高斯混合模型简介

  • 高斯分布

  • 什么是期望最大化?

  • 高斯混合模型中的期望最大化

聚类简介

在我们开始讨论高斯混合模型的本质之前,让我们快速更新一些基本概念。

注意:如果你已经熟悉了聚类背后的思想以及 k-means 聚类算法的工作原理,可以直接跳到第四节「高斯混合模型简介」。

因此,让我们从正式定义开始:

聚类是指根据相似数据点的属性或特征将它们分组在一起。

例如,如果我们有一组人的收入和支出,我们可以将他们分为以下几类:

  • 高收入,高消费

  • 高收入,低消费

  • 低收入,低消费

  • 低收入,高消费

这些组都分别拥有一个具有相似特征,这在向组投递相关方案/产品时非常有用。想想信用卡、汽车/房产贷款是不是这样的?简单地说:

集群背后的思想是将数据点分组在一起,这样每个单独的集群都拥有最相似的数据点。

有各种各样的聚类算法。最流行的聚类算法之一是 k-means。让我们了解 k-means 算法是如何工作的,以及该算法可能达不到预期的情况。

k-means 聚类简介

k-means 聚类是一种基于距离的聚类算法。这意味着它试图将最近的点分组以形成一个簇。

让我们仔细看看这个算法是如何工作的。这将帮助你了解高斯混合模型是如何在本文后面发挥作用的。

因此,我们首先定义要将总体划分为的组的数量——这是 k 的值。根据需要的簇或组的数量,随机初始化 k 个质心。

然后将数据点指定给最近的质心,形成一个簇。然后更新质心并重新分配数据点。这个过程不断重复,直到质心的位置不再改变。

这里有个视频代表了初始化和更新集群的整个过程,其中,群集数被指定为 10:https://thumbs.gfycat.com/SoftEnragedHypsilophodon-mobile.mp4

注意:这是 k-means 聚类的简要概述,对于本文来说已经足够了。如果你想深入研究 k-means 算法的工作,这里有一个深入的指南:The Most Comprehensive Guide to k-means you’ll Ever Need !

k-means 聚类的缺点

k-means 聚类概念听起来不错,对吧?它易于理解,相对容易实现,并且可以应用于很多用例中。但也有一些缺点和局限性需要我们注意。

让我们以我们在上面看到的同样的收支例子为例。k-means 算法似乎运行得很好,但是,如果你仔细观察,你会发现所有创建的簇都是圆形的。这是因为集群的质心是使用平均值迭代更新的。

现在,考虑下面的例子,其中点的分布不是圆形的。如果我们对这些数据使用 k-means 聚类,你认为会发生什么?它仍然试图以循环方式对数据点进行分组。那不太好!k-means 无法识别正确的集群:

k-means 高斯混合模型

因此,我们需要一种不同的方法来将集群分配给数据点。因此,我们不再使用基于距离的模型,而是使用基于分布的模型。

高斯混合模型简介

高斯混合模型(GMMs)假设存在一定数量的高斯分布,并且每个分布代表一个簇。因此,高斯混合模型倾向于将属于单一分布的数据点组合在一起。

假设我们有三个高斯分布——GD1、GD2 和 GD3。它们分别具有一定的均值(μ1,μ2,μ3)和方差(σ1,σ2,σ3)。对于给定的一组数据点,我们的 GMM 将识别属于这些分布的每个数据点的概率。

等等,概率?

对的!高斯混合模型是一种概率模型,采用软聚类方法对不同的聚类点进行分布。我再举一个例子,让大家更容易理解。

在这里,我们有三个集群,用三种颜色表示——蓝色、绿色和青色。让我们以红色突出显示的数据点为例。该点成为蓝色团簇一部分的概率为 1,而成为绿色或青色团簇一部分的概率为 0。

高斯混合模型

现在,考虑另一个点-介于蓝色和青色之间(在下图中突出显示)。这个点是绿色簇的一部分的概率是 0,对吧?这属于蓝色和青色的概率分别为 0.2 和 0.8。

高斯混合模型使用软聚类技术将数据点分配给高斯分布。你肯定想知道这些分布是什么,所以让我在下一节解释一下。

高斯分布

我相信你熟悉高斯分布(或正态分布)。它有一个钟形曲线,数据点围绕平均值对称分布。

下图有一些高斯分布,平均值(μ)和方差(σ2)不同。记住,σ 值越高,价差越大:

高斯混合模型(来源:维基百科)

在一维空间中,高斯分布的概率密度函数由下式给出:

高斯分布

其中μ是平均值,σ2 是方差。

但这只适用于单个变量。在两个变量的情况下,我们将得到如下所示的三维钟形曲线,而不是二维钟形曲线:

高斯混合模型

概率密度函数由以下公式给出:

高斯分布

其中 x 是输入向量,μ是 2D 平均向量,∑ 是 2×2 协方差矩阵。协方差现在可以定义曲线的形状。我们也可以对 d 维进行推广。

因此,这个多元高斯模型将 x 和 μ 作为长度 d 的向量,∑ 将是一个 d×d 协方差矩阵。

因此,对于具有 d 个特征的数据集,我们将得到 k 个高斯分布(其中 k 相当于簇的数量)的混合,每个都有一定的平均向量和方差矩阵。但是,如何分配每个高斯分布的均值和方差值?

这些值用一种叫做期望最大化(EM)的技术来确定。在深入研究高斯混合模型之前,我们需要了解这项技术。

什么是期望最大化?

好问题!

期望最大化(EM)是寻找正确模型参数的统计算法。当数据缺少值时,或者换句话说,当数据不完整时,我们通常使用 EM。

这些缺失的变量称为潜在变量。当我们在研究一个无监督学习问题时,我们认为目标(或簇数)是未知的。

由于缺少这些变量,很难确定正确的模型参数。这样想吧——如果你知道哪个数据点属于哪个集群,你就很容易确定平均向量和协方差矩阵。

由于我们没有潜在变量的值,期望最大化试图利用现有数据来确定这些变量的最优值,然后找到模型参数。基于这些模型参数,我们返回并更新潜在变量的值。

广义上,期望最大化算法有两个步骤:

  • E-step:在这个步骤中,可用的数据用于估计(猜测)丢失变量的值

  • M-step:根据 E-step 中生成的估计值,使用完整的数据更新参数

期望最大化是许多算法的基础,包括高斯混合模型。那么,GMM 如何使用 EM 的概念,以及如何将其应用于给定的点集?让我们看看!

高斯混合模型中的期望最大化

让我们用另一个例子来理解这一点。我想让你在读的时候自己也思考以下。这将帮助你更好地理解我们在说什么。

假设我们需要分配 k 个簇。这意味着存在 k 个高斯分布,平均值和协方差值为 μ1,μ2 ... μk 和 ∑1,∑2 ... ∑k。此外,还有一个用于分布的参数,用于定义分布的点数。或者换句话说,分布密度用 ∏i 表示。

现在,我们需要找到这些参数的值来定义高斯分布。我们已经决定了簇的数量,并随机分配了均值、协方差和密度的值。接下来,我们将执行 E-step 和 M-step!

E-step:

对于每个点 Xi,计算它属于簇/分布 C1、C2、…CK 的概率。使用以下公式完成此操作:

高斯混合模型

该值将在将点指定给右簇时为高,否则为低。

M-step:

完成 E-step 后,我们返回并更新 ∏,μ 和 ∑ 值。更新方式如下:

  • 新密度由群集中的点数与总点数的比率定义:

高斯混合模型

  • 平均值和协方差矩阵根据分配给分布的值进行更新,与数据点的概率值成比例。因此,具有更高概率成为该分布一部分的数据点将贡献更大的部分:

高斯混合模型

基于此步骤生成的更新值,我们计算每个数据点的新概率并迭代更新值。为了最大化对数似然函数,重复该过程。实际上我们可以说:

k-means 只考虑更新质心的均值,而 GMM 则考虑数据的均值和方差!

结语

这是高斯混合模型的入门指南。我在这里的目的是向你介绍这种强大的聚类技术,并展示它与传统算法相比是多么高效。

我鼓励你参加一个集群项目并在那里尝试 GMMs。这是学习和理解一个概念的最好方法——相信我,你会意识到这个算法有多有用!

via:https://www.analyticsvidhya.com/blog/2019/10/gaussian-mixture-models-clustering/

如何利用高斯混合模型建立更好、更精确的集群?相关推荐

  1. 建立p2p互相连接的社区集群机器人设计(一)

    集群机器人基本概念 用一组机器人来解决完成一项复杂的任务,这种设计来自于群居的生物物种,而人类正是这种类别 一群蚂蚁比一只蚂蚁能完成的任务更多,同理,在于社区内的一群机器人能完成的任务大大超越个人的能 ...

  2. 如何在Python中建立和训练K最近邻和K-Means集群ML模型

    One of machine learning's most popular applications is in solving classification problems. 机器学习最流行的应 ...

  3. K8S建立ipv6集群

    前言 本文讲述使用kubernetes建立纯ipv6的集群,以及ipv6网络插件该如何设置. 实验环境 我所使用的平台是VMware,在其中创建了CentOS7的虚拟机,在上面进行实验部署.在创建虚拟 ...

  4. 建立集群间ssh信任关系

    目的要求 一套集群里有10台主机,建立ssh信任关系,使集群内所有主机可以不输密码互相访问. 解决方法 1.在server1生成私钥 ssh-keygen ssh-copy-id root@192.1 ...

  5. 更深更宽的孪生网络,有效提升目标跟踪精度,代码开源

    点击我爱计算机视觉标星,更快获取CVML新技术 本文为52CV群友Mr.Chen投稿,深入解读了CVPR 2019 跟踪方向的论文Deeper and Wider Siamese Networks f ...

  6. 使用现场总线更快更远

    使用现场总线更快更远 Going faster and further with Fieldbus PROCENTEC等行业专家表示,基于RS-485的现场总线技术(PROFIBUS®)和工业以太网( ...

  7. 科宇扫地机器人_我的三年16台智能扫地机器人使用回忆录 篇四:扫地谁更精准更干净?新一代3D视讯+激光成像 PK 老式激光扫描,万字实测对比分享...

    我的三年16台智能扫地机器人使用回忆录 篇四:扫地谁更精准更干净?新一代3D视讯+激光成像 PK 老式激光扫描,万字实测对比分享 2019-05-23 11:22:00 37点赞 166收藏 53评论 ...

  8. Adaptive Execution让Spark SQL更高效更好用

    本文所述内容均基于 2018年9月17日 Spark 最新 Spark Release 2.3.1 版本,以及截止到 2018年10月21日 Adaptive Execution 最新开发代码.自动设 ...

  9. 我如何构建Kubernetes集群,以便我的同事可以更快地部署应用程序

    by cheungpat 通过cheungpat 我如何构建Kubernetes集群,以便我的同事可以更快地部署应用程序 (How I built a Kubernetes cluster so my ...

最新文章

  1. 报名 | 期末考后,快来打比赛赢万元奖金!(北京上海)
  2. Tomcat中的Session小结
  3. 运放使用中不稳定怎么办?
  4. Android 人脸识别
  5. python详细安装教程3.7.4-python 3.7.4 安装 opencv的教程
  6. Allegro跨分割检查
  7. SilverLight4调用WebService跨域访问问题
  8. 优秀的电商精品素材就到优图
  9. 老同学聚会你会不会赴约?
  10. 重做系统,出现invalid switch noid
  11. java pkcs8_java中公钥,私钥,pkcs1格式,pkcs8格式互转
  12. box-sizing:boder-box
  13. 淘宝客淘宝联盟解析二合一链接获取优惠链接还原二合一,提取优惠信息
  14. Android内存优化深入解析
  15. 设计一个程序,其中有三个类CBank,BBank,GBank,分别为中国银行类…………
  16. 理性分析三星盖乐世炸弹7
  17. 二进制1010.0101转换为十进制
  18. 短视频高流量的秘诀,上热门全靠这些技巧
  19. 神经网络量化入门--基本原理
  20. gpart 分区工具

热门文章

  1. sql server的BCP导入导出(转)
  2. 青源 Forum | 人工智能的数理基础前沿系列报告 · 第 4 期
  3. 如何轻松学会一门外语?
  4. gRPC 的 4 种基础通信模式
  5. FaceNet: A Unified Embedding for Face Recognition and Clustering
  6. 【TAMU】最新《时间序列分析》课程笔记
  7. AI识别彻底懵逼,这到底是“牛”还是“鲨”?
  8. 独家 | 准确度VS速度——数据科学家能从搜索中学到什么?(附链接)
  9. 独家 | 盘点9个适用所有学科的R数据可视化包(附链接)
  10. 涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南