分层聚类(Hierarchical clustering)

这篇具有很好参考价值的文章主要介绍了分层聚类(Hierarchical clustering)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

分层聚类算法试图建立一个聚类的层次结构,有两类:聚合型(agglomerative)和分裂型(divisive)。聚合法最初将每个数据点作为一个单独的聚类,然后迭代合并,直到最后的聚类中包含所有的数据点。它也被称为自下而上的方法。分裂聚类遵循自上而下的流程,从一个拥有所有数据点的单一聚类开始,迭代地将该聚类分割成更小的聚类,直到每个聚类包含一个数据点。

下图展示的便是聚合法的示意图。

分层聚类(Hierarchical clustering)

  • 流程

  • 聚合分层聚类算法包括以下步骤:

  • 计算各聚类之间的距离(初始时,每个数据点作为一个单独的聚类)。

  • 根据距离函数,将相似的聚类合并成一个聚类。

  • 重复上述两步,直到所有的数据点被合并成最后一个聚类。

分层聚类(Hierarchical clustering)

  • 常用的距离函数:

  • 单联动(single-linkage): 一个类中的点和另一个类中的点的最小距离

分层聚类(Hierarchical clustering)

全联动(complete-linkage): 一个类中的点和另一个类中的点的最大距离

分层聚类(Hierarchical clustering)

  • 平均联动(average-linkage): 一个类中的点和另一个类中的点的平均距离

  • Ward法(ward): 和平均类似,只不过计算的是两个类之间的平方和。

分层聚类(Hierarchical clustering)

质心(controid): 两类中质心之间的距离,对单个变量来说,就是变量的值

分层聚类(Hierarchical clustering)

聚类数目

  • 生成树形图之后,下一步便是决定多少个类别合适。可以考虑像Silhouette plot、Scree Plot,或一些指标如Gap stat, Dunn's index、Hubert's gamma等。

使用factoextra包直接画出WSS/silhouetee/gap stat。使用hclust的时候,factorextra包似乎会替你计算距离,因此输入数据为原始数据,而hclust函数需要自己算距离(参见fpc包自带的例子)。

p1=fviz_nbclust(df2cluster, hcut, method = "wss",hc_metric = "euclidean", hc_method = "ward.D2")
p2=fviz_nbclust(df2cluster, hcut, method = "silhouette",hc_metric = "euclidean", hc_method = "ward.D2") 
p3=fviz_nbclust(df2cluster, hcut, method = "gap_stat",hc_metric = "euclidean", hc_method = "ward.D2")

分层聚类(Hierarchical clustering)

在决定好k值后,还可以画出相应的分类,比如k=5

hc.res <- eclust(df2cluster, "hclust", k = 5, hc_method = "ward.D2", graph = FALSE) 
p1=fviz_dend(hc.res, show_labels = FALSE, palette = "jco", as.ggplot = TRUE)
p2=fviz_cluster(hc.res)

分层聚类(Hierarchical clustering)

  • Dunn's index可以用fpc中的cluster.stats()计算,因为基于hclust,这里需要自己计算距离。

set.seed(20000)
  options(digits=3)
  face <- rFace(200,dMoNo=2,dNoEy=0,p=2)
  dface <- dist(face) # 自己计算 dist
  complete3 <- cutree(hclust(dface),3)
  cluster.stats(dface,complete3,
                alt.clustering=as.integer(attr(face,"grouping")))

顺便用这个例子验证一下factoextra的输入到底是不是原数据。

set.seed(20000)
options(digits=3)
face <- rFace(200,dMoNo=2,dNoEy=0,p=2)
dface <- dist(face) # 自己计算 dist
#输入为dface
res1=hclust(dface,method = "ward.D2")
p1=fviz_dend(res1, k=3, show_labels = FALSE, palette = "jco", as.ggplot = TRUE)+ggtitle('hclust输入为距离')


#输入为 face
res2 <- eclust(face, "hclust", hc_method = "ward.D2", graph = FALSE) 
p2=fviz_dend(res2, k=3, show_labels = FALSE, palette = "jco", as.ggplot = TRUE)+ggtitle('factoextra输入为原数据')
grid.arrange(p1,p2,ncol=1)

分层聚类(Hierarchical clustering)

其它

优点

  • 不一定需要指定聚类的数量。

  • 像k-means一样,分层聚类算法很容易实现。

  • 它可以输出聚类树(dendrogram)的层次结构,这可以帮助决定聚类的数量。

缺点

  • 分层聚类的主要缺点是其时间复杂性。与其他算法相比,它的复杂度相对较高,为O(n² logn),n为数据点的数量。

  • 一个聚类被创建,成员数据点就不能被移动。(与此相对的是一批soft clustering算法)

  • 根据距离矩阵的选择,它可能对噪音和异常值很敏感。

hclust最常见的运用可能还是在各种heatmap中展示聚类的情况。

分层聚类(Hierarchical clustering)

heatmap/pheatmap/aheatmap等自带聚类的作图工具都使用了hclust的聚类方法,比如aheatmap和pheatmap中的complete指的就是hclust中的complete-linkage

分层聚类(Hierarchical clustering)

参考

https://medium.com/geekculture/hierarchical-clustering-simply-explained-f86b9ed96db7

https://www.datacamp.com/tutorial/hierarchical-clustering-R文章来源地址https://www.toymoban.com/news/detail-447655.html

到了这里,关于分层聚类(Hierarchical clustering)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见聚类算法及使用--层次聚类(Agglomerative clustering)

    前言 层次聚类顾名思义就是按照某个层次对样本集进行聚类操作,这里的层次实际上指的就是某种距离定义。 层次聚类最终的目的是消减类别的数量,所以在行为上类似于树状图由叶节点逐步向根节点靠近的过程,这种行为过程又被称为“自底向上”。 更通俗的,层次聚类

    2024年01月16日
    浏览(36)
  • 判断聚类 n_clusters

    目录 基本原理 代码实现: 肘部法则(Elbow Method): 轮廓系数(Silhouette Coefficient) Gap Statistic(间隙统计量): Calinski-Harabasz Index(Calinski-Harabasz指数): 这些方法(肘部法则、轮廓系数、Gap Statistic、Calinski-Harabasz Index)都是用于确定聚类算法中的 n_clusters (簇的数量)参数

    2024年02月11日
    浏览(33)
  • 聚类算法(Clustering)原理深入解析与应用

    聚类算法是无监督学习中常用的技术,用于将数据集中的对象分成不同的组或簇,使得组内的对象相似度较高,而组间的对象相似度较低。本文将详细解析聚类算法的原理,从距离度量到簇划分准则,全面理解聚类算法的工作原理和应用。 聚类算法是一种无监督学习算法,通

    2024年02月09日
    浏览(41)
  • 【聚类算法】密度峰值聚类算法DPC(Density Peak Clustering Algorithm)

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog 密度峰值聚类算法(Density Peak Clustering Algorithm),能够自动发现数据中的密度峰值点,并根据峰值点将数据进行聚类,该算法由Alex Rodriguez和Alessandro Laio于2014年提出。发表science https://www.science.org

    2024年02月15日
    浏览(38)
  • 图论中的聚类系数(Clustering coefficient)简单介绍

    在GraphSage论文的理论分析部分,涉及到一个概念叫做“ Clustering coefficient” ,直译过来就是 聚类系数 ,解释为“节点的一跳邻域内封闭的三角形的比例”,本文对其做一个简单的介绍。本文参考了 Wiki百科-Clustering coefficient。 更:关于GraphSage论文详解,请参见博文《GraphSag

    2023年04月09日
    浏览(39)
  • 吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

    在这个视频中,我将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。 那么,什么是非监督学习呢?在课程的一开始,我曾简单地介绍过非监督学习,然而,我们还是有

    2024年04月22日
    浏览(50)
  • 密度峰值聚类算法DPC(Density Peak Clustering)理论基础与python实现

    基于密度峰值的聚类算法全称为基于快速搜索和发现密度峰值的聚类算法(clustering by fast search and find of density peaks, DPC)。它是2014年在Science上提出的聚类算法,该算法能够自动地发现簇中心,实现任意形状数据的高效聚类。 密度峰值聚类算法是对K-Means算法的一种改进,回顾K

    2024年02月16日
    浏览(37)
  • 从聚类(Clustering)到异常检测(Anomaly Detection):常用无监督学习方法的优缺点

    无监督学习是机器学习的一种重要方法,与有监督学习不同,它使用未标记的数据进行训练和模式发现。无监督学习在数据分析中扮演着重要的角色,能够从数据中发现隐藏的模式、结构和关联关系,为问题解决和决策提供有益的信息。相比于有监督学习需要标记样本的限制

    2024年02月11日
    浏览(48)
  • 【论文导读】- Cluster-driven Graph Federated Learning over Multiple Domains(聚类驱动的图联邦学习)

    Cluster-driven Graph Federated Learning over Multiple Domains 原文链接:Cluster-driven Graph Federated Learning over Multiple Domains:https://openaccess.thecvf.com/content/CVPR2021W/LLID/papers/Caldarola_Cluster-Driven_Graph_Federated_Learning_Over_Multiple_Domains_CVPRW_2021_paper.pdf Federated Learning (FL) deals with learning a central model (i.e.

    2024年02月03日
    浏览(58)
  • 论文阅读1--A Survey on Incomplete Multi-view Clustering(不完全多视图聚类的调查)阅读笔记

    目录 写在前面(知识补充) 0.Abstract 1.Introduction 2. FUNDAMENTALS AND PRELIMINARY CONCEPTS 3. MATRIX FACTORIZATION BASED IMC(基于矩阵分解的IMC) 4. KERNEL LEARNING BASED IMC(基于内核学习的IMC) 5.GRAPH LEARNING BASED IMC(基于图学习的IMC) 6.DEEP LEARNING BASED IMC(基于深度学习的IMC) 7. EXPERIMENTS(实验部分)

    2024年02月05日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包