4

我是初学者,我正在尝试使用 package.json 对具有 2 个特征(x,y)的数据框(包含 50,000 条记录)进行聚类mclust。然而,运行一个命令(例如Mclust(XXX.df)densityMclust(XXX.df).

有什么方法可以更快地执行命令?示例代码会有所帮助。

对于您的信息,我使用的是 4 核处理器和 6GB RAM,我花了大约 15 分钟左右使用 Weka 进行相同的分析(聚类),使用 R 进程仍然运行超过 1.5 小时。我真的很想使用 R 进行分析。

4

1 回答 1

13

使用时处理大型数据集在技术报告的 11.1 小节中进行mclust了描述。

简而言之,功能MclustmclustBIC包括在应用于完整数据集之前在层次聚类阶段使用数据子样本的规定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 分钟才能完成。

于 2013-01-15T13:25:40.780 回答