私は、さまざまなハイパーテキスト ドキュメントの用語-頻度-逆-ドキュメント-頻度を表す多数の非常に大きなスパース ベクトルをクラスタリングするいくつかのテストを行っています。データセットの割合を考慮して、このデータをクラスタリングするためにどのアルゴリズムを提案しますか? ベクトルの次元は > 3·10 5になり、ベクトルの数は約 10 9になります。私は dbscan と optics アルゴリズムを見てきました。クラスタの数は優先順位が不明です。そして、このような高次元の空間インデックスは複雑に見えます。
5 に答える
単純なK-meansクラスタリングを使用した結果は、他のほとんどのものとほぼ同じであり、他のほとんどの方法よりも確実に高速です。ペアワイズ凝集でも良い結果が得られましたが、かなり遅いです。K-meansの場合、クラスターの推定数から始める必要がありますが、徐々に調整することができます。手段が近すぎる2つのクラスターを見つけた場合は、クラスターの数を減らします。バリエーションの範囲が広すぎるクラスターを見つけた場合は、より多くのクラスターを試してください。sqrt(N)が妥当な出発点であることがわかりましたが、通常は10^9ではなく10^7のドキュメントから始めています。10 ^ 9の場合、それをいくらか減らすのが理にかなっているかもしれません。
ただし、私次第だとしたら、Landmark MDSのようなもので次元を減らしてから、クラスタリングを行うことから始めるのは非常に難しいと思います。
セマンティックハッシュは素晴らしい結果を出していると聞いています。ただし、深い信念ネットは実装がかなり困難です。ユークリッド空間の最小ハッシュ (ただし、これは確率論的アプローチです) または局所性に敏感なハッシュを試してみることをお勧めします。
一般に、このような高次元空間でのクラスタリングは、次元の呪いと、ほとんどのアイテムが互いに類似した距離を持っているという事実のために困難です。SOMまたはPCAを介して事前に次元を削減すると、K-Meansなどの標準的なアプローチが機能する場合があります。
データをクラスタリングするときは、少なくとも次の 2 つのアルゴリズムを常に次の順序で試します。
K-Means : 可能な限り結果を微調整してみてください。K-Means を使用して適切な結果を得ることができれば、他のアルゴリズムよりも優れた結果が得られることはほとんどありません。
期待値の最大化: K-means アルゴリズムは、実際には EM アルゴリズムの安価で優れた代替手段として開発されました。EM アルゴリズムは理解がより複雑で、計算コストも高くなりますが、EM の結果は優れています。EM について詳しくは、 http://en.wikipedia.org/wiki/Expectation-maximization_algorithmをご覧ください。EM の OpenCv 実装があります: http://opencv.willowgarage.com/documentation/expectation-maximization.html
これら 2 つのどちらの結果も満足のいくものではない場合、他の場所を探し始めますが、両方を試すまではそうではありません。
デシジョンツリーは、高次元空間で効率的に作業するために人気があります。デシジョンツリー構築によるクラスタリングを確認してください。
また、ランダム化されたフォレストは非常に効率的な学習者であり、OpenCVの実装を試してみたい場合は存在します。