前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >无监督学习 聚类分析④

无监督学习 聚类分析④

作者头像
用户1359560
发布2018-08-27 11:39:45
3640
发布2018-08-27 11:39:45
举报
文章被收录于专栏:生信小驿站生信小驿站

无监督学习 聚类分析④

  • EM(Expectation Maximization Algorithm)

1.EM算法的基本思想

假如我们随机选取了100名男生和100名女生,两百个人混在一起,而目前只有每个人学生的身高数据,我们既不知道每个身高数据所对应的性别,也不知道男生和女生两个群体的总体身高分布情况。首先我们假设男生身高分布符合170cm的正太分布,而女生身高符合160cm的正态分布。通过这个假设的参数,对所有的身高数据进行性别分类。当完成分类后,通过对预测的男生,女生两个群体的分布来修改之前假设的身高分部参数。如此循环,直至收敛。

2.EM算法的基本步骤

  1. EM是一个在已知部分相关变量的情况下,估计未知变量的迭代技术。EM的算法流程如下:
    1. 初始化分布参数
    2. 重复直到收敛:
      1. E步骤:估计未知参数的期望值,给出当前的参数估计。
      2. M步骤:重新估计分布参数,以使得数据的似然性最大,给出未知变量的期望估计。

3. 高斯混合模型

高斯混合模型(GMM,Gaussian Mixture Model)可以看成是EM算法的一种现实应用。利用这个模型可以解决聚类分析、机器视觉等领域中的许多实际问题。讨论EM算法时,我们并未指定样本来自于何种分布。实际应用中,常常假定样本是来自正态分布之总体的。也就是说,在进行聚类分析时,认为所有样本都来自具有不同参数控制的数个正态总体。例如前面讨论的男性女性身高问题,我们就可以假定样本数据是来自一个双正态分布混合模型。这便有了接下来要讨论的高斯混合模型。

4.mclust包

mclust包是聚类分析非常强大的一个包 帮助文档非常详尽,可以进行聚类、分类、密度分析。Mclust包方法有点“暴力”,聚类数目自定义,比如我选取的从1到20,然后一共14种模型,每一种模型都计算聚类数目从1到20的BIC值,最终确定最佳聚类数目,这种方法的思想很直接了当,但是弊端也就显然易见了——时间复杂度太高,效率低。

代码语言:javascript
复制
setwd("E:\\Rwork")
library(gclus)
data(wine)
head(wine)
dataset <- wine[,-1] #去除分类标签
dataset <- scale(dataset)
set.seed(1234)
library(mclust)
m_clust <- Mclust(as.matrix(dataset), G=1:20) #聚类数目从1一直试到20
summary(m_clust)
plot(m_clust, "BIC")

5.结论

它们应该分别代表着相关性(完全正负相关——对角线、稍强正负相关——椭圆、无关——圆)等参数的改变对应的模型,BIC值越大则说明所选取的变量集合拟合效果越好** 上图中除了两个模型一直递增,其他的12模型数基本上都是在聚类数目为3的时候达到峰值,所以该算法由此得出最佳聚类数目为3的结论。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 无监督学习 聚类分析④
    • 1.EM算法的基本思想
      • 2.EM算法的基本步骤
        • 3. 高斯混合模型
          • 4.mclust包
            • 5.结论
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档