クラスタリング徹底解説:手法別特徴・前処理・評価指標とIT実務での活用ガイド
群分析とは
群分析(クラスタリング、cluster analysis)は、データを似たもの同士の「群(クラスタ)」に分けるための解析手法群です。教師なし学習の代表例であり、事前にラベルのないデータから構造やパターンを見つけ出すことを目的とします。ITの分野では、ユーザーセグメンテーション、ログ解析・異常検知、推薦システム、画像分割、マーケティング分析など幅広い用途で用いられます。
基本概念と目的
- 類似性(距離):オブジェクト間の「近さ」を定義することがクラスタリングの基礎です。距離や類似度の定義がクラスタ結果に直接影響します。
- クラスタの形状:アルゴリズムによって想定するクラスタ形状(球状、密度ベース、階層構造など)が異なります。
- 教師なし学習:ラベルが無くてもデータの構造を抽出する。検証には内部評価指標(シルエット等)や専門家の判断が必要。
- 用途別の目標:解釈性を優先するのか、予測器に組み込む中間表現が欲しいのか、異常値検出が目的なのかで選ぶ手法が変わります。
代表的なクラスタリングアルゴリズム
以下に代表的な手法とその特徴、計算量や向き不向きを示します。
k-means(およびその変種)
- 概要:クラスタ中心(centroid)を定め、各点を最も近い中心へ割り当て、中心を再計算することを繰り返して目的関数(各点と中心の二乗距離の和)を最小化します。
- 長所:実装が単純で計算が速く、大規模データにも使いやすい。
- 短所:クラスタが球状で分散が同程度であることを仮定。初期値に依存し、アウトライアや非球状クラスタには弱い。
- 計算量:一般に O(n k t d)(n: サンプル数、k: クラスタ数、t: イテレーション、d: 次元)
階層クラスタリング(階層的)
- 概要:凝集(agglomerative)型は各点を1クラスタとして開始し、近いクラスタを順に結合して木構造(デンドログラム)を作ります。分割(divisive)型は逆に全体から分割していきます。
- 長所:デンドログラムによる可視化で階層的な関係が分かる。クラスタ数を後から選べる。
- 短所:大規模データには計算負荷が高い。結合基準(単リンク、完全リンク、平均リンク、ウォード法)で結果が変わる。
密度ベース(DBSCAN / HDBSCAN)
- 概要:点の局所密度(近傍点数)に基づいてクラスタを形成。密度の高い領域をクラスタ、まばらな点をノイズ(アウトライア)と見なします。代表的な手法に DBSCAN、より安定した HDBSCAN があります。
- 長所:非球状クラスタやノイズに強く、自動的にクラスタ数を決められる。
- 短所:パラメータ(半径 eps、最小点数 minPts)に敏感で、高次元では距離概念が薄れるため性能が落ちる。
混合分布モデル(Gaussian Mixture Model: GMM)
- 概要:データはいくつかの確率分布(通常ガウス)の混合で生成されたと仮定し、EMアルゴリズムでパラメータを推定します。各点はクラスタに対して確率的に割り当てられます。
- 長所:ソフトクラスタリング(確率的所属)を得られる。クラスタの共分散構造を学習できる。
- 短所:分布仮定が合わないと性能が悪くなる。局所最適に陥ることがある。
スペクトラルクラスタリング
- 概要:類似度行列の固有値分解(あるいはラプラシアン)を用いて、低次元空間に埋め込み、そこでk-means等を行う手法。
- 長所:複雑な形状のクラスタを扱える。グラフベースのデータに適する。
- 短所:類似度行列の計算コストが高く、大規模データに不向き。
その他:Mean Shift、Affinity Propagation、SOM など
それぞれ独自の利点(モード探索、自動クラスタ数決定、可視化)と欠点(計算量、パラメータ調整)を持ちます。用途やデータ特性に応じて選択します。
前処理と距離尺度の重要性
クラスタリングは距離感覚に強く依存するため、前処理が結果を左右します。
- スケーリング/標準化:特徴量のスケール差がある場合は標準化(Zスコア)や正規化が必須です。そうしないと大きな数値を持つ特徴が支配してしまいます。
- 次元削減:高次元データでは距離が均一化する「次元の呪い」が生じます。PCA、t-SNE、UMAP などで低次元に投影してからクラスタリングすることが有効な場合があります。
- 距離/類似度の選択:数値データはユークリッド、マンハッタン、コサイン類似度、カテゴリカルや混合データには Gower 距離などを使う。テキストではコサインがよく使われます。
- 欠損値・外れ値処理:欠損値の補完や外れ値の除去・別扱いは結果に影響します。密度ベースは外れ値をノイズとして扱える利点があります。
クラスタ評価(内部評価・外部評価・安定性)
教師なしのため評価が難しいですが、いくつかの指標があります。
- 内部評価:データのみを用いる指標。シルエット係数、Davies-Bouldin 指数、Calinski-Harabasz 指数など。クラスタの凝集度と分離度を測る。
- 外部評価:既知のラベルと比較する場合に用いる。Adjusted Rand Index (ARI)、Normalized Mutual Information (NMI) など。
- モデル選択的指標:GMM のような確率モデルでは BIC/AIC を使ってクラスタ数を選ぶことができる。
- 安定性評価:データのサブサンプリングやノイズ付加でクラスタの安定性を検証する手法も重要です。
実務ワークフローと注意点
クラスタリングの実務では次のような手順が一般的です。
- 目的定義:何のためにクラスタリングを行うか(解釈の容易さ、セグメント作成、異常検知等)。
- データ準備:欠損処理、スケーリング、特徴量エンジニアリング。
- 手法選定:データ規模、次元、期待するクラスタ形状、ノイズの有無に応じて選ぶ。
- ハイパーパラメータ探索:k(クラスタ数)、eps/minPts、標準化の有無などを試行。
- 評価・可視化:内部指標、プロファイリング、t-SNE/UMAP やデンドログラムで可視化。
- 解釈・検証:ビジネス側の専門家による確認、A/B テストや downstream タスクでの有効性確認。
注意点:
- 「クラスタが存在する」という前提を無闇に置かない。ランダムデータでもクラスタが見つかることがある。
- スケールや距離の選択は結果を左右するため、複数の設定で試すこと。
- 初期値依存や局所最適に注意(k-means は複数回試す)。
- 高次元・大規模データでは近似手法(ミニバッチ k-means、近傍検索の高速化等)を検討する。
IT分野での具体的な応用例
- ユーザーセグメンテーション:行動データや属性に基づきユーザ群を作成し、ターゲティングやパーソナライズに活用。
- ログ解析・異常検知:正常な振る舞いのクラスタから外れるイベントを異常として検出。密度ベースが有用。
- 推薦システム:アイテムやユーザーをクラスタ化して協調フィルタリングの事前処理として使う。
- 画像処理:画素や特徴ベクトルのクラスタリングによるセグメンテーション(色ベース、特徴ベース)。
- ネットワーク分析:グラフの類似ノードをクラスタ化してコミュニティ検出に応用。
実装と主要ライブラリ
- Python:scikit-learn(k-means、階層クラスタ、DBSCAN、GMM 等)— 汎用的でドキュメントが充実。
- 高度な密度ベース:hdbscan(HDBSCAN 実装)— 不均質な密度に強い。
- 可視化・次元削減:UMAP、t-SNE(可視化後にクラスタリングするケースが多い)。
- 大規模データ:ミニバッチ k-means、分散処理(Spark MLlib の k-means 等)を利用。
よくある落とし穴と対策
- スケーリング忘れ:各特徴量を標準化/正規化しないと偏ったクラスタになる。
- クラスタ数の盲目的決定:エルボー法やシルエットだけで決めず、ドメイン知識を組み合わせる。
- 高次元データでの距離の劣化:PCA や特徴選択で次元を落とす。
- ノイズへの過敏さ:密度ベースを検討、もしくは前処理で外れ値を処理する。
- 解釈不能なクラスタ:クラスタを特徴量でプロファイルし、ビジネス指標(収益、利用率等)で検証する。
まとめ:実践的なチェックリスト
- 目的を明確にする(解釈中心か、予測向けか、異常検知か)。
- スケーリングや欠損処理を行い、適切な距離尺度を選ぶ。
- 複数のアルゴリズム/パラメータを比較する(k-means, GMM, DBSCAN, 階層など)。
- 内部評価・可視化・ドメイン知識でクラスタの意味合いを解釈する。
- 本番導入前に安定性・再現性を検証し、運用時の再学習や監視を設計する。
参考文献
- Cluster analysis — Wikipedia
- scikit-learn: Clustering — scikit-learn documentation
- A K Jain, M N Murty, P J Flynn, "Data Clustering: A Review" (1999/2010 review papers)
- M. Ester, H.-P. Kriegel, J. Sander, X. Xu, "A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise" (DBSCAN, KDD 1996)
- HDBSCAN Documentation — HDBSCAN
- Gaussian Mixture Models — scikit-learn
- UMAP Documentation
- t-SNE (Laurens van der Maaten) — 資料と実装情報


