3

非常に長い距離のセットでfastclustを実行しようとしていますが、問題が発生しています。

私は非常に大きなcsvファイル(約9,100万行なので、Rではforループに時間がかかりすぎる)を持っています。これは、data.frameに読み込んだときに次のようになります。

> df   
kwd1 kwd2 similarity  
a  b  1  
b  a  1  
c  a  2  
a  c  2 

これはスパースリストであり、sparseMatrix()を使用してスパース行列に変換できます。

> myMatrix 
  a b c  
a . . .
b 1 . .
c 2 . .

ただし、as.dist()を使用してdistオブジェクトに変換しようとすると、Rから「問題が大きすぎます」というエラーが表示されます。ここで他のdistの質問を読みましたが、他の人が提案したコード上記のサンプルデータセットでは機能しません。

助けてくれてありがとう!

4

1 に答える 1

3

そもそもスパース行列を使用するのは良い考えのように思えますが、そのアプローチには少し問題があると思います。欠落している距離は0sではなくsとしてコード化されます(スパース行列の作成(およびアクセス)をNA参照)。 NAのデフォルトエントリを使用)。ご存知のように、クラスタリングの場合、非類似度がゼロの場合は、欠落しているものとはまったく異なる意味になります...

とにかく、必要なのは、NA欠落している非類似性のための多くのsを持つdistオブジェクトです。残念ながら、問題が非常に大きいため、メモリが多すぎます。

d <- dist(x = rep(NA_integer_, 50000))
# Error: cannot allocate vector of size 9.3 Gb

そして、それは入力を処理するだけです...大量のメモリを備えた64ビットマシンでも、クラスタリングアルゴリズム自体が無期限にチョークしたり実行されたりしないかどうかはわかりません。

問題を細かく分割することを検討する必要があります。

于 2012-09-13T02:47:25.513 に答える