“层次聚类”的版本间的差异
第8行: | 第8行: | ||
* '''分裂聚类 Divisive''': 这是一种“自上而下”的方法:所有的被观察数据都从一个簇类集群中开始,当一个簇类向下移动时,整个观察组数据群会递归地执行分割。 | * '''分裂聚类 Divisive''': 这是一种“自上而下”的方法:所有的被观察数据都从一个簇类集群中开始,当一个簇类向下移动时,整个观察组数据群会递归地执行分割。 | ||
− | |||
− | + | 一般来说,合并和分裂是基于'''[[贪心算法 greedy algorithm]]'''决定的。层次聚类的结果 <ref>{{cite book | author=Frank Nielsen | title=Introduction to HPC with MPI for Data Science | year=2016 | publisher=Springer |chapter=Chapter 8: Hierarchical Clustering | url=https://www.springer.com/gp/book/9783319219028 |chapter-url=https://www.researchgate.net/publication/314700681 }}</ref> 通常在树状图中呈现。 | |
− | '''层次凝聚聚类 Hierarchical agglomerative clustering(HAC)''' | + | '''层次凝聚聚类 Hierarchical agglomerative clustering(HAC)'''标准算法的[[时间复杂度]]为<math>\mathcal{O}(n^3)</math> ,并且需要 <math>\mathcal{O}(n^2)</math> 占用内存,这使得它对于中等数据集来说效率太低了。然而,对于某些特殊情况,已知的最有效凝聚方法(复杂度 <math>\mathcal{O}(n^2)</math>)是: SLINK 用于[[单连接聚类 Single-linkage clustering]]<ref name="SLINK">{{cite journal | author=R. Sibson | title=SLINK: an optimally efficient algorithm for the single-link cluster method | journal=The Computer Journal | volume=16 | issue=1 | pages=30–34 | year=1973 | publisher=British Computer Society | url=http://www.cs.gsu.edu/~wkim/index_files/papers/sibson.pdf | doi=10.1093/comjnl/16.1.30}}</ref>, CLINK用于[[完全连接 complete-linkage clustering]]<ref name="CLINK">{{cite journal | author=D. Defays | title=An efficient algorithm for a complete-link method | journal=The Computer Journal | volume=20 | issue=4 | pages=364–366 | year=1977 | publisher=British Computer Society | url=http://comjnl.oxfordjournals.org/content/20/4/364.abstract | doi=10.1093/comjnl/20.4.364| doi-access=free }}</ref>。一般情况下的运行时可以缩减为<math>\mathcal{O}(n^2 \log n)</math> ,代价是进一步增加内存需求。在多数情况下,这种方法的内存消耗太大,并不实用。 |
− | + | 除了单连接的特殊情况外,所有算法(除了时间复杂度为<math>\mathcal{O}(2^n)</math>的'''<font color="#ff8000">全局搜索 exhaustive search</font>''')都不能保证找到最优解。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | 分裂聚类全局搜索的时间复杂度为<math>\mathcal{O}(2^n)</math>,但通常使用更快的'''<font color="#ff8000">启发式 heuristics</font>'''来选择分裂,比如[[k-means]]。 | ||
+ | <br> | ||
==簇异性 Cluster dissimilarity== | ==簇异性 Cluster dissimilarity== | ||
− | + | 为了决定哪些簇应该被组合起来(用于聚合) ,或者哪些簇应该被分离(用于分裂) ,测量簇之间的'''<font color="#ff8000">相异度 dissimilarity</font>'''。在大多数层次聚类方法中,这是通过使用适当的[[度量 metric]](对两个簇之间的距离度量)和连接准则来实现的。连接标准决定了两个簇之间的距离函数。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | <br> | ||
===度量标准 Metric=== | ===度量标准 Metric=== | ||
''更多信息请查看[[度量标准 Metric]]'' | ''更多信息请查看[[度量标准 Metric]]'' | ||
− | + | 度量方式的选择将影响数据簇类的形状,因为某些元素依据一个距离可能彼此接近,而依据另一个距离可能彼此远离。例如,在一个二维空间中,点(1,0)和原点(0,0)之间的距离通常是1,但是点(1,1)和原点(0,0)之间的距离在曼哈顿距离下可以是2,在欧几里得度量下可以是 <math>\scriptstyle\sqrt{2}</math>,在最大距离下可以是1。 | |
− | |||
− | |||
− | + | 一些常用的指标如下:<ref>{{cite web | title=The DISTANCE Procedure: Proximity Measures | url=https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/statug_distance_sect016.htm | work=SAS/STAT 9.2 Users Guide | publisher= SAS Institute | date= | accessdate=2009-04-26}}</ref> | |
{|class="wikitable" | {|class="wikitable" | ||
第66行: | 第54行: | ||
|- | |- | ||
|} | |} | ||
− | |||
− | |||
− | |||
对于文本文字或其他非数字数据,常常使用[[汉明距离 Hamming distance]]或[[编辑距离 Levenshtein distance]]等度量标准。 | 对于文本文字或其他非数字数据,常常使用[[汉明距离 Hamming distance]]或[[编辑距离 Levenshtein distance]]等度量标准。 | ||
+ | 通过对数据聚类健康心理学研究的回顾发现,在该研究领域已发表的研究中,最常见的距离测量方法是欧氏距离或平方欧氏距离。{{Citation needed|date=April 2009}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | === 连接准则 Linkage criteria=== | ||
+ | 连接标准决定了集合内簇之间的距离作为两个簇之间距离的函数 | ||
Some commonly used linkage criteria between two sets of observations ''A'' and ''B'' are: | Some commonly used linkage criteria between two sets of observations ''A'' and ''B'' are: | ||
− | + | 簇''A''和簇''B''之间一些常用的连接标准如下:<ref>{{cite web | title=The CLUSTER Procedure: Clustering Methods |url=https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/statug_cluster_sect012.htm | work=SAS/STAT 9.2 Users Guide | publisher= [[SAS Institute]] | date= | accessdate=2009-04-26}}</ref><ref>{{cite journal |last=Székely |first=G. J. |last2=Rizzo |first2=M. L. |year=2005 |title=Hierarchical clustering via Joint Between-Within Distances: Extending Ward's Minimum Variance Method |journal=Journal of Classification |volume=22 |issue=2 |pages=151–183 |doi=10.1007/s00357-005-0012-9 }}</ref> | |
{|class="wikitable" | {|class="wikitable" | ||
第102行: | 第80行: | ||
| <math> \min \, \{\, d(a,b) : a \in A,\, b \in B \,\}</math> | | <math> \min \, \{\, d(a,b) : a \in A,\, b \in B \,\}</math> | ||
|- | |- | ||
− | | | + | | 未加权平均连接聚类 Unweighted average linkage clustering (或[[UPGMA]]) |
| <math> \frac{1}{|A|\cdot|B|} \sum_{a \in A }\sum_{ b \in B} d(a,b)</math> | | <math> \frac{1}{|A|\cdot|B|} \sum_{a \in A }\sum_{ b \in B} d(a,b)</math> | ||
|- | |- | ||
− | | | + | | 加权平均数连接聚类 Weighted average linkage clustering (或[[WPGMA]]) |
| <math> d(i \cup j, k) = \frac{d(i, k) + d(j, k)}{2} | | <math> d(i \cup j, k) = \frac{d(i, k) + d(j, k)}{2} | ||
|- | |- | ||
− | | | + | | 质心连接集群 Centroid linkage clustering (或UPGMC) |
| <math> \|c_s - c_t \| </math> where <math>c_s</math> and <math>c_t</math> 分别是 ''s''类和 ''t''类的中心. | | <math> \|c_s - c_t \| </math> where <math>c_s</math> and <math>c_t</math> 分别是 ''s''类和 ''t''类的中心. | ||
|- | |- | ||
第117行: | 第95行: | ||
其中 ''d'' 是选定的度量单位。其他连接准则包括: | 其中 ''d'' 是选定的度量单位。其他连接准则包括: | ||
− | * | + | * 簇内方差之和。 |
− | * | + | * 被合并的簇的方差增量([[Ward标准]])<ref name="wards method">{{cite journal|doi=10.2307/2282967|last=Ward |first=Joe H. |title=Hierarchical Grouping to Optimize an Objective Function |journal=Journal of the American Statistical Association |volume=58 |issue=301 |year=1963 |pages=236–244}}</ref>. |
− | * | + | * 候选簇从同一分布函数(V-连接 V-linkage)衍生的概率。 |
− | * | + | * [[k-最近邻 k-nearest-neighbour]]图 (KNN,图度连接)上的入度与出度的乘积<ref>{{Cite journal|last=Zhang|first=Wei|last2=Wang|first2=Xiaogang|last3=Zhao|first3=Deli|last4=Tang|first4=Xiaoou|date=2012|editor-last=Fitzgibbon|editor-first=Andrew|editor2-last=Lazebnik|editor2-first=Svetlana|editor3-last=Perona|editor3-first=Pietro|editor4-last=Sato|editor4-first=Yoichi|editor5-last=Schmid|editor5-first=Cordelia|title=Graph Degree Linkage: Agglomerative Clustering on a Directed Graph|journal=Computer Vision – ECCV 2012|series=Lecture Notes in Computer Science|language=en|publisher=Springer Berlin Heidelberg|volume=7572|pages=428–441|doi=10.1007/978-3-642-33718-5_31|isbn=9783642337185|arxiv=1208.5092|bibcode=2012arXiv1208.5092Z}} 见: https://github.com/waynezhanghk/gacluster</ref> |
− | * | + | * 在合并了两个簇之后,某个簇的定义符号(即为度量一个簇的质量而定义的一个量)的增量。<ref>Zhang, et al. "Agglomerative clustering via maximum incremental path integral." Pattern Recognition (2013).</ref><ref>Zhao, and Tang. "Cyclizing clusters via zeta function of a graph."Advances in Neural Information Processing Systems. 2008.</ref><ref>Ma, et al. "Segmentation of multivariate mixed data via lossy data coding and compression." IEEE Transactions on Pattern Analysis and Machine Intelligence, 29(9) (2007): 1546-1562.</ref> |
第134行: | 第112行: | ||
− | == | + | ==凝聚聚类实例== |
[[Image:Clusters.svg|frame|none|原始数据]] | [[Image:Clusters.svg|frame|none|原始数据]] | ||
第140行: | 第118行: | ||
例如,假设要对这些数据进行聚类,将欧式距离作为度量。系统聚类[[树状图]]如下: | 例如,假设要对这些数据进行聚类,将欧式距离作为度量。系统聚类[[树状图]]如下: | ||
+ | [[Image:Hierarchical clustering simple diagram.svg|frame|none|传统展现法]] | ||
− | |||
− | |||
Cutting the tree at a given height will give a partitioning clustering at a selected precision. In this example, cutting after the second row (from the top) of the [[dendrogram]] will yield clusters {a} {b c} {d e} {f}. Cutting after the third row will yield clusters {a} {b c} {d e f}, which is a coarser clustering, with a smaller number but larger clusters. | Cutting the tree at a given height will give a partitioning clustering at a selected precision. In this example, cutting after the second row (from the top) of the [[dendrogram]] will yield clusters {a} {b c} {d e} {f}. Cutting after the third row will yield clusters {a} {b c} {d e f}, which is a coarser clustering, with a smaller number but larger clusters. | ||
− | + | 在给定的高度切割树状图中,将以选定的精度提供分区聚类。在这个示例中,在树状图的第二行(从顶部开始)之后切割将产生类别{a} {b c} {d e} {f}。在第三行之后进行切割将产生类别{a} {b c} {d e f},这是一个较为粗略的聚类,其数量少但簇群较大。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 此方法通过逐步合并簇,从单个元素构建层次结构。在我们的示例中,有六个元素{a} {b} {c} {d} {e}和{f}。第一步是确定在集群中合并哪些元素。通常,我们希望根据选定的距离获取两个最接近的元素。 | |
− | + | 还可以选择在这个阶段构造一个[[距离矩阵 distance matrix]],其中第''i''行第''j''列中的数字是 ''i''和''j'',即为两个元素之间的距离。然后,随着聚类过程的推进,行和列随着聚类的合并和距离的更新而合并。这是实现这类聚类的常用方法,并且具有缓存簇之间的距离的优点。在[[单连接聚类 single-linkage clustering]]页面中描述了一个简单的凝聚聚类算法; 它适用于很多连接(见下文)。 | |
− | |||
− | + | 假设我们已经合并了两个最接近的元素 ''b'' 和''c'',现在我们有以下簇{''a''}, {''b'', ''c''}, {''d''}, {''e''} 和{''f''} ,并希望进一步合并它们。为此,我们需要计算{a} 和 {b c}之间的距离,从而定义两个簇之间的距离。 | |
− | |||
− | + | 通常情况下的簇<math>\mathcal{A}</math>和 簇<math>\mathcal{B}</math>之间距离如下: | |
− | * | + | * 每个簇内元素之间的最大距离(又名[[完全连接聚类 complete-linkage clustering]]) |
− | |||
::<math> \max \{\, d(x,y) : x \in \mathcal{A},\, y \in \mathcal{B}\,\}. </math> | ::<math> \max \{\, d(x,y) : x \in \mathcal{A},\, y \in \mathcal{B}\,\}. </math> | ||
− | * | + | * 每个簇内的元素之间的最小距离(也称为[[单连接聚类 single-linkage clustering]]): |
− | |||
::<math> \min \{\, d(x,y) : x \in \mathcal{A},\, y \in \mathcal{B} \,\}. </math> | ::<math> \min \{\, d(x,y) : x \in \mathcal{A},\, y \in \mathcal{B} \,\}. </math> | ||
− | * | + | * 每个簇元素之间的平均距离(也称为平均连接聚类,[[UPGMA]]): |
− | |||
::<math> {1 \over {|\mathcal{A}|\cdot|\mathcal{B}|}}\sum_{x \in \mathcal{A}}\sum_{ y \in \mathcal{B}} d(x,y). </math> | ::<math> {1 \over {|\mathcal{A}|\cdot|\mathcal{B}|}}\sum_{x \in \mathcal{A}}\sum_{ y \in \mathcal{B}} d(x,y). </math> | ||
− | * | + | * 所有簇内元素方差之和。 |
− | |||
− | |||
− | |||
− | * | + | * 被合并的簇的方差增量([[Ward标准]])<ref name="wards method"/>) |
− | |||
− | + | * 候选簇从同一分布函数(V-连接 V-linkage)衍生的概率。 | |
− | |||
+ | 在采用最小距离的情况下,随机选择一对元素,从而能够生成几个结构上不同的树状图。或者,同时连接所有绑定对,生成唯一的树状图。<ref>{{cite journal | doi=10.1007/s00357-008-9004-x | last1=Fernández | first1=Alberto | last2=Gómez | first2=Sergio | title=Solving Non-uniqueness in Agglomerative Hierarchical Clustering Using Multidendrograms | journal=Journal of Classification | volume=25 | year=2008 | issue=1 | pages=43–65| arxiv=cs/0608049 }}</ref> | ||
+ | 当簇数足够少时,人们可以停止聚类过程。有些联系也可能保证聚集发生在比先前聚集更大的聚集距离上,直到当聚集距离太远无法合并时可以停止聚集(距离标准)。然而也有例外,如采用质心连接,可能会发生逆转(反转 inversions,偏离超节拍 departures from ultrametricity)<ref>{{Cite book | last1= Legendre | first1 = P. | first2 = L. | last2=Legendre | title= Numerical Ecology | publisher=Elsevier Science BV | date=2003}}</ref>。 | ||
− | |||
− | + | == 分裂聚类 Divisive clustering == | |
+ | 分裂聚类的基本原理被公布为'''分裂分析聚类 DIvisive ANAlysis Clustering''',(DIANA)算法<ref>Kaufman, L., & Roussew, P. J. (1990). Finding Groups in Data - An Introduction to Cluster Analysis. A Wiley-Science Publication John Wiley & Sons.</ref>。最初,所有数据都位于同一个集群中,然后最大的集群被拆分,依此类推,直到每个元素都是独立的。 | ||
− | + | 由于每个聚类存在<math>O(2^n)</math>种划分方法,所以需要启发式算法。DIANA 选择平均相异度最大的对象,然后将所有对象移动到与新集群更相似的集群中。 | |
+ | ==软件== | ||
+ | ===开源工具=== | ||
− | + | [[File:Iris dendrogram.png|thumb|层次聚类[[鸢尾花数据集]]的树状图(使用R语言) [https://cran.r-project.org/web/packages/dendextend/vignettes/Cluster_Analysis.html Source] ]] | |
− | + | [[File:Orange-data-mining-hierarchical-clustering.png|thumb|[[Orange]]数据挖掘套件中的分层聚类和交互式树形图可视化]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | [[File:Orange-data-mining-hierarchical-clustering.png|thumb| | ||
* [[ALGLIB]] implements several hierarchical clustering algorithms (single-link, complete-link, Ward) in C++ and C# with O(n²) memory and O(n³) run time. | * [[ALGLIB]] implements several hierarchical clustering algorithms (single-link, complete-link, Ward) in C++ and C# with O(n²) memory and O(n³) run time. | ||
− | * [[ALGLIB]]在C++ 和 C# | + | * [[ALGLIB]]在C++ 和 C# 上以 <math>\mathcal{O}(2^n)</math> 的内存和 <math>\mathcal{O}(3^n)</math>的运行时间实现了几个层次聚类算法(单链接,完整链接,均值)。 |
* [[ELKI]] includes multiple hierarchical clustering algorithms, various linkage strategies and also includes the efficient SLINK,<ref name="SLINK" /> CLINK<ref name="CLINK" /> and Anderberg algorithms, flexible cluster extraction from dendrograms and various other [[cluster analysis]] algorithms. | * [[ELKI]] includes multiple hierarchical clustering algorithms, various linkage strategies and also includes the efficient SLINK,<ref name="SLINK" /> CLINK<ref name="CLINK" /> and Anderberg algorithms, flexible cluster extraction from dendrograms and various other [[cluster analysis]] algorithms. | ||
* [[ELKI]]包括多种层次聚类算法,各种链接策略,同时包括高效运行,<ref name="SLINK" /> CLINK<ref name="CLINK" /> 安德伯格算法,从树状图和其他各种[[聚类分析]]算法中进行灵活的聚类提取。 | * [[ELKI]]包括多种层次聚类算法,各种链接策略,同时包括高效运行,<ref name="SLINK" /> CLINK<ref name="CLINK" /> 安德伯格算法,从树状图和其他各种[[聚类分析]]算法中进行灵活的聚类提取。 | ||
第246行: | 第195行: | ||
* [[Weka (machine learning)|Weka]] 包括层次聚类分析。 | * [[Weka (machine learning)|Weka]] 包括层次聚类分析。 | ||
− | === | + | === 收费软件 === |
− | |||
* [[MathWorks|MATLAB]] 包括层次聚类分析。 | * [[MathWorks|MATLAB]] 包括层次聚类分析。 | ||
− | * [[SAS System|SAS]] | + | * [[SAS System|SAS]] PROC CLUSTER中包括层次聚类分析。 |
* [[SAS System|SAS]]包括在群聚程序中进行层次聚类分析。 | * [[SAS System|SAS]]包括在群聚程序中进行层次聚类分析。 | ||
− | * [[Mathematica]] | + | * [[Mathematica]] 包括层次聚类分析工具包。 |
− | |||
− | |||
* [[NCSS (statistical software)|NCSS]] 包括层次聚类分析。 | * [[NCSS (statistical software)|NCSS]] 包括层次聚类分析。 | ||
− | |||
* [[SPSS]]包括层次聚类分析。 | * [[SPSS]]包括层次聚类分析。 | ||
− | * [[Qlucore]] | + | * [[Qlucore]]Omits 资源管理器包括层次聚类分析。 |
− | |||
− | |||
* [[Stata]] 包括层次聚类分析。 | * [[Stata]] 包括层次聚类分析。 | ||
− | * [[CrimeStat]] | + | * [[CrimeStat]] 包括一个能够为地理位置提供图形输出的最近邻层次聚类算法。 |
− | + | ||
== 参见 == | == 参见 == | ||
− | * [[Binary space partitioning | + | * [[二进制空间划分 Binary space partitioning]] |
− | + | * [[层次包围盒 Bounding volume hierarchy]] | |
− | * [[Bounding volume hierarchy | + | * [[布朗群集 Brown clustering]] |
− | + | * [[遗传分类学 Cladistics]] | |
− | * [[Brown clustering | + | * [[聚类分析 Cluster analysis]] |
− | + | * [[计算系统发生学 Computational phylogenetics]] | |
− | * [[Cladistics | + | * [[CURE数据聚类算法 CURE data clustering algorithm]] |
− | + | * [[Dasgupta的目标]] | |
− | * [[Cluster analysis | + | * [[树状图 Dendrogram]] |
− | + | * [[确定数据集中的簇数 Determining the number of clusters in a data set]] | |
− | * [[Computational phylogenetics | + | * [[网络层次聚类 Hierarchical clustering of networks]] |
− | + | * [[局部敏感哈希(LSH)方法 Locality-sensitive hashing]] | |
− | * [[CURE data clustering algorithm | + | * [[最近邻搜索 Nearest neighbor search]] |
− | + | * [[最近邻链算法 Nearest-neighbor chain algorithm]] | |
− | * [[ | + | * [[数值分类法 Numerical taxonomy]] |
− | + | * [[OPTICS算法 OPTICS algorithm]] | |
− | * [[Dendrogram | + | * [[统计距离 Statistical distance]] |
− | + | * [[持续同调 Persistent homology]] | |
− | * [[Determining the number of clusters in a data set | ||
− | |||
− | * [[Hierarchical clustering of networks | ||
− | |||
− | * | ||
− | [[局部敏感哈希(LSH)方法]] | ||
− | * [[Nearest neighbor search | ||
− | |||
− | * [[Nearest-neighbor chain algorithm | ||
− | |||
− | * [[Numerical taxonomy | ||
− | |||
− | * [[OPTICS algorithm | ||
− | |||
− | * [[Statistical distance | ||
− | |||
− | * [[Persistent homology | ||
− | |||
== 参考文献== | == 参考文献== |
2020年10月29日 (四) 22:30的版本
此词条暂由水流心不竞翻译,未经审校,带来阅读不便,请见谅。由CecileLi初步审校。翻译评级:B
在数据挖掘和统计学中,层次聚类 Hierarchical clustering (HCA)(也被称为“层次数据聚类”)是一种通过建立一个集群层次结构来聚类分析的方法。实现层次聚类的方法通常有两种:[1]
- 凝聚聚类 Agglomerative:这是一种“自上而下又自下而上/纵向”的方法:每个被观察数据从自己的簇类中开始,当一个观察组数据向上层移动时,成对的簇类集群被合并。
- 分裂聚类 Divisive: 这是一种“自上而下”的方法:所有的被观察数据都从一个簇类集群中开始,当一个簇类向下移动时,整个观察组数据群会递归地执行分割。
一般来说,合并和分裂是基于贪心算法 greedy algorithm决定的。层次聚类的结果 [2] 通常在树状图中呈现。
层次凝聚聚类 Hierarchical agglomerative clustering(HAC)标准算法的时间复杂度为[math]\displaystyle{ \mathcal{O}(n^3) }[/math] ,并且需要 [math]\displaystyle{ \mathcal{O}(n^2) }[/math] 占用内存,这使得它对于中等数据集来说效率太低了。然而,对于某些特殊情况,已知的最有效凝聚方法(复杂度 [math]\displaystyle{ \mathcal{O}(n^2) }[/math])是: SLINK 用于单连接聚类 Single-linkage clustering[3], CLINK用于完全连接 complete-linkage clustering[4]。一般情况下的运行时可以缩减为[math]\displaystyle{ \mathcal{O}(n^2 \log n) }[/math] ,代价是进一步增加内存需求。在多数情况下,这种方法的内存消耗太大,并不实用。
除了单连接的特殊情况外,所有算法(除了时间复杂度为[math]\displaystyle{ \mathcal{O}(2^n) }[/math]的全局搜索 exhaustive search)都不能保证找到最优解。
分裂聚类全局搜索的时间复杂度为[math]\displaystyle{ \mathcal{O}(2^n) }[/math],但通常使用更快的启发式 heuristics来选择分裂,比如k-means。
簇异性 Cluster dissimilarity
为了决定哪些簇应该被组合起来(用于聚合) ,或者哪些簇应该被分离(用于分裂) ,测量簇之间的相异度 dissimilarity。在大多数层次聚类方法中,这是通过使用适当的度量 metric(对两个簇之间的距离度量)和连接准则来实现的。连接标准决定了两个簇之间的距离函数。
度量标准 Metric
更多信息请查看度量标准 Metric
度量方式的选择将影响数据簇类的形状,因为某些元素依据一个距离可能彼此接近,而依据另一个距离可能彼此远离。例如,在一个二维空间中,点(1,0)和原点(0,0)之间的距离通常是1,但是点(1,1)和原点(0,0)之间的距离在曼哈顿距离下可以是2,在欧几里得度量下可以是 [math]\displaystyle{ \scriptstyle\sqrt{2} }[/math],在最大距离下可以是1。
一些常用的指标如下:[5]
名字 | 公式 |
---|---|
欧氏距离 Euclidean distance | [math]\displaystyle{ \|a-b \|_2 = \sqrt{\sum_i (a_i-b_i)^2} }[/math] |
平方欧氏距离 Squared Euclidean distance | [math]\displaystyle{ \|a-b \|_2^2 = \sum_i (a_i-b_i)^2 }[/math] |
曼哈顿距离 Manhattan distance | [math]\displaystyle{ \|a-b \|_1 = \sum_i |a_i-b_i| }[/math] |
最大距离 Maximum distance | [math]\displaystyle{ \|a-b \|_\infty = \max_i |a_i-b_i| }[/math] |
马氏距离 Mahalanobis distance | [math]\displaystyle{ \sqrt{(a-b)^{\top}S^{-1}(a-b)} }[/math] 其中S是协方差矩阵 |
对于文本文字或其他非数字数据,常常使用汉明距离 Hamming distance或编辑距离 Levenshtein distance等度量标准。
通过对数据聚类健康心理学研究的回顾发现,在该研究领域已发表的研究中,最常见的距离测量方法是欧氏距离或平方欧氏距离。[citation needed]
连接准则 Linkage criteria
连接标准决定了集合内簇之间的距离作为两个簇之间距离的函数
Some commonly used linkage criteria between two sets of observations A and B are:
名字 | 公式 |
---|---|
最大或完全连接聚类 | [math]\displaystyle{ \max \, \{\, d(a,b) : a \in A,\, b \in B \,\} }[/math] |
最小或单连接聚类 | [math]\displaystyle{ \min \, \{\, d(a,b) : a \in A,\, b \in B \,\} }[/math] |
未加权平均连接聚类 Unweighted average linkage clustering (或UPGMA) | [math]\displaystyle{ \frac{1}{|A|\cdot|B|} \sum_{a \in A }\sum_{ b \in B} d(a,b) }[/math] |
加权平均数连接聚类 Weighted average linkage clustering (或WPGMA) | [math]\displaystyle{ d(i \cup j, k) = \frac{d(i, k) + d(j, k)}{2} |- | 质心连接集群 Centroid linkage clustering (或UPGMC) | \lt math\gt \|c_s - c_t \| }[/math] where [math]\displaystyle{ c_s }[/math] and [math]\displaystyle{ c_t }[/math] 分别是 s类和 t类的中心. |
最小能量聚类Minimum energy clustering | [math]\displaystyle{ \frac {2}{nm}\sum_{i,j=1}^{n,m} \|a_i- b_j\|_2 - \frac {1}{n^2}\sum_{i,j=1}^{n} \|a_i-a_j\|_2 - \frac{1}{m^2}\sum_{i,j=1}^{m} \|b_i-b_j\|_2 }[/math] |
其中 d 是选定的度量单位。其他连接准则包括:
- 簇内方差之和。
- 候选簇从同一分布函数(V-连接 V-linkage)衍生的概率。
- k-最近邻 k-nearest-neighbour图 (KNN,图度连接)上的入度与出度的乘积[9]
讨论
层次聚类具有明显的优势,它可以使用任何有效的距离度量。事实上,观测本身也并不是必需的,层次聚类所需要用的只是一个距离矩阵。
凝聚聚类实例
例如,假设要对这些数据进行聚类,将欧式距离作为度量。系统聚类树状图如下:
Cutting the tree at a given height will give a partitioning clustering at a selected precision. In this example, cutting after the second row (from the top) of the dendrogram will yield clusters {a} {b c} {d e} {f}. Cutting after the third row will yield clusters {a} {b c} {d e f}, which is a coarser clustering, with a smaller number but larger clusters.
在给定的高度切割树状图中,将以选定的精度提供分区聚类。在这个示例中,在树状图的第二行(从顶部开始)之后切割将产生类别{a} {b c} {d e} {f}。在第三行之后进行切割将产生类别{a} {b c} {d e f},这是一个较为粗略的聚类,其数量少但簇群较大。
此方法通过逐步合并簇,从单个元素构建层次结构。在我们的示例中,有六个元素{a} {b} {c} {d} {e}和{f}。第一步是确定在集群中合并哪些元素。通常,我们希望根据选定的距离获取两个最接近的元素。
还可以选择在这个阶段构造一个距离矩阵 distance matrix,其中第i行第j列中的数字是 i和j,即为两个元素之间的距离。然后,随着聚类过程的推进,行和列随着聚类的合并和距离的更新而合并。这是实现这类聚类的常用方法,并且具有缓存簇之间的距离的优点。在单连接聚类 single-linkage clustering页面中描述了一个简单的凝聚聚类算法; 它适用于很多连接(见下文)。
假设我们已经合并了两个最接近的元素 b 和c,现在我们有以下簇{a}, {b, c}, {d}, {e} 和{f} ,并希望进一步合并它们。为此,我们需要计算{a} 和 {b c}之间的距离,从而定义两个簇之间的距离。
通常情况下的簇[math]\displaystyle{ \mathcal{A} }[/math]和 簇[math]\displaystyle{ \mathcal{B} }[/math]之间距离如下:
- 每个簇内元素之间的最大距离(又名完全连接聚类 complete-linkage clustering)
- [math]\displaystyle{ \max \{\, d(x,y) : x \in \mathcal{A},\, y \in \mathcal{B}\,\}. }[/math]
- 每个簇内的元素之间的最小距离(也称为单连接聚类 single-linkage clustering):
- [math]\displaystyle{ \min \{\, d(x,y) : x \in \mathcal{A},\, y \in \mathcal{B} \,\}. }[/math]
- 每个簇元素之间的平均距离(也称为平均连接聚类,UPGMA):
- [math]\displaystyle{ {1 \over {|\mathcal{A}|\cdot|\mathcal{B}|}}\sum_{x \in \mathcal{A}}\sum_{ y \in \mathcal{B}} d(x,y). }[/math]
- 所有簇内元素方差之和。
- 候选簇从同一分布函数(V-连接 V-linkage)衍生的概率。
在采用最小距离的情况下,随机选择一对元素,从而能够生成几个结构上不同的树状图。或者,同时连接所有绑定对,生成唯一的树状图。[13]
当簇数足够少时,人们可以停止聚类过程。有些联系也可能保证聚集发生在比先前聚集更大的聚集距离上,直到当聚集距离太远无法合并时可以停止聚集(距离标准)。然而也有例外,如采用质心连接,可能会发生逆转(反转 inversions,偏离超节拍 departures from ultrametricity)[14]。
分裂聚类 Divisive clustering
分裂聚类的基本原理被公布为分裂分析聚类 DIvisive ANAlysis Clustering,(DIANA)算法[15]。最初,所有数据都位于同一个集群中,然后最大的集群被拆分,依此类推,直到每个元素都是独立的。
由于每个聚类存在[math]\displaystyle{ O(2^n) }[/math]种划分方法,所以需要启发式算法。DIANA 选择平均相异度最大的对象,然后将所有对象移动到与新集群更相似的集群中。
软件
开源工具
- ALGLIB implements several hierarchical clustering algorithms (single-link, complete-link, Ward) in C++ and C# with O(n²) memory and O(n³) run time.
- ALGLIB在C++ 和 C# 上以 [math]\displaystyle{ \mathcal{O}(2^n) }[/math] 的内存和 [math]\displaystyle{ \mathcal{O}(3^n) }[/math]的运行时间实现了几个层次聚类算法(单链接,完整链接,均值)。
- ELKI includes multiple hierarchical clustering algorithms, various linkage strategies and also includes the efficient SLINK,[3] CLINK[4] and Anderberg algorithms, flexible cluster extraction from dendrograms and various other cluster analysis algorithms.
- ELKI包括多种层次聚类算法,各种链接策略,同时包括高效运行,[3] CLINK[4] 安德伯格算法,从树状图和其他各种聚类分析算法中进行灵活的聚类提取。
- Octave, the GNU analog to MATLAB implements hierarchical clustering in function "linkage".
- Octave,与MATLAB类似的GNU在“联动”功能中实现了分层聚类。
- Orange, a data mining software suite, includes hierarchical clustering with interactive dendrogram visualisation.
- Orange,一个数据挖掘软件套件,包括层次聚类和交互式可视化树形图。
- R has many packages that provide functions for hierarchical clustering.
- R 有许多提供分层聚类功能的工具包。
- SciPy implements hierarchical clustering in Python, including the efficient SLINK algorithm.
- SciPy在python中实现分层聚类,包括高效的slink算法。
- scikit-learn also implements hierarchical clustering in Python.
- scikit-learn还实现了Python中的层次聚类。
- Weka includes hierarchical cluster analysis.
- Weka 包括层次聚类分析。
收费软件
- MATLAB 包括层次聚类分析。
- SAS PROC CLUSTER中包括层次聚类分析。
- SAS包括在群聚程序中进行层次聚类分析。
- Mathematica 包括层次聚类分析工具包。
- NCSS 包括层次聚类分析。
- SPSS包括层次聚类分析。
- QlucoreOmits 资源管理器包括层次聚类分析。
- Stata 包括层次聚类分析。
- CrimeStat 包括一个能够为地理位置提供图形输出的最近邻层次聚类算法。
参见
- 二进制空间划分 Binary space partitioning
- 层次包围盒 Bounding volume hierarchy
- 布朗群集 Brown clustering
- 遗传分类学 Cladistics
- 聚类分析 Cluster analysis
- 计算系统发生学 Computational phylogenetics
- CURE数据聚类算法 CURE data clustering algorithm
- Dasgupta的目标
- 树状图 Dendrogram
- 确定数据集中的簇数 Determining the number of clusters in a data set
- 网络层次聚类 Hierarchical clustering of networks
- 局部敏感哈希(LSH)方法 Locality-sensitive hashing
- 最近邻搜索 Nearest neighbor search
- 最近邻链算法 Nearest-neighbor chain algorithm
- 数值分类法 Numerical taxonomy
- OPTICS算法 OPTICS algorithm
- 统计距离 Statistical distance
- 持续同调 Persistent homology
参考文献
- ↑ Rokach, Lior, and Oded Maimon. "Clustering methods." Data mining and knowledge discovery handbook. Springer US, 2005. 321-352.
- ↑ Frank Nielsen (2016). "Chapter 8: Hierarchical Clustering". Introduction to HPC with MPI for Data Science. Springer. https://www.researchgate.net/publication/314700681.
- ↑ 3.0 3.1 3.2 R. Sibson (1973). "SLINK: an optimally efficient algorithm for the single-link cluster method" (PDF). The Computer Journal. British Computer Society. 16 (1): 30–34. doi:10.1093/comjnl/16.1.30.
- ↑ 4.0 4.1 4.2 D. Defays (1977). "An efficient algorithm for a complete-link method". The Computer Journal. British Computer Society. 20 (4): 364–366. doi:10.1093/comjnl/20.4.364.
- ↑ "The DISTANCE Procedure: Proximity Measures". SAS/STAT 9.2 Users Guide. SAS Institute. Retrieved 2009-04-26.
- ↑ "The CLUSTER Procedure: Clustering Methods". SAS/STAT 9.2 Users Guide. SAS Institute. Retrieved 2009-04-26.
- ↑ Székely, G. J.; Rizzo, M. L. (2005). "Hierarchical clustering via Joint Between-Within Distances: Extending Ward's Minimum Variance Method". Journal of Classification. 22 (2): 151–183. doi:10.1007/s00357-005-0012-9.
- ↑ 8.0 8.1 Ward, Joe H. (1963). "Hierarchical Grouping to Optimize an Objective Function". Journal of the American Statistical Association. 58 (301): 236–244. doi:10.2307/2282967.
- ↑ Zhang, Wei; Wang, Xiaogang; Zhao, Deli; Tang, Xiaoou (2012). Fitzgibbon, Andrew; Lazebnik, Svetlana; Perona, Pietro; Sato, Yoichi; Schmid, Cordelia (eds.). "Graph Degree Linkage: Agglomerative Clustering on a Directed Graph". Computer Vision – ECCV 2012. Lecture Notes in Computer Science (in English). Springer Berlin Heidelberg. 7572: 428–441. arXiv:1208.5092. Bibcode:2012arXiv1208.5092Z. doi:10.1007/978-3-642-33718-5_31. ISBN 9783642337185. 见: https://github.com/waynezhanghk/gacluster
- ↑ Zhang, et al. "Agglomerative clustering via maximum incremental path integral." Pattern Recognition (2013).
- ↑ Zhao, and Tang. "Cyclizing clusters via zeta function of a graph."Advances in Neural Information Processing Systems. 2008.
- ↑ Ma, et al. "Segmentation of multivariate mixed data via lossy data coding and compression." IEEE Transactions on Pattern Analysis and Machine Intelligence, 29(9) (2007): 1546-1562.
- ↑ Fernández, Alberto; Gómez, Sergio (2008). "Solving Non-uniqueness in Agglomerative Hierarchical Clustering Using Multidendrograms". Journal of Classification. 25 (1): 43–65. arXiv:cs/0608049. doi:10.1007/s00357-008-9004-x.
- ↑ Legendre, P.; Legendre, L. (2003). Numerical Ecology. Elsevier Science BV.
- ↑ Kaufman, L., & Roussew, P. J. (1990). Finding Groups in Data - An Introduction to Cluster Analysis. A Wiley-Science Publication John Wiley & Sons.
进一步阅读
- Kaufman, L.; Rousseeuw, P.J. (1990). Finding Groups in Data: An Introduction to Cluster Analysis (1 ed.). New York: John Wiley. ISBN 0-471-87876-6. https://archive.org/details/findinggroupsind00kauf.
- Hastie, Trevor; Tibshirani, Robert; Friedman, Jerome (2009). "14.3.12 Hierarchical clustering". The Elements of Statistical Learning (2nd ed.). New York: Springer. pp. 520–528. ISBN 978-0-387-84857-0. Archived from the original on 2009-11-10. http://www-stat.stanford.edu/~tibs/ElemStatLearn/. Retrieved 2009-10-20.