2

I'm new to R. I'm trying to run hclust() on about 50K items. I have 10 columns to compare and 50K rows of data. When I tried assigning the distance matrix, I get: "Cannot allocate vector of 5GB".

Is there a size limit to this? If so, how do I go about doing a cluster of something this large?

EDIT

I ended up increasing the max.limit and increased the machine's memory to 8GB and that seems to have fixed it.

4

2 に答える 2

5

従来の階層的クラスタリング アプローチはO(n^3)、実行時およびO(n^2)メモリの複雑さの中にあります。そうです、彼らは大規模なデータセットに信じられないほど悪いスケールをします。明らかに、距離行列の実体化を必要とするものはすべて、O(n^2)またはそれ以上のものです。

で実行される SLINK や CLINK などの階層的クラスタリングの特殊化がいくつかあることに注意してください。実装によっては、メモリO(n^2)のみが必要な場合もあります。O(n)

より最新のクラスタリング アルゴリズムを調べることができます。で実行されるO(n log n)か、それよりも優れているものはすべてうまくいくはずです。階層的クラスタリングを使用しない十分な理由があります。通常、ノイズに敏感であり (つまり、外れ値をどう処理すればよいかわかりません)、大きなデータ セットの結果を解釈するのが困難です (樹形図は優れていますが、小さなデータセットのみ)。

于 2012-10-26T06:41:10.087 に答える
3

サイズ制限はハードウェアとソフトウェアによって設定されており、詳細を説明するのに十分な詳細が提供されていません. 十分なリソースを備えたマシンでは、このエラーは発生しません。プールの奥深くに飛び込む前に、10% のサンプルを試してみませんか? おそらく次から始めます:

reduced <- full[ sample(1:nrow(full), nrow(full)/10 ) , ]
于 2012-10-25T22:03:31.210 に答える