Rでのビッグデータのクラスター化とサンプリングの関連性


13

私はデータサイエンスの初心者であり、Rに200,000行と50列のデータセットでクラスターを見つけるのに問題があります。

データには数値変数と名義変数の両方があるため、ユークリッド距離測定を使用するK-meansなどの方法は適切な選択のようには見えません。そこで、距離行列を入力として受け入れるPAM、agnes、hclustを使用します。

デイジー方式は混合タイプのデータで機能しますが、距離行列は大きすぎます:200,000 x 200,000は2 ^ 31-1(R 3.0.0より前のベクトル長の制限)よりもはるかに大きいです。

昨日リリースされた新しいR 3.0.0は、長さが2 ^ 31-1を超える長いベクトルをサポートしています。しかし、200,000 x 200,000のダブルマトリックスには、16Gbを超える連続RAMが必要であり、これは私のマシンでは不可能です。

並列コンピューティングとbigmemoryパッケージについて読みましたが、それらが役立つかどうかはわかりません。デイジーを使用している場合、メモリに収まらない大きなマトリックスが生成されます。

サンプリングに関する投稿についても読みました 。「ビッグデータ」の時間にサンプリングは関連していますか?

だから私の場合、データセットでサンプリングを使用し、サンプルでクラスター化し、データセット全体の構造を推測するのは適切ですか?

提案をお願いします。ありがとうございました!

私のマシンについて:

Rバージョン3.0.0(2013-04-03)

プラットフォーム:x86_64-w64-mingw32 / x64(64ビット)

OS:Windows 7 64ビット

RAM:16.0GB


私が知っている唯一のクラスタリング方法は、ビッグデータ(例:数百万件)であり、数値変数とともに名目変数を受け入れることができるのは、SPSSにあるTwoStepクラスターです。
ttnphns 2013

回答:


4

お気づきのとおり、完全な距離行列を必要とする方法は機能しません。メモリは1つですが、もう1つはランタイムです。階層的クラスタリングの典型的な実装は(ELKIにはシングルリンククラスタリングへのO n 2アルゴリズムであるSLINKがあることを知っています)。これは、大規模なデータセットには対応していません。On3On2

PAM自体は完全な距離行列を必要とするべきではありませんが、最も中心的な要素を見つけるために各反復内の各クラスター内のすべてのペアワイズ距離を(再)計算する必要があるため、アルゴリズムのスケーリングが悪いことが知られています。クラスターの数が多い場合、これははるかに少なくなりますが、それでもかなり高価です!

代わりに、インデックス構造を使用して高速化できるメソッドを検討する必要があります。優れたインデックスを使用すると、このようなクラスタリングアルゴリズムはで実行できます。これは、大規模なデータセットに対してはるかに優れています。Onlogn

ただし、これらのアルゴリズムのほとんどでは、まず距離関数が本当に優れていることを確認する必要があります。次に、適切なインデックスを使用してクエリを高速化する方法を検討する必要があります。

また、多くの場合(これがPAMに当てはまる場合があります)、最初サンプルでアルゴリズムを実行し、次に完全なデータセットでのみアルゴリズムを調整できることに注意してください。サンプルが代表的な場合、k-meansやPAMなどのアルゴリズムは、完全なデータセットと本質的に同じ結果を提供します。


ここでOPを助けるが、場合には、他の誰かが「中間」のサンプル番号を持っている人に沿って来ません。(参照Rにもfastclusterありmath.stanford.edu/~muellner/fastcluster.htmlを)。
cbeleitesは、モニカをサポートします

こんにちはAnony-Mousse、インデックス構造の高速化を使用するアルゴリズムをいくつか教えてください。どうもありがとう!

たとえば、イプシロン範囲クエリをサポートするインデックスを使用して、DBSCANを高速化できます。おそらくシフトクラスタリングも意味します。この方法でも高速化できるOPTICSは、リンケージクラスタリングのより高度なバージョンと
見なす

2

RのクラスターパッケージからCLARA関数を試してください。データをサブサンプリングすることでPAMのようなアルゴリズムを実装します(デフォルトは意図的に小さすぎるため、データに意味のあるサブサンプルサイズを指定してください)。データ内の中間体を合計データの小さなサンプルで表すことができる場合(つまり、データセット内のクラスターが比較的少ない場合)、特にうまく機能します。このようにして、小さなランダムサンプルで効率的にクラスタリングし、事前計算されたクラスタリングソリューションにポイントを追加できます。

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA


こんにちは、返信ありがとうございます。前にクララについて読んだことがありますが、それはユークリッドとマンハッタンのメトリックのみを提供しているようです。主な問題は、データセットに数値変数と名義変数の両方があることです。したがって、距離測定にどちらのメトリックも使用することは適切ではありません。

ああ、それは現在、私にとっても制限です。この方法は実際には任意の距離で実行できると思いますが、ソースコードを調べて変更できるかどうかを確認することはまだありません。
zzk

0

また、定性変数に複数のコレスポンデンス分析を適用して、数値変数に変換することもできます。


2
これは良い考えのように思えますが、少しまばらかもしれません。これを少し具体化して、それが何であり、なぜそれが役立つのかを説明できますか?
GUNG -復活モニカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.