当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R hclust 层次聚类


R语言 hclust 位于 stats 包(package)。

说明

对一组差异性的层次聚类分析及其分析方法。

用法

hclust(d, method = "complete", members = NULL)

## S3 method for class 'hclust'
plot(x, labels = NULL, hang = 0.1, check = TRUE,
     axes = TRUE, frame.plot = FALSE, ann = TRUE,
     main = "Cluster Dendrogram",
     sub = NULL, xlab = NULL, ylab = "Height", ...)

参数

d

dist 生成的相异结构。

method

要使用的聚集方法。这应该是 "ward.D""ward.D2""single""complete""average" (= UPGMA)、"mcquitty" (= WPGMA)、"median" (= WPGMC) 之一(的明确缩写) )或"centroid"(= UPGMC)。

members

NULL 或长度大小为 d 的向量。请参阅“详细信息”部分。

x

hclust 生成的类型的对象。

hang

标签应悬挂在绘图其余部分下方的绘图高度的分数。负值将导致标签从 0 开始下垂。

check

逻辑表明如果x应检查对象的有效性。当以下情况时不需要此检查x已知是有效的,例如当它是以下的直接结果时hclust().默认是check=TRUE,因为无效输入可能会崩溃R由于内部 C 绘图代码中的内存违规。

labels

树叶标签的字符向量。默认情况下使用原始数据的行名称或行号。如果 labels = FALSE 则根本不绘制任何标签。

axes, frame.plot, ann

逻辑标志如 plot.default

main, sub, xlab, ylab

title 的字符串。当存在 tree$call 时,subxlab 具有非 NULL 默认值。

...

进一步的图形论证。例如, cex 以与 text 相同的方式控制标签的大小(如果绘制)。

细节

此函数使用正在聚类的 对象的一组不同点来执行层次聚类分析。最初,每个对象都被分配到自己的簇,然后算法迭代地进行,在每个阶段加入两个最相似的簇,一直持续到只剩下一个簇为止。在每个阶段,根据所使用的特定聚类方法,通过Lance-Williams相异性更新公式重新计算聚类之间的距离。

提供了多种不同的聚类方法。 Ward 的最小方差方法旨在寻找紧凑的球形簇。完全链接方法发现相似的簇。单链接方法(与最小生成树密切相关)采用“朋友的朋友”聚类策略。其他方法可以被视为针对具有介于单链接方法和完全链接方法之间的特征的聚类。但请注意,方法 "median""centroid" 不会导致单调距离测量,或者等效地,生成的树状图可能具有难以解释的所谓反转或反转,但请注意 Legendre 和 Legendre (2012) 中的三分法。

在 Ward 聚类文献中发现了两种不同的算法。选项使用的那个"ward.D"(相当于唯一的病房选项"ward"R版本 3.0.3)才不是实施 Ward (1963) 聚类标准,而选项"ward.D2"实施该标准(Murtagh 和 Legendre 2014)。对于后者,不同之处在于平方集群更新之前。注意agnes(*, method="ward")对应于hclust(*, "ward.D2").

如果 members != NULL ,则 d 被视为簇之间的相异矩阵,而不是单例之间的相异矩阵,并且 members 给出每个簇的观测值数量。这样,层次聚类算法可以“从树状图的中间开始”,例如,为了重建树的切口上方的部分(参见示例)。仅对于有限数量的距离/链接组合,可以有效地计算簇之间的差异(即,无需 hclust 本身),最简单的组合是平方欧几里德距离和质心链接。在这种情况下,聚类之间的差异是聚类均值之间的欧氏距离的平方。

在分层集群显示中,每次合并时都需要做出决定,以指定哪个子树应位于左侧,哪个子树应位于右侧。由于对于 观察存在 合并,因此聚类树或树状图中的叶子有 可能的排序。 hclust 中使用的算法是对子树进行排序,以便更紧密的簇位于左侧(左子树的最后一次(即最近一次)合并的值低于右子树的最后一次合并的值)。单个观测值是可能的最紧密的簇,并且涉及两个观测值的合并按观测序列号将它们按顺序排列。

hclust 类的对象,说明聚类过程生成的树。该对象是一个包含组件的列表:

merge

x 2 矩阵。 merge的行 说明了聚类步骤 处的聚类合并。如果该行中的元素 为负,则在此阶段合并观察值 。如果 为正,则合并是在算法的(较早)阶段 形成的簇。因此merge中的负条目表示单例的聚集,正条目表示非单例的聚集。

height

一组 实值(超度量树非递减)。聚类高度:即,与特定聚集的聚类method相关的标准值。

order

给出适合绘图的原始观察值的排列的向量,从某种意义上说,使用此排序和矩阵 merge 的聚类图不会有分支交叉。

labels

每个被聚类的对象的标签。

call

产生结果的调用。

method

已使用的聚类方法。

dist.method

用于创建 d 的距离(仅当距离对象具有 "method" 属性时才返回)。

hclust 对象有 printplotidentify (请参阅 identify.hclust )方法和 rect.hclust() 函数。

注意

方法 "centroid" 通常与平方欧几里得距离一起使用。

例子

require(graphics)

### Example 1: Violent crime rates by US state

hc <- hclust(dist(USArrests), "ave")
plot(hc)
plot(hc, hang = -1)

## Do the same with centroid clustering and *squared* Euclidean distance,
## cut the tree into ten clusters and reconstruct the upper part of the
## tree from the cluster centers.
hc <- hclust(dist(USArrests)^2, "cen")
memb <- cutree(hc, k = 10)
cent <- NULL
for(k in 1:10){
  cent <- rbind(cent, colMeans(USArrests[memb == k, , drop = FALSE]))
}
hc1 <- hclust(dist(cent)^2, method = "cen", members = table(memb))
opar <- par(mfrow = c(1, 2))
plot(hc,  labels = FALSE, hang = -1, main = "Original Tree")
plot(hc1, labels = FALSE, hang = -1, main = "Re-start from 10 clusters")
par(opar)

### Example 2: Straight-line distances among 10 US cities
##  Compare the results of algorithms "ward.D" and "ward.D2"

mds2 <- -cmdscale(UScitiesD)
plot(mds2, type="n", axes=FALSE, ann=FALSE)
text(mds2, labels=rownames(mds2), xpd = NA)

hcity.D  <- hclust(UScitiesD, "ward.D") # "wrong"
hcity.D2 <- hclust(UScitiesD, "ward.D2")
opar <- par(mfrow = c(1, 2))
plot(hcity.D,  hang=-1)
plot(hcity.D2, hang=-1)
par(opar)

作者

The hclust function is based on Fortran code contributed to STATLIB by F. Murtagh.

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988). The New S Language. Wadsworth & Brooks/Cole. (S version.)

Everitt, B. (1974). Cluster Analysis. London: Heinemann Educ. Books.

Hartigan, J.A. (1975). Clustering Algorithms. New York: Wiley.

Sneath, P. H. A. and R. R. Sokal (1973). Numerical Taxonomy. San Francisco: Freeman.

Anderberg, M. R. (1973). Cluster Analysis for Applications. Academic Press: New York.

Gordon, A. D. (1999). Classification. Second Edition. London: Chapman and Hall / CRC

Murtagh, F. (1985). “Multidimensional Clustering Algorithms”, in COMPSTAT Lectures 4. Wuerzburg: Physica-Verlag (for algorithmic details of algorithms used).

McQuitty, L.L. (1966). Similarity Analysis by Reciprocal Pairs for Discrete and Continuous Data. Educational and Psychological Measurement, 26, 825-831. doi:10.1177/001316446602600402.

Legendre, P. and L. Legendre (2012). Numerical Ecology, 3rd English ed. Amsterdam: Elsevier Science BV.

Murtagh, Fionn and Legendre, Pierre (2014). Ward's hierarchical agglomerative clustering method: which algorithms implement Ward's criterion? Journal of Classification, 31, 274-295. doi:10.1007/s00357-014-9161-z.

也可以看看

identify.hclustrect.hclustcutreedendrogramkmeans

有关 Lance-Williams 公式和一般应用它的方法,请参阅 cluster 包中的 agnes

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Hierarchical Clustering。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。