点击上方 "蓝字" 关注 "AI 开发者"
本文作者 | AISHWARYA SINGH
编译 | skura
高斯混合模型是一种强大的聚类算法. 本文将带你了解高斯混合模型的工作原理以及如何在 Python 中实现它们, 我们还将讨论 k-means 聚类算法, 看看高斯混合模型是如何对它进行改进的.
我真的很喜欢研究无监督的学习问题. 相对于一个有监督的学习问题来说, 它们提供了一个完全不同的挑战 -- 有更多的空间来试验我的数据. 难怪机器学习领域的大多数发展和突破都发生在无监督学习领域.
无监督学习中最流行的技术之一是聚类. 这是一个概念且很容易掌握, 我们通常在机器学习的早期学习它. 我相信你已经经历甚至参与过客户细分, 市场篮分析等项目.
高斯混合模型
但问题是 -- 集群有很多层. 它不仅限于我们之前学习的基本算法. 它是一种强大的无监督学习技术, 我们可以在现实世界中准确无误地使用它.
高斯混合模型是我在本文中要讨论的一种聚类算法.
想预测你最喜欢的产品的销量吗? 想通过不同客户群体的视角来理解客户流失? 不管是什么用例, 你都会发现高斯混合模型非常有用.
在本文中, 我们将采用自下而上的方法. 因此, 我们将首先学习聚类的基础知识, 包括快速回顾 k-means 算法. 然后, 我们将深入研究高斯混合模型的概念并用 Python 实现它们.
如果你对集群和数据科学还不熟悉, 我建议您学习以下综合课程: Applied Machine Learning(https://courses.analyticsvidhya.com/courses/applied-machine-learning-beginner-to-professional)
本文将分为以下几个部分:
聚类简介
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 !(https://www.analyticsvidhya.com/blog/2019/08/comprehensive-guide-k-means-clustering/)
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) 不同. 记住,σ 值越高, 价差越大:
- via:https://www.analyticsvidhya.com/blog/2019/10/gaussian-mixture-models-clustering/
- / 更多阅读 /
来源: http://www.tuicool.com/articles/fqMZj2J