1. 实验目的 实现一个 k-means 算法和混合高斯模型,并且用 EM 算法估计模型中的参数。
2. 实验要求
- 用高斯分布产生 k 个高斯分布的数据(不同均值和方差)(其中参数自己设定)。
- 用 k-means 聚类,测试效果;
- 用混合高斯模型和你实现的 EM 算法估计参数,看看每次迭代后似然值变化情况,考察 EM 算法是否可以获得正确的结果(与你设定的结果比较)。
- 应用:可以 UCI 上找一个简单问题数据,用你实现的 GMM 进行聚类。
算法为:先随机选取 K 个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是以下任何一个:
- 没有(或最小数目)对象被重新分配给不同的聚类。
- 没有(或最小数目)聚类中心再发生变化。
- 误差平方和局部最小。
GMM 相对 K-means 是比较复杂的 EM 算法的应用实现。与 K-means 不同的是,GMM 算法在 E 步时没有使用“最近距离法”来给每个样本赋类别(hard assignment),而是增加了隐变量 γ。γ 是(N,K)的矩阵, γ[N,K]表示第 n 个样本是第 k 类的概率,因此, 具有归一性。即 的每一行的元素的和值为 1。
GMM 算法是用混合高斯模型来描述样本的分布,因为在多类情境中,单一高斯分布肯定是无法描绘数据分布。多个高斯分布的简单叠加也无法描绘数据分布的。只有混合高斯分布才能较好的描绘一组由多个高斯模型产生的样本。对于样本中的任一个数据点,任一高斯模型能够产生该点的概率,也就是任一高斯模型对该点的生成的贡献(contribution)是不同的,但可以肯定的是,这些贡献的和值是 1。
4. 实验过程 4.1 算法设计 高斯分布参数:
文章图片
E 步:
文章图片
M 步:
文章图片
极大似然估计:
文章图片
4.2 实验结果 自生成数据,K-means:
文章图片
文章图片
自生成数据,GMM:
图中给出了每一阶段的样本分类情况和置信椭圆。
最后带有填充的透明置信椭圆为生成数据的真实椭圆。
【算法|基于Python实现k-means算法和混合高斯模型】
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
推荐阅读
- python|基于Python实现损失函数的参数估计
- 人脸及表情分类|微表情识别的图片预处理(python版)
- python|基于Python实现看图说话和微表情识别
- 使用QWebEngineView打造一款简单浏览器
- 算法|终于来了!这份NLP算法工程师学习路线yyds!
- #|centos8 下彻底卸载mysql
- 论文|SciFive: a text-to-text transformer model for biomedical literature
- 笔记|【深度学习】KNN算法学习
- 神经网络|深度学习算法3-BP神经网络