非階層クラスタ分析 (K-means法)

解説

非階層クラスタ分析 (K-means Cluster Analysis) は、指定されたクラスタ数kに基づいて、データポイントを重心との距離が最小となるクラスタに分類する教師なし学習手法です。
計算効率が良く、大規模データにも適用可能な代表的なクラスタリング手法で、球状のクラスタ形成に適しています。階層クラスタ分析とは異なり、事前にクラスタ数を指定する必要がありますが、高速かつ安定した結果が得られます。

K-means法の特徴

  • 計算効率の高さ
    • 大規模データセットでも高速に処理可能です
    • メモリ使用量が少なく、実用的な手法です
    • 反復計算により最適解に収束します
  • 明確なクラスタ境界
    • 各データポイントは必ずいずれかのクラスタに割り当てられます
    • 重心ベースの分類により、解釈しやすい結果が得られます
    • クラスタ間の重複がない排他的分割を行います
  • 球状クラスタに最適
    • 円形または球形の自然なグループ化に適しています
    • 各クラスタが比較的同じサイズで密度が均一な場合に効果的です

アルゴリズムの流れ

K-means法は以下の手順で実行されます:

ステップ 処理内容 備考
1. 初期化 k個の重心をランダムまたは特定手法で配置 初期化方法により結果が変わる可能性
2. 割り当て 各データポイントを最も近い重心のクラスタに割り当て ユークリッド距離を使用
3. 更新 各クラスタの重心を再計算 クラスタ内データポイントの平均
4. 収束判定 重心の変化が閾値以下または最大反復回数に到達 通常は数十回の反復で収束

初期化方法

初期重心の配置方法がアルゴリズムの性能に大きく影響します。

初期化方法 特徴 計算効率 推奨度
Hartigan-Wong法 最も一般的で安定、理論的根拠が明確 高い ★★★ (推奨)
Lloyd法 標準的なLloydアルゴリズム 高い ★★☆
Forgy法 ランダムに重心を初期化 非常に高い ★★☆
MacQueen法 オンライン更新による方法 中程度 ★☆☆

クラスタ数の決定

自動決定 (推奨)

シルエット法とエルボー法を組み合わせて最適なクラスタ数を決定します。

手法 評価指標 判定基準 特徴
シルエット法 シルエット値 平均シルエット値が最大となるk クラスタの分離度と凝集度を総合評価
エルボー法 WSS (クラスタ内平方和) WSSの減少率が急激に変化する点 クラスタ内のばらつきを最小化

シルエット法の評価基準

シルエット値の範囲 クラスタリング品質 解釈
0.7 ~ 1.0 強固な構造 非常に適切なクラスタリング
0.5 ~ 0.7 合理的な構造 適切なクラスタリング
0.25 ~ 0.5 弱い構造 やや人工的、要検討
0.0 ~ 0.25 構造なし 不適切なクラスタリング

シルエット値 = \(\frac{b(i) - a(i)}{\max(a(i), b(i))}\)

ここで、\(a(i)\) は同一クラスタ内の平均距離、\(b(i)\) は最も近い他クラスタとの平均距離です。

手動指定

研究目的や業務要件に基づいて事前にクラスタ数を指定することも可能です。

パラメータ設定

最大反復回数

反復回数 用途 備考
50回以下 探索的分析、高速処理重視 収束しない可能性
100回 (推奨) 一般的な分析 ほとんどの場合で十分
200回以上 複雑なデータ、高精度要求 計算時間の増加

実行回数 (nstart)

異なる初期値で複数回実行し、最良の結果を採用する設定です。

実行回数 用途 計算時間 推奨度
10回 高速処理重視 短い ★☆☆
25回 (推奨) 一般的な分析 適度 ★★★
50回 高精度要求 やや長い ★★☆
100回 研究用途、最高精度 長い ★☆☆

データの前処理

データ要件

項目 要件 備考
変数の型 連続変数のみ カテゴリカル変数は事前に数値化が必要
欠損値 自動除外 完全なケースのみ使用
標準化 自動実行 平均0、標準偏差1に変換
サンプルサイズ クラスタ数の10倍以上推奨 統計的安定性のため

K-means法の前提条件

前提条件 説明 対策
球状クラスタ 各クラスタが円形または球形 事前に散布図で確認
同程度のサイズ クラスタサイズが極端に異ならない 階層クラスタ分析との比較
密度の均一性 クラスタ内の密度がほぼ一定 外れ値の事前除去
分離性 クラスタ間に明確な境界 可視化による事前確認

可視化機能

散布図設定

設定項目 オプション 用途
重心表示 表示 / 非表示 クラスタの中心位置を確認
色分け 自動色分け クラスタの視覚的識別
次元 最初の2変数 高次元データの2次元投影

その他の可視化

  • シルエット分析図: 各データポイントのシルエット値を可視化
  • 最適クラスタ数分析図: シルエット値の変化を表示
  • エルボー法分析図: WSS の変化を表示

K-means法の数学的表現

目的関数は以下のように定義されます:

\[ \text{minimize} \quad J = \sum_{i=1}^{k} \sum_{x \in C_i} ||x - \mu_i||^2 \]

ここで、\(C_i\) は \(i\) 番目のクラスタ、\(\mu_i\) はクラスタ \(i\) の重心です。

重心の更新式:

\[ \mu_i = \frac{1}{|C_i|} \sum_{x \in C_i} x \]

適用分野と活用例

分野 活用例 具体的応用
マーケティング 顧客セグメンテーション RFM分析、購買行動パターン
製造業 品質管理 製品特性による分類
金融 リスク分析 投資ポートフォリオの分類
医療 患者分類 症状パターンによる診断支援
画像処理 色領域分割 画像セグメンテーション
バイオインフォマティクス 遺伝子解析 発現パターンの分類

階層クラスタ分析との比較

比較項目 K-means法 階層クラスタ分析
クラスタ数 事前指定が必要 データから自然に決定
計算速度 高速 (大規模データ対応) 比較的低速
メモリ使用量 少ない 多い
結果の可視化 散布図中心 デンドログラム
クラスタ形状 球状に適している 任意の形状に対応
再現性 初期値依存 (nstartで対応) 完全に再現可能
解釈しやすさ 重心で理解しやすい 階層構造で理解しやすい

結果の解釈と後続分析

クラスタの特徴把握

各クラスタの統計的特徴を以下の形式で確認できます:

クラスタ サンプル数 変数1平均 変数2平均 R-squared寄与 特徴
クラスタ1 n1 μ11 μ12 % 高値群
クラスタ2 n2 μ21 μ22 % 中値群
クラスタ3 n3 μ31 μ32 % 低値群

品質評価指標

指標 計算方法 解釈
クラスタ内平方和 (WSS) 各クラスタ内の分散の合計 小さいほど良い
クラスタ間平方和 (BSS) クラスタ間の分散 大きいほど良い
R-squared BSS / TSS 0-1の範囲、1に近いほど良い
平均シルエット幅 全データポイントのシルエット値平均 1に近いほど良い

推奨される後続分析

分析手法 目的 備考
群間検定 クラスタ間の有意差検証 各変数でクラスタ間比較
分割表 カテゴリカル変数との関連 クラスタと既知分類の関係
多変量解析 予測モデル構築 クラスタを説明変数として使用

注意事項

統計的考慮事項

項目 注意点 対策
局所最適解 初期値により異なる結果 nstartを25以上に設定
クラスタ数決定 主観的判断が入りやすい 複数手法での検証
外れ値の影響 重心計算に大きく影響 事前の外れ値除去
スケールの影響 大きな値の変数が支配的 自動標準化で対応

解釈の限界

  • 因果関係: 探索的分析であり、因果関係を示すものではありません
  • 形状の制約: 球状でないクラスタの検出は困難です
  • 密度の仮定: 密度が不均一なデータには適していません
  • ノイズの処理: ノイズデータも必ずいずれかのクラスタに割り当てられます

実用上の推奨事項

状況 推奨アプローチ 理由
大規模データ K-means法を優先 計算効率の高さ
小規模データ 階層クラスタ分析も併用 より詳細な構造把握
クラスタ数不明 自動決定機能を使用 客観的な判断
業務要件でクラスタ数決定 手動指定を使用 要件に合わせた分析

データ

設定

クラスタリング詳細設定
クラスタ数の決定
最適クラスタ数探索範囲
初期化方法
最大反復回数
実行回数
可視化設定
クラスタ散布図
重心表示
シルエット分析
最適クラスタ数分析
エルボー法分析

結果

クラスタ分析結果をデータテーブルの新しい列に追加しました。

  • {{ nNRows.length }}個のデータが{{ clusterResult.optimalK }}個のクラスタに分類されました。
  • 上のボタンを押すと、"{{ clusterColumnName }}" カラムにクラスタ番号を格納します。
  • その際、現在の "{{ clusterColumnName }}" カラムの内容は上書きされます。
  • 各行に割り当てられたクラスタ番号 (1, 2, 3...) が表示されます。
  • 実行後は、必要に応じてファイルにダウンロードして保存してください。
  • このクラスタ結果を用いて、さらなる統計分析 (クラスタ別の記述統計、分散分析など) を行うことができます。