4

mclustパッケージを使用して、2 つの機能 (x、y) を持つデータ フレーム (50,000 レコード) をクラスター化しようとしています。ただし、コマンドを実行するのは永遠のように感じます (例:Mclust(XXX.df)またはdensityMclust(XXX.df).

コマンドをより速く実行する方法はありますか? サンプルコードが役立ちます。

参考までに、6 GB RAM の 4 コア プロセッサを使用しています。Weka で同じ分析 (クラスタリング) を行うのに約 15 分かかりました。R を使用すると、プロセスはまだ 1.5 時間以上実行されています。私は本当に分析にRを使いたいと思っています。

4

1 に答える 1

13

使用中の大規模なデータセットの処理については、テクニカルレポートのサブセクション11.1でmclust説明されています。

簡単に言うと、メソッドをより大きなデータセットに拡張するために、完全なデータセットに適用する前に、階層的クラスタリングフェーズでデータのサブサンプルを使用するための機能Mclustとプロビジョニングが含まれています。mclustBICEM

一般的な例:

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

「サブセット化」バージョンは、デュアルコアで約3.5倍高速に実行されます(ただし、Mclustシングルコアのみを使用します)。

(あなたN<-5e4の例のように)M<-1e3サブセットを含むバージョンが完了するまでに約3.5分かかりました。

于 2013-01-15T13:25:40.780 に答える