使用时处理大型数据集在技术报告的 11.1 小节中进行mclust
了描述。
简而言之,功能Mclust
并mclustBIC
包括在应用于完整数据集之前在层次聚类阶段使用数据子样本的规定EM
,以便将该方法扩展到更大的数据集。
通用示例:
library(mclust)
set.seed(1)
##
## Data generation
##
N <- 5e3
df <- data.frame(x=rnorm(N)+ifelse(runif(N)>0.5,5,0), y=rnorm(N,10,5))
##
## Full set
##
system.time(res <- Mclust(df))
# > user system elapsed
# > 66.432 0.124 67.439
##
## Subset for initial stage
##
M <- 1e3
system.time(res <- Mclust(df, initialization=list(subset=sample(1:nrow(df), size=M))))
# > user system elapsed
# > 19.513 0.020 19.546
“Subsetted”版本在我的双核上运行速度大约快 3.5 倍(尽管Mclust
只使用单核)。
何时N<-5e4
(如您的示例中),M<-1e3
带有子集的版本大约需要 3.5 分钟才能完成。