clara
位于 cluster
包(package)。 说明
计算 "clara"
对象,list
表示数据聚类为 k
簇。
用法
clara(x, k, metric = c("euclidean", "manhattan", "jaccard"),
stand = FALSE, cluster.only = FALSE, samples = 5,
sampsize = min(n, 40 + 2 * k), trace = 0, medoids.x = TRUE,
keep.data = medoids.x, rngR = FALSE, pamLike = FALSE, correct.d = TRUE)
参数
x |
数据矩阵或 DataFrame ,每行对应一个观察值,每列对应一个变量。所有变量都必须是数字。允许缺失值 (NA)。 |
k |
整数,簇的数量。需要 |
metric |
字符串,指定用于计算观测值之间差异的度量。当前可用的选项有"euclidean"、"manhattan" 和"jaccard"。 欧几里得距离是差值的平方根,曼哈顿距离是绝对差值之和。 |
stand |
逻辑,指示在计算差异之前 |
cluster.only |
逻辑性;如果为 true,则仅计算并返回聚类,请参阅详细信息。 |
samples |
整数,比如说 |
sampsize |
整数,例如 |
trace |
指示算法期间诊断输出的跟踪级别的整数。 |
medoids.x |
逻辑指示是否应返回中心值,与输入数据 |
keep.data |
逻辑指示是否应将数据(如果 |
rngR |
逻辑表明如果R应该使用 的随机数生成器而不是原始的 clara() 内置随机数生成器。如果为真,这也意味着每次调用 |
pamLike |
逻辑指示 “swap” 阶段(请参阅 C 代码中的 |
correct.d |
逻辑或整数表示:仅在 由于新的正确公式暂时不向后兼容,因此在这种情况下会发出警告信号,除非用户明确指定 |
细节
clara
在 Kaufman 和 Rousseuw (1990) 的第 3 章中有完整说明。与pam
等其他分区方法相比,它可以处理更大的数据集。在内部,这是通过考虑固定大小 (sampsize
) 的 sub-datasets 来实现的,这样时间和存储要求在 中变为线性而不是二次。
每个sub-dataset被划分为k
使用与中相同的算法进行聚类pam
.
一次k
从sub-dataset中选择了代表性对象,整个数据集的每个观测值都分配给最近的中心点。
观测值与其最接近中心点的差异的平均值(相当于总和)用作聚类质量的度量。平均值(或总和)最小的sub-dataset 被保留。对最终分区进行进一步分析。
在此之前,每个sub-dataset都被迫包含从最佳sub-dataset获得的中心点。随机抽取的观察结果将添加到该集合中,直到达到sampsize
。
什么时候cluster.only
为 true,结果只是一个指定聚类的(可能已命名的)整数向量,即
clara(x,k, cluster.only=TRUE)
是相同的
clara(x,k)$clustering
但计算效率更高。
值
如果 cluster.only
为 false(默认情况下),则表示聚类的类 "clara"
的对象。有关详细信息,请参阅clara.object
。
如果 cluster.only
为 true,则结果为 "clustering",即长度为 的整数向量,其中包含来自 1:k
的条目。
注意
默认情况下,随机采样是通过非常简单方案(带句点R的随机数生成,事实上,是确定性的。或者,我们建议设置rngR = TRUE
它使用R的随机数生成器。然后,clara()
通常通过使用使结果可重复set.seed()
调用之前clara
.
clara
计算(对于小型 k
)的存储要求约为 ,其中 和 。 CPU 计算时间(再次假设 k
较小)约为 ,其中 。
对于“small”数据集,可以直接使用pam
函数。可以认为很小的东西实际上是可用计算能力(内存(RAM)和速度)的函数。最初(1990 年),“small” 表示观测值少于 100 个; 1997 年,作者说“小(比如少于 200 个观察值)”;截至 2006 年,您可以使用 pam
进行数千个观察。
例子
## generate 500 objects, divided into 2 clusters.
x <- rbind(cbind(rnorm(200,0,8), rnorm(200,0,8)),
cbind(rnorm(300,50,8), rnorm(300,50,8)))
clarax <- clara(x, 2, samples=50)
clarax
clarax$clusinfo
## using pamLike=TRUE gives the same (apart from the 'call'):
all.equal(clarax[-8],
clara(x, 2, samples=50, pamLike = TRUE)[-8])
plot(clarax)
## cluster.only = TRUE -- save some memory/time :
clclus <- clara(x, 2, samples=50, cluster.only = TRUE)
stopifnot(identical(clclus, clarax$clustering))
## 'xclara' is an artificial data set with 3 clusters of 1000 bivariate
## objects each.
data(xclara)
(clx3 <- clara(xclara, 3))
## "better" number of samples
cl.3 <- clara(xclara, 3, samples=100)
## but that did not change the result here:
stopifnot(cl.3$clustering == clx3$clustering)
## Plot similar to Figure 5 in Struyf et al (1996)
## Not run: plot(clx3, ask = TRUE)
## Try 100 times *different* random samples -- for reliability:
nSim <- 100
nCl <- 3 # = no.classes
set.seed(421)# (reproducibility)
cl <- matrix(NA,nrow(xclara), nSim)
for(i in 1:nSim)
cl[,i] <- clara(xclara, nCl, medoids.x = FALSE, rngR = TRUE)$cluster
tcl <- apply(cl,1, tabulate, nbins = nCl)
## those that are not always in same cluster (5 out of 3000 for this seed):
(iDoubt <- which(apply(tcl,2, function(n) all(n < nSim))))
if(length(iDoubt)) { # (not for all seeds)
tabD <- tcl[,iDoubt, drop=FALSE]
dimnames(tabD) <- list(cluster = paste(1:nCl), obs = format(iDoubt))
t(tabD) # how many times in which clusters
}
作者
Kaufman and Rousseeuw (see agnes
), originally.
Metric "jaccard"
: Kamil Kozlowski (@ownedoutcomes.com
)
and Kamil Jadeszko.
All arguments from trace
on, and most R documentation and all
tests by Martin Maechler.
也可以看看
agnes
用于背景和参考; clara.object
、pam
、partition.object
、plot.partition
。
相关用法
- R clusplot (分区对象的)双变量聚类图
- R clusGap 用于估计聚类数量的间隙统计
- R clusplot.default 双变量聚类图 (clusplot) 默认方法
- R chorSub Kola 数据 C 范围的子集
- R coef.hclust “hclust”对象的凝聚/分裂系数
- R summary.clara “clara”对象的摘要方法
- R diana 分裂分析聚类
- R pluton 钚同位素成分批次
- R votes.repub 总统选举中共和党候选人的投票
- R agnes 凝聚嵌套(层次聚类)
- R print.mona MONA 对象的打印方法
- R print.clara CLARA 对象的打印方法
- R mona 二元变量的单论分析聚类
- R plot.diana 分裂层次聚类图
- R plot.mona 一元分裂层次聚类的旗帜
- R bannerplot 绘图横幅(层次聚类)
- R plot.partition 数据集分区图
- R summary.agnes “agnes”对象的摘要方法
- R pltree 绘制层次聚类的聚类树
- R summary.mona “mona”对象的摘要方法
- R plantTraits 植物物种性状数据
- R plot.agnes 凝聚层次聚类图
- R print.agnes AGNES 对象的打印方法
- R pam 围绕 Medoid 进行分区
- R volume.ellipsoid 计算(椭球体的)体积
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Clustering Large Applications。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。