K-meansクラスタリングの世界へようこそ!
こんにちは!Exam SRMに向けて勉強を進めている皆さんにとって、教師なし学習(Unsupervised Learning)はシラバスの中でも非常に興味深いトピックの一つです。これまで学習してきた回帰や分類モデル(ターゲット変数 \(Y\) が存在するモデル)とは異なり、教師なし学習は、明確な「正解」やラベルがないデータの中に隠れたパターンを見つけ出す手法です。
今回はK-meansクラスタリングについて見ていきましょう。これは「グループ分け」のテクニックだと考えてください。保険数理士が似たような契約者をグループ化したり、マーケターが購買習慣に基づいて顧客をセグメント化したりする際に、K-meansは非常に頼りになるツールです。技術的な用語が出てきますが、心配はいりません。一つずつ噛み砕いて解説していきます!
K-meansクラスタリングとは?
K-meansクラスタリングの目的はシンプルです。観測データを、重なり合わないK個の明確なグループ(クラスタ)に分けることです。その際、以下の条件を満たすようにします:
1. 各観測データは必ずいずれか1つのグループに属する。
2. 同じグループ内の観測データは、可能な限り似ている。
3. 異なるグループ間の観測データは、可能な限り異なっている。
身近な例え
洗濯物の山を整理することを想像してください。これをK=3つの山に分けることにしました。「黒物」「白物」「色物」といった具合です。「白物」の山の中にある服同士は似ていますが、「黒物」の山とは大きく異なります。K-meansがデータに対して行っているのは、まさにこれと同じことです!
数学的なアプローチ:「類似性」の定義
アイテムをグループ化するには、それらがどれくらい「近い」かを測定する方法が必要です。K-meansでは、二乗ユークリッド距離(Squared Euclidean Distance)を使用します。このアルゴリズムは、クラスタ内変動(Within-Cluster Variation)を最小化するように動作します。
クラスタ \(C_k\) における数式は以下の通りです:
\( W(C_k) = \sum_{i \in C_k} \sum_{j=1}^p (x_{ij} - \bar{x}_{kj})^2 \)
ここで:
- \(x_{ij}\) は \(i\) 番目の観測データの \(j\) 番目の特徴量の値です。
- \(\bar{x}_{kj}\) は、その特徴量におけるクラスタ \(k\) 内の全観測データの平均(mean)です。
- \(p\) は特徴量(変数)の数です。
簡単に言えば: 各データポイントから、割り当てられたグループの「中心(平均)」までの距離をできるだけ小さくしたい、ということです。
アルゴリズムの仕組み(ステップ・バイ・ステップ)
K-meansアルゴリズムは反復的(iterative)です。グループがこれ以上改善できなくなるまで、一連のステップを繰り返します。最初は難しく感じるかもしれませんが、ただの繰り返し処理なので大丈夫です!
ステップ1:Kの決定。 クラスタの数を決めます(例:\(K=3\))。
ステップ2:初期化。 各観測データに1から \(K\) までの番号をランダムに割り当てます。これが初期の「暫定的な」クラスタになります。
ステップ3:反復! 割り当てに変更がなくなるまで、以下を繰り返します:
(a) セントロイド(重心)の計算: \(K\) 個のクラスタそれぞれについて、その中の全ポイントの平均値を計算します。この点をセントロイドと呼びます。
(b) ポイントの再割り当て: すべての観測データを確認し、最も近いセントロイドを持つクラスタに割り当て直します(ユークリッド距離を使用)。
ヒント:セントロイドは「重力の中心」
セントロイドは、そのグループの「平均的な人」のようなものだと考えてください。ステップ3bでは、各データポイントが周囲を見渡して「自分はどの『平均的な人』に一番近いかな?」と考え、そのグループへ移動するようなイメージです。
重要な詳細:局所的最適解(Local Optima)
K-meansは、夜の山脈をハイキングするようなものです。一番低い谷(大域的最適解:Global Optimum)を見つけたいのですが、途中の山の斜面にある小さな窪み(局所的最適解:Local Optimum)にはまってしまうことがあります。
このアルゴリズムはランダムな割り当てからスタートするため、どこから始めるかによって最終結果が変わってしまう可能性があります。
試験に向けたキーポイント: 最適な解を見つけるためには、異なるランダムな開始点を用いてK-meansを複数回実行し、クラスタ内変動の合計が最も小さくなる結果を採用することが重要です。
スケーリングの重要性
これはExam SRMで非常によく出るトピックです!K-meansは距離に基づいているため、変数のスケール(単位や範囲)が非常に重要になります。
例: 年齢(0〜100歳)と年収(0〜20万円)に基づいて顧客をクラスタリングする場合、年収の数値の方が圧倒的に大きいため、距離計算において年収が支配的になってしまいます。年収の1,000円の差が、年齢の50歳の差よりも「遠い」とみなされてしまうのです。
解決策: K-meansを実行する前に、常に変数を標準化(平均=0、標準偏差=1)してください。そうすることで、すべての変数がクラスタリングプロセスにおいて対等な「投票権」を持つようになります。
クラスタ数(K)の選び方
2つのクラスタがいいのか、10個がいいのか、どうやって判断すればよいでしょうか?
\(K\) を増やせば増やすほど、クラスタ内変動は常に減少していきます(すべてのポイントが個別のクラスタになれば、変動はゼロになります!)。
そこで、エルボー法(Elbow Method)をよく使います。クラスタ内変動の合計を \(K\) に対してプロットし、曲線の「肘(エルボー)」を探します。クラスタを増やしても変動がそれ以上大きく減らなくなるポイントです。この「折れ曲がり」が、通常 \(K\) を選ぶ際の適切な基準となります。
避けるべき落とし穴と間違い
1. スケーリング忘れ: 前述の通り、スケーリングをしないと結果が大きな値を持つ変数に偏ってしまいます。
2. 外れ値(Outliers): K-meansは外れ値に非常に敏感です。遠く離れた1点があるだけで、セントロイドがグループ全体から大きく引きずられてしまいます。
3. カテゴリデータ: K-meansは数値データ用に設計されています(色や名前の「平均」を計算することはできないため)。
4. 球状でない形状: K-meansは、丸い塊のようなクラスタを好みます。もしクラスタが細長いヘビのような形や三日月形をしていると、うまく見つけることができません。
クイック復習ボックス
- タイプ: 教師なし学習
- 目的: クラスタ内変動の最小化
- 指標: 二乗ユークリッド距離
- 必須事項: データを事前にスケーリング(標準化)すること!
- 弱点: 局所的最適解にはまる可能性があり、外れ値に敏感。
まとめ:キーポイント
K-meansは、データ内のグループを見つけるためのシンプルかつ強力なアルゴリズムです。セントロイドを繰り返し計算し、最も近い中心へポイントを再割り当てすることで機能します。最初のランダムな開始位置に依存するため、必ず複数回実行するようにしましょう。最後に、前処理(データの標準化)はアルゴリズム自体と同じくらい重要だということを忘れないでください!
豆知識: K-meansは画像圧縮にもよく使われています!似たような画素の色をクラスタ化することで、複雑な画像をより少ない「カラーパレット」で表現し、ファイル容量を節約することができるのです。
これらの概念を練習し続ければ、Exam SRMの教師なし学習セクションはすぐに完璧になります!あなたなら大丈夫です!