簡體   English   中英

使用dtwclust軟件包評估時間序列聚類中的最佳聚類“ k”數

[英]Evaluate the optimum number of clusters “k” in time-series clustering using dtwclust package

我使用以下tsclust語句對數據進行聚類

SURFSKINTEMP_CLUST <- tsclust(SURFSKINTEMP, k = 10L:20L,
                       distance = "dtw_basic", centroid = "dba",
                       trace = TRUE, seed = 938,
                       norm = "L2", window.size = 2L,
                       args = tsclust_args(cent = list(trace = TRUE)))

SURFSKINTEMP非常大,

str(SURFSKINTEMP)
List of 327239
 $ V1     : num [1:7] 0.13 0.631 -0.178 0.731 0.86 ...
 $ V2     : num [1:6] 0.117 -0.693 -0.911 -0.911 -0.781 ...
 $ V3     : num [1:7] 0.117 -0.693 -0.911 -0.911 -0.781 ...
 $ V4     : num [1:6] -0.693 -0.911 -0.911 -0.781 -0.604 ...

然后,我想使用cvi評估最佳群集數“ k”

names(SURFSKINTEMP_CLUST) <- paste0("k_",10L:20L)
sapply(SURFSKINTEMP_CLUST, cvi, type = "internal")

但是,有一個錯誤

> sapply(SURFSKINTEMP_CLUST, cvi, type = "internal")
Error: cannot allocate vector of size 797.8 Gb

在我的情況下,如何評估最佳群集數“ k”?

錯誤消息表明您正在嘗試攪動更多數據,而可用資源將無法支持。 在這種情況下,請嘗試在較小的樣本上進行分析。 重復分析多次。

reps = 1000
samp_size = 10000
result <- c()
for(j in 1:reps){
    sample = SURFSKINTEMP[sample(seq_along(SURFSKINTEMP, samp_size)),]
    sample_clust <- tsclust(SURFSKINTEMP, k = 10L:20L,
                   distance = "dtw_basic", centroid = "dba",
                   trace = TRUE, seed = 938,
                   norm = "L2", window.size = 2L,
                   args = tsclust_args(cent = list(trace = TRUE)))

    result[j] <- sapply(sample_clust, cvi, type = "internal")

}

提供您可以檢查的結果列表。

指定type = "internal"將嘗試計算7個索引:Silhouette,Dunn,COP,DB,DB *,CH和SF。 cvi文檔中所述,前3個將嘗試計算整個交叉距離矩陣,在您的情況下為327,239 x 327,239矩陣; 您將很難找到一台可以分配這些資源的計算機,並且計算將花費很長時間

由於您將DBA用於質心,因此可以查看DB或DB *對您的應用程序是否有意義

sapply(SURFSKINTEMP_CLUST, cvi, type = c("DB", "DBstar"))

考慮到您可以使用以下方法計算平方誤差之和(SSE),因此您還可以考慮一下TSClusters-class簡單的彎頭方法 (請參閱TSClusters-class文檔):

sapply(SURFSKINTEMP_CLUST, function(cl) { sum(cl@cldist ^ 2) })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM