#はじめに
教師なし学習の一つである「クラスタリング」。その中でもk-meansは有名なアルゴリズムだと思います。しかし、講義で様々なデータセットを試すうちに、k-meansではうまく分割できないケースがあることを知りました。
今回は、データセットの形状に応じてクラスタリング手法をどう使い分けるべきか、学んだことをまとめます。
k-meansの限界:三日月型のデータ
k-meansは、各データ点から最も近いクラスター中心点を探す、というアルゴリズムです。そのため、各クラスターが円形(球状)に分布していることを前提としています。
講義で扱った以下のような三日月型のデータにk-meansを適用すると、うまく分割できません。
これは、k-meansがデータの「形」ではなく、あくまで「中心からの距離」しか見ていないためです。
データの「形」に強い手法
k-meansが苦手なデータセットには、別のアルゴリズムが有効です。
DBSCAN
DBSCANは「データの密集具合」に着目する手法です。点が密集している領域を一つのクラスターとして認識するため、三日月型のように複雑な形状のデータもうまく分割できます。また、どのクラスターにも属さない点を「外れ値」として扱えるのも大きな特徴です。
まとめ
-
円形にまとまっていそうなデータ → まずは
k-meansを試すのが良い。 -
三日月型など複雑な形のデータ →
DBSCANやスペクトラルクラスタリングが有効。
このように、絶対的に優れたアルゴリズムというものはなく、データの特性に合わせて手法を選択する「引き出しの多さ」が重要だと感じました。
出典: scikit-learnのドキュメントには、様々なクラスタリングアルゴリズムを同一のデータセットで比較した素晴らしい例があります。手法の特性を理解する上で非常に参考になります。
Comparing different clustering algorithms on toy datasets — scikit-learn documentation