前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习高斯混合模型(中篇):聚类求解

机器学习高斯混合模型(中篇):聚类求解

作者头像
double
发布2018-04-02 17:22:41
1.3K0
发布2018-04-02 17:22:41
举报
文章被收录于专栏:算法channel算法channel

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

01

回顾

昨天,介绍了高斯混合模型(GMM)的一些有意思的小例子,说到高斯混合能预测出每个样本点属于每个簇的得分值,这个具有非常重要的意义,大家想了解这篇推送的,请参考:

机器学习高斯混合模型:聚类原理分析(前篇)

02

GMM求解思路

GMM中的归纳偏好是组成数据的几个簇都满足高斯分布。

GMM求解的已知条件:

  • 被分簇的个数是已知的;
  • 当然,还有那一堆训练数据

GMM算法的任务:预测出每个样本点属于每个簇的得分值,每个簇中得分最大的就是这个样本点属于的簇。

GMM算法的求解思路:我们先从一个簇说起,此时就是一个高斯分布吧。假如已知训练数据有20个,那么这20个数据一定属于当前这个簇吧,因为一共就有1个簇,那是必须属于吧,所以只需要求这个高斯分布的参数:均值和方差,一般参数估计都是用最大似然估计吧,就是每个样本发生的概率乘积最大吧,得到:

这样我们就求出这20个数据满足以上参数的高斯分布的概率密度,再来一个数据时,我们根据这个概率密度的公式,便能得出它的概率密度吧。

那两个簇组成的GMM呢?它和一个簇满足高斯有什么不同呢?只有一个不同:簇多了1个,导致的问题:不知道某个样本点到底属于哪个簇,或者说属于每个簇的概率都是多大,这就是增加的那个需要求解的隐变量,也是多出来的一个未知量。

因为我们在事先不知道20个样本点的簇的对应情况时,干脆直接假定它们属于每一个簇,只不过贡献的大小不一致。对每个簇而言,它容纳了所有的样本点,只不过包含每个样本点的系数不大一样。根据这个思路,这不就又回到一个簇的情况了吗,只不过每个样本点对这个簇的贡献值不是恒为1,而是可能一个小于1的系数吧,根据这个分析,我们得出第 i 个数据点对簇 k 的贡献为:

其中:

,可以理解为簇 k 对GMM的贡献和第 i 个数据对簇 k 的贡献的乘积,不就等于第 i 个数据对GMM的贡献吗,分母是第 i 个数据所有簇的贡献和。f 函数是高斯分布的概率密度函数。

这样求出了所有数据对簇 k 的贡献了吧,所以簇 k 也包括了所有数据点吧,有了它们再结合簇 k 满足高斯,极大似然估计可以得出簇 k 的均值和方差吧,与只有一个簇的样本和方差类似:

只不过,每项前面增加了一个贡献系数:第 i 个样本对簇 k 的贡献, Nk 是什么变量,不难理解,每个样本对 k 的贡献系数为 r(i,k),既然簇 k 包括所有的样本,也就是20个样本的贡献系数和,即:

自然地,每个簇对GMM的贡献系数 πk 等于:

极限情况,当k = 1时,即只有一个簇时,Nk = N, πk=1,即这个唯一的簇对 GMM 的贡献系数为1 。

03

迭代求解

有了上面的几个公式,分布设定每个簇的均值和方差一个初始值,πk也设定一个初始值,那么每个样本对某个簇的贡献系数 r(i,k)便可求出,r(i,k)一旦求出,Nk πk 便可求出,进一步,簇 k 的均值和方差便可求出,这样完成了一次参数的迭代,迭代更新参数r(i,k),Nk πk,簇 k 的均值和方差,直到簇 k 的均值和方差收敛为止(小于某个阈值),这样完成GMM的求解:得到每个样本点对每个簇的贡献大小,一个样本得出 k 个贡献大小,一共 N 个样本,则最终得到 (N, k)二维数组,取每行的贡献最大值,即为这个样本所属的簇。

预知按照以上求解思路对GMM的不掉包python代码求解,请关注明天的推送,谢谢您的阅读。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档