R编程中的层次聚类是什么?


介绍

在数据分析和机器学习的广阔领域中,层次聚类是一种强大的技术,它根据个体或对象的相似性对它们进行分组。当结合R编程语言的多功能性和效率时,它成为一个更有价值的工具,用于揭示大型数据集中的隐藏模式和结构。在本文中,我们将探讨层次聚类的内容,深入研究其各种类型,并通过一个实际示例进行说明,并在R中提供代码实现。

层次聚类

层次聚类是一种无监督学习算法,它旨在通过基于预定距离度量迭代合并或划分相似实体来创建聚类。与k均值聚类等其他方法不同,在k均值聚类中,我们需要预先定义所需聚类的数量,层次聚类构建一个称为树状图的树状结构,可以将其切割到一定高度以获得多个聚类解决方案。

层次聚类的类型

层次聚类主要有两种方法:

  • 凝聚的(自下而上):此方法首先将每个人都视为其自身的聚类,然后连续合并小的聚类,直到达到包含所有数据点的单个大型聚类。连接准则的选择在这里起着至关重要的作用。

  • 分裂的(自上而下):与凝聚方法相反;分裂层次聚类从包含所有数据点的单个大型聚类开始,然后递归地将其划分为较小的子聚类,直到达到单个观察值作为单独的聚类。

使用R编程实现层次聚类

层次聚类是通过使用曼哈顿距离计算距离来实现的。

算法

步骤1:首先,我们需要加载样本数据集。

步骤2:在聚类之前,需要进行数据预处理。如果存在缺失值,我们可能需要标准化变量或处理缺失值。

步骤3:根据所选度量(例如欧几里德距离或曼哈顿距离)计算观测值之间的差异距离或距离。

步骤4:创建层次聚类,我们的距离矩阵准备就绪后,我们可以使用R中的`hclust()`函数进行层次聚类。

步骤5:生成的“hc”对象存储后续步骤所需的所有信息。

步骤6:绘制树状图,我们可以通过在R中绘制树状图来可视化我们的聚类。

示例

library(cluster) 
 
# Create a sample dataset set.seed(123) 
x <- matrix(rnorm(100), ncol = 5) 
 
# Finding distance matrix 
distance_mat <- dist(x, method = 'manhattan') distance_mat 
 
# Fitting Hierarchical Clustering Model 
# to the training dataset set.seed(240) # Setting seed 
Hierar_cl <- hclust(distance_mat, method = "average") 
Hierar_cl 
 
# Plotting dendrogram plot(Hierar_cl) 
 
# Choosing no. of clusters # Cutting tree by height abline(h = 5.5, col = "green") 
 
# Cutting tree by no. of clusters fit <- cutree(Hierar_cl, k = 3 ) fit  table(fit) 
rect.hclust(Hierar_cl, k = 11, border = "red") 

输出

1	2        3        4        5        6        7        8 
2	2.928416                                                                
3	3.820964 4.579451                                                       
4	5.870407 3.963824 6.920070                                              
5	4.712898 3.357644 5.192501 2.041704                                     
6	3.724940 5.188503 2.298511 7.529122 6.906090                            
7	4.378470 3.603915 6.073011 6.448175 6.242628 5.408591                   
8	2.909887 2.270199 5.993941 6.134220 5.627842 5.830570 3.531025          
9	2.545686 4.500523 5.703258 5.466749 3.856739 6.130000 6.203371 4.746715 
10	5.861279 5.127758 9.368977 8.324293 8.236305 8.704556 3.295965 5.013834 
11	6.085281 3.179450 4.827798 5.101238 4.895692 5.436850 2.873268 4.584566 
12	5.590643 2.816420 6.061696 4.307201 3.803264 6.670747 4.914120 4.986817 
13	4.435100 3.563707 6.249931 6.596065 5.579229 5.771611 1.893134 3.980554 
14	6.402935 4.233552 6.619402 4.029210 2.452428 8.633337 5.044223 5.761055 
15	4.785512 2.544131 7.087874 5.618391 5.530404 7.696926 2.610109 3.284796 
16	7.566986 7.161528 6.313095 7.075204 5.756949 6.740845 5.668959 7.578376 
17	6.380095 4.860359 5.530564 7.704619 7.499072 6.327322 3.290148 5.335482 
18	6.818578 4.550758 9.130209 5.378824 5.184404 9.739261 6.419430 4.339261 
19	3.282054 2.655900 3.616115 5.178834 3.243561 4.331110 3.510374 3.815444 
20	3.236401 2.604102 5.008448 5.395216 3.577502 6.633752 5.481153 3.662209 
9	10       11       12       13       14       15       16 
2                                                                          
3                                                                          
4                                                                          
5                                                                          
6                                                                          
7                                                                          
8                                                                          
9                                                                          
10	6.099033                                                                
11	6.734916 5.530202                                                       
12	6.804009 7.368849 4.130914                                              
13	4.591857 3.200043 3.839703 4.870051                                     
14	5.335886 6.919997 4.519932 5.595756 4.300131                            
15	6.393326 3.634753 3.218255 4.662948 4.028726 4.327200                   
16	5.414681 7.171170 5.198525 8.439225 4.010792 3.776011 7.892429          
17	8.925781 6.482177 4.055843 6.170564 5.183282 6.868406 3.874253 8.586946 
18	6.552868 7.159270 5.279163 5.245416 7.472245 6.473367 3.809321 9.815098 
19	3.707689 6.167308 3.286156 3.779404 2.967265 4.302227 5.200031 4.681604 
20	3.297399 6.324931 4.913250 4.907588 4.817754 3.963564 4.663005 6.219969 
         17       18       19 
2                             
3                             
4                             
5 
6
7
8
9
10
11
12
13
14
15
16
17
18 6.804331                  
19 5.625103 6.543116         
20 7.029360 5.821915 2.451658
Call:
hclust(d = distance_mat, method = "average")

Cluster method   : average 
Distance         : manhattan
Number of objects: 20 
  
 [1] 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 3 2 1 1 1
fit
  1   2  3 
 16   3  1

结论

层次聚类是一种多功能且强大的技术,用于发现数据集中的潜在结构。通过利用其实际应用并在R编程语言中实现它,我们现在已经获得了对层次聚类的理解和实践经验。这种方法在客户细分、图像分析和生物信息学等各个领域具有巨大的潜力,帮助专家揭示隐藏的模式,从而推动明智的决策过程。

更新于:2023年7月26日

315次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.