2Dポイントのセットでkクラスを見つけることを任務とするクラスタリングアルゴリズムを開発しようとしていました(kを入力として)。Kruskalアルゴリズムをわずかに変更して、1つではなくkスパニングツリーを見つけます。
k = 7 の場合、95.5% という結果になりました。比較は以下のリンクで見ることができます。
問題:
セットには、アルゴリズムによって簡単に分類できる 5 つの明確な間隔のクラスターがありますが、k > 5 の場合、結果はかなり期待外れです。私は自分のアルゴリズムが正しいと信じており、おそらくデータはクルスカルのアプローチにとって特に悪いものです. Kruskal のような単一リンケージ凝集クラスタリングは、クラスター品質の評価をポイントのペア間の単一の類似性に還元するため、一部の問題でパフォーマンスが低下することが知られています。
アルゴリズムの考え方は非常に単純です。
- エッジの重みがペア間のユークリッド距離である、データ セットを使用して完全なグラフを作成します。
- エッジ リストを重みで並べ替えます。
- エッジごとに (順番に)、サイクルを形成しない場合はスパニング フォレストに追加します。すべてのエッジがトラバースされたとき、または残りのフォレストに k 個の木があるときに停止します。
結論: アルゴリズムがそのように失敗するのはなぜですか? クラスカルのせい?もしそうなら、なぜ正確に?クラスカルを放棄せずに結果を改善するための提案はありますか?
(1): Gionis、A.、H. Mannila、および P. Tsaparas、クラスタリング集約。ACM Transactions on Knowledge Discovery from Data(TKDD),2007.1(1):p.1-30.