全文共 1765 字,33 幅图,
预计阅读时间 10 分钟。
本文是「小孩都看得懂」系列的第十五篇,本系列的特点是内容不长,碎片时间完全可以看完,但我背后付出的心血却不少。喜欢就好!
小孩都看得懂的 GMM
0
回顾聚类
聚类 (clustering) 是无监督学习中的一种任务类型,将没有标准的数据“聚”在一起,“赋予”它们标签,其过程如下面两图所示。
更多细节可参考【小孩都看得懂的聚类】一贴
1
一个难题
上图的数据可以“完美”聚成三类,下图的数据呢?
一种合适的聚类如下图所示。
2
软聚类
只要把“硬聚类 (hard clustering)” 的假设放宽到“软聚类 (soft clustering)”,问题就解决了。
硬聚类将每个点 (数据) 上同一种颜色,软聚类可以给点赋予不同颜色,有多少个类就有多少种颜色。以上图举例 (有两类):
那些在黄圈 (不和蓝圈交集) 的点几乎都呈黄色
那些在蓝圈 (不和黄圈交集) 的点几乎都呈蓝色
那些在黄蓝圈相交处的点同时层黄色和篮色
黄色和蓝色的比例由该店属于黄圈或蓝圈的可能性决定。
上面逻辑弄懂,接下来就来介绍“聚类”的模型,混合高斯模型 (Gaussian Mixture Model, GMM)。
首先可视化一下高斯分布。
3
高斯分布
下图展示两种二维高斯分布,两个分布咋一看很相似(投影到水平面的中心点一样)。
将等高线画出来投影到水平面,就可以清晰看出两个高斯的不同之处了:
第一个高斯在 x 和 y 方向的方差一样,而且 x 和 y 之间不相关
第二个高斯在 x 和 y 方向的方差不一样,而且 x 和 y 之间相关
要点:二维高斯分布由均值、方差和协方差决定。
现在可以开始讲解 GMM 的算法了。
4
GMM 第一步:给点上色
核心:给定分布,给点上色。
以下图中五点举例,最边上的两点分别是黄色和篮色,因为它们几乎属于黄圈和篮圈。中间那点即可能属于黄圈也可能属于篮圈,可能性大概 50:50,因此一半黄色一半蓝色。
给更多的点上色,没问题。
5
为了能更清晰的了解上色原理,假象我们从侧面看上面的立体图
这样可以“看到”下面一维的高斯分布 (从一个侧面看二维高斯分布就是一维高斯分布)。
左边的点明显更有可能来自黄色高斯分布,大概 75% 的可能性,因此点中黄色蓝色比例为 3:1。
中间的点有一半可能来自黄色高斯分布,一半可能来自蓝色高斯分布,因此点中黄色蓝色比例为 1:1。
右边的点极有可能来自蓝色高斯分布,大概 90% 的可能性,因此点中黄色蓝色比例为 1:9。
6
GMM 第二步:拟合高斯分布
核心:给定颜色,拟合高斯。
给定一组属于同类别数据点,即同种颜色,我们能很容易计算出质心 (center of mass),即统计学上的均值 (average) 点。
这组点在 x 和 y 方向分散程度,可用方差 (variance) 来衡量。
这组点的相关程度,可用协方差 (covariance) 来衡量。
算完均值、方差、协方差之后,带入高斯概率分布函数表达式就能得到一个具体的高斯分布了。
本节一开头说的给定颜色,意思就是能够计算这些数据点的均值、方差和协方差。
7
上节的结论也适用于非完整点,即非完整点 (如 25% 的点,10% 的点) 也可以拟合出高斯分布。
8
GMM 的两步弄清后,让我们完整来看如何用 GMM 来给数据聚类。
0 - 给定数据点
1 - 随机初始化两个高斯分布
2 - 根据两个高斯分布,给所有点上色
3 - 根据每个点的颜色 (或混合颜色),拟合两个高斯分布
拟合黄色高斯分布
拟合蓝色高斯分布
4 - 再根据两个高斯分布,给所有点上色
5 - 再根据每个点的颜色 (或混合颜色),拟合两个高斯分布
6 - 再根据两个高斯分布,给所有点上色
直到收敛。
这个收敛从表面上看,就是拟合的高斯分布很接近了,从细节来说,就是两次迭代的参数差异 (均值、方差、协方差) 小于一个阈值了。
9
总结:一图胜千言
GMM 就两步,不断运行直到收敛:
1. 给定分布,给点上色。
2. 给定颜色,拟合高斯。
朋友们,你们弄懂了 GMM 吗?
在有三 AI 平台上发布了两个系列的 Python 课程,感兴趣的同学可扫一下二维码。