10 ^ 10ポイントのアルゴリズムのような高速k-means?


14

10次​​元の点のセットでk-meansクラスタリングを実行しようとしています。キャッチ:10 ^ 10ポイントがあります。

最大のクラスター(たとえば、10〜100個のクラスター)の中心とサイズだけを探しています。各ポイントがどのクラスターになるかは気にしません。k-meansの使用は特に重要ではありません。私は同様の効果を探していますが、近似的なk-meansまたは関連するアルゴリズムは素晴らしいでしょう(ミニバッチ-SGD平均、...)。GMMはある意味でk-meansと同じ問題なので、同じサイズのデータ​​でGMMを実行することも興味深いです。

この規模では、データをサブサンプリングしても結果はおそらく大幅に変わりません。データの1/10000番目のサンプルを使用して同じ上位10クラスターを見つける確率は非常に良好です。しかしそれでも、それは10 ^ 6ポイントの問題であり、扱いやすいものの端にあります。


1
いくつかのアルゴリズムは「Mining of Massive Datasets」という本で説明されており、ここから無料ダウンロードできます。第7章「クラスタリング」をお読みください。
lanenok

回答:


12

k-meansは平均に基づいています。

平均を使用してクラスターをモデル化するため、データを追加することによる改善はわずかです。平均推定の誤差は、1 / sqrt(n)で減少します。より多くのデータを追加しても、益は少なくなります...

このような大規模データの戦略は、常にサンプリングを中心にしています。

準線形ランタイムが必要な場合は、サンプリングを行う必要があります!

実際、Mini-Batch-Kmeansなどはまさにこれを行います。データセットから繰り返しサンプリングします。

ただし、サンプリング(特に不偏サンプリング)も完全に無料ではありません...通常、個々のレコードにランダムにアクセスできないため、サンプリングするためにデータを線形に読み取る必要があります。

MacQueenのアルゴリズムを使用します。オンラインです。デフォルトでは、データを1回通過します(ただし、これを反復するのが一般的です)。配布するのは簡単ではありませんが、SSDから10回と言ってデータを直線的に読み取る余裕があると思いますか?


MacQueenのオンラインアルゴリズムについては知りませんでした!通常、「古典的な」K-meansと同じ結果が得られますか?代わりにリザーバーサンプリングを使用するのはどうですか?このように、OPには、Kの複数の値をテストする必要がある場合にK-meansを再実行するサンプルがあります。
ビクターMa

6

サイドコメントとして、10 次元データにK-meansを使用すると、次元の呪いに従ってどこにも行き着かない可能性があることに注意してください。もちろん、データの性質によって多少異なりますが、K-Meansが次元に関して奇妙な動作を開始するしきい値を決定しようとすると、7Dのようなものが得られました。7次元の後、正しいクラスターを見逃し始めました(データは4つの十分に分離されたガウス分布に従って手動で生成され、小さな実験にはMATLAB kmeans関数を使用しました)。


これは可能であり、もちろん、常にデータに依存しています。ただし、ポスターには10 ^ 10個の(おそらく独立した)サンプルがあるため、10個の次元がここで大きな問題にならないようです。
ライアンJ.スミス

2
コメントをありがとう@ RyanJ.Smith。あなたのコメントは私の方向とまったく同じです。投稿でこの問題に関して何も見ていません。そして、サンプルの数について。ただし、彼には多くのサンプルポイントがあり、それでも次元の問題にとらわれる可能性があります。私は妥当でないと思う低サンプルサイズ問題の反対側を主張していると思います。彼が高次元のデータを持っている場合、サンプルサイズが小さいことが問題になりますが、大量のデータが必ずしも何も意味しないと思います。
カスラマンシャエイ

10次​​元はまだ多くありません。
QUITあり-Anony-Mousse

1
私の友人をどのように決定しますか?私が言ったことは、そのような質問に答えるように設計された実験の結果でしたが、一般的に答えることはできません!あなたのコメントで正確に「たくさん」とは何ですか?私の答えで述べたように、多くの状況に依存します。状況によっては、10Dに問題がある可能性があります。
カスラマンシャエイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.