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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。