クラスタリング入門 — 目的から主要手法(k-means, DBSCAN, GMM)・前処理・評価指標まで実務で使える完全ガイド

クラスタリングとは — 概要と目的

クラスタリング(clustering)は、与えられたデータ集合を類似したデータ同士のグループ(クラスター)に分割する手法の総称で、教師なし学習(unsupervised learning)の代表的な技術です。ラベルが存在しないデータから構造やパターンを発見するために用いられます。ビジネスでの顧客セグメンテーション、テキストやドキュメントの自動分類、画像のセグメンテーション、バイオインフォマティクスにおける遺伝子発現パターンの解析など、適用分野は幅広いです。

クラスタリングの主な利用目的

  • 探索的データ解析(EDA):データに潜む構造や分布を把握する。

  • セグメンテーション:マーケティングにおける顧客群の識別。

  • 異常検知:通常クラスタと離れたデータ点を外れ値として検出。

  • 次元削減や可視化の前処理:似たデータをまとめて扱いやすくする。

  • 教師あり学習のための前処理:ラベル付けの補助や特徴生成。

代表的なクラスタリング手法と特徴

クラスタリングアルゴリズムは目的やデータ特性に応じて選ぶ必要があります。以下に代表的な手法と特徴をまとめます。

  • k-means(およびk-means++)
    セントロイド(重心)を用いてデータをk個のクラスタに分割する最も広く使われるアルゴリズムの一つです。反復的に各点を最近接セントロイドに割り当て、セントロイドを更新します。計算コストは比較的低く、大規模データにも適用しやすいですが、「球状で同程度の大きさ」のクラスタを仮定する点と、事前にクラスタ数kを決める必要がある点、初期値に依存して局所最適に陥る点が欠点です。初期化改善としてk-means++が広く使われます。

  • 階層的クラスタリング(Hierarchical)
    データ点を順次結合(凝集型 / agglomerative)または分割(分割型 / divisive)してツリー(デンドログラム)を構築します。凝集型ではリンク方法(single, complete, average, Wardなど)によって形状が変わります。事前にクラスタ数を決める必要がなく、デンドログラムで多様なスケールの構造を確認できますが、計算量が大きく(一般にO(n^2)以上)、大規模データに直接は向かない場合があります。

  • 密度ベース(DBSCAN / HDBSCAN)
    DBSCANは「近傍密度」を基準にクラスターとノイズを識別します。非球状のクラスタやノイズの扱いに強く、クラスタ数の事前指定が不要ですが、パラメータ(eps, minPts)の設定が結果に大きく影響します。HDBSCANは階層的な密度解析を行い、DBSCANのパラメータ感度を緩和し、より安定したクラスタ検出を提供します。

  • 確率モデル(Gaussian Mixture Model: GMM)
    データを複数のガウス分布の混合としてモデル化し、EMアルゴリズムでパラメータを推定します。ソフトクラスタリング(各点がクラスタに属する確率を持つ)を行い、形状が楕円状のクラスタに向いています。モデル選択(成分数)にBIC/AICが利用できます。

  • スペクトラルクラスタリング
    データから類似度行列(グラフ)を作り、ラプラシアンの固有ベクトルに基づいて低次元空間へ射影した後、k-meansなどを適用します。非凸形状や複雑な構造に強い一方で、類似度の定義やスケーリング、固有値分解の計算コストに注意が必要です。

  • ファジィクラスタリング(Fuzzy C-Means)
    データ点が複数クラスタへ所属度(0〜1)を持つ手法で、境界が曖昧な領域を柔軟に扱えますが、k-means同様に初期値やクラスタ数に依存します。

  • サブスペース/高次元クラスタリング
    高次元データでは全ての次元が有効でない場合が多く、関連する特徴サブセットのみでクラスタを検出する手法(例:subspace clustering、biclustering)が用いられます。

距離・類似度と前処理の重要性

クラスタリングは「類似性(距離)」の定義に大きく依存します。代表的な距離/類似度は以下です。

  • ユークリッド距離(Euclidean) — 座標が実数で空間的直感がある場合に多用。

  • マンハッタン距離(L1) — ロバスト性やスパースデータに有利。

  • コサイン類似度 — 文書やベクトルの方向が重要な場合(TF-IDF等)。

  • 相関係数やカスタム類似度 — 時系列や標準化が必要な場合。

前処理として標準化(平均0・分散1)、正規化、欠損値処理、カテゴリカル変数のエンコーディング(ワンホット等)、特徴選択や主成分分析(PCA)による次元削減などが重要です。高次元では距離の集中(curse of dimensionality)により距離差が小さくなり、クラスタ性能が低下するので注意します。

クラスタ数の決定と評価指標

事前にクラスタ数kが未知のケースが多く、選択基準として以下の手法・指標が使われます。

  • エルボー法(Elbow):SSEや歪みの減少が緩やかになる点を探す。

  • シルエット係数(Silhouette):クラスタ内の緊密さとクラスタ間の分離を統合的に評価。

  • ギャップ統計量(Gap statistic):ランダムデータとの差分を利用。

  • BIC/AIC:GMMのモデル選択に利用可能(確率モデル向け)。

ラベルがある場合は外部評価としてAdjusted Rand Index (ARI) や Normalized Mutual Information (NMI) なども使用できますが、教師なし設定では内部指標(Silhouette, Davies-Bouldin, Calinski-Harabaszなど)に頼ることになります。

計算量と実務上の注意点

  • アルゴリズムによってスケーラビリティが大きく異なります。k-meansは一般に高速でスケールしやすい(複雑度 O(n k t d) の近似)、一方で階層法やスペクトラル法は類似度行列や固有値計算で O(n^2) またはそれ以上のコストがかかることがあります。

  • 初期化のランダム性により結果が変わるため、複数回実行して最良解を採る、または安定化手法(k-means++など)を使う。

  • ノイズや外れ値がある場合は密度ベース手法や前処理で除去・ロバスト化する。

  • カテゴリカル変数や混合データ型の場合、距離定義を工夫(Gower距離など)するか、カテゴリ毎に別手法を用いる。

実践的なワークフロー(推奨プロセス)

  • データ理解:欠損・スケール・分布を確認。

  • 前処理:欠損補完、スケーリング、カテゴリ変換。

  • 次元削減(必要なら):PCA, t-SNE, UMAPで可視化やノイズ除去。

  • 手法選択:データ特性(形状、ノイズ、サイズ)に応じてアルゴリズムを選択。

  • パラメータ探索:k, eps, minPts などをグリッドや可視化で検討。

  • 評価:内部指標やドメイン知識で解釈性を確認。

  • 反復:必要に応じて前処理や特徴選択を見直す。

可視化と解釈の工夫

クラスタリングの結果は可視化して評価することが重要です。主成分分析(PCA)やt-SNE、UMAPで2次元や3次元に射影してクラスタ分布を観察します。ただし、低次元写像は構造を歪める可能性があるため、複数手法で評価することが望ましいです。また、各クラスタの代表的な特徴量の分布(箱ひげ図・ヒートマップ)を出して内容を解釈します。

代表的な実装ライブラリ(参考)

  • Python: scikit-learn(k-means, DBSCAN, GMM, 層別法, 指標等)、hdbscan(HDBSCAN 実装)、scipy(階層クラスタリング)

  • R: stats(kmeans, hclust)、cluster、mclust(GMM)、dbscan パッケージ等

よくある誤解と注意点

  • 「クラスタが見つかればそれが真のカテゴリ」ではない:クラスタは解析者の選択(距離、前処理、アルゴリズム)に依存するため、ドメイン知識で解釈する必要があります。

  • 高次元データで距離だけに頼ると無意味になる可能性がある:特徴選択や次元削減を検討する。

  • クラスタ数の自動決定は万能ではない:複数の指標や視覚的検証、業務上の妥当性を併用する。

まとめ

クラスタリングはデータの潜在構造を発見する強力な方法ですが、「どのクラスタリング法を選ぶか」「どの距離を使うか」「どの前処理を行うか」で結果が大きく変わります。実務では、複数手法を比較し、内部評価指標とドメイン知識による解釈を組み合わせることが重要です。大規模データや高次元データ、ノイズの多いデータなど用途ごとの特性を踏まえた手法選択とパラメータ調整が成功の鍵となります。

参考文献