k-meansクラスタリングとは?
k-meansは、与えられたデータセットを事前定義された数 \(k\) 個のクラスタ(グループ)に分割するための、代表的な教師なし学習アルゴリズムです。目的は、各クラスタ内のデータ点からそのクラスタ中心までの距離の二乗和(クラスタ内平方和)を最小化することです。データの中に潜む構造を発見するのに役立ちます。
k-means アルゴリズムの反復ステップ
k-meansは以下の2つのステップを交互に繰り返し、クラスタ中心がほとんど変化しなくなるまで続けます。
- 割り当てステップ (Assignment Step): 各データ点を、現在の \(k\) 個のクラスタ中心のうち、最も距離が近い中心に割り当てます。距離指標には通常、ユークリッド距離が用いられます。
- 中心更新ステップ (Update Step): 各クラスタについて、そのクラスタに割り当てられた全てのデータ点の重心(各次元の座標値の平均)を計算し、それを新しいクラスタ中心とします。
計算ステップ
この問題では、反復の途中段階を考えます。
前提: 割り当てステップ (ステップ1) が完了し、クラスタへの点の割り当てが以下のようになっているとします。
- クラスタ1 (C1) に割り当てられた点: P1(1, 1), P2(4, 4), P3(6, 2)
- クラスタ2 (C2) に割り当てられた点: P4(7, 5), P5(8, 3), P6(9, 6)
実行: 中心更新ステップ (ステップ2) を行い、クラスタ1の新しい中心 \(C1'\)を計算します。
クラスタ1の新しい中心は、P1, P2, P3 の座標の平均値(重心)です。
新しいクラスタ1の中心 \(C1'\) の x座標:
$C1'_x = \frac{\text{クラスタ1の点のx座標の合計}}{\text{クラスタ1の点の数}} = \frac{1 + 4 + 6}{3} = \frac{11}{3} \approx 3.6666... $
小数点以下3桁まで求めると、新しいクラスタ1の中心のx座標は 3.667 です。
(参考) 新しいクラスタ1の中心 \\(C1'\\) の y座標:
$C1'_y = \frac{1 + 4 + 2}{3} = \frac{7}{3} \approx 2.333$
したがって、新しいクラスタ1の中心は \(C1' \approx (3.667, 2.333)\) となります。この後、再び割り当てステップが行われます。
k-means の重要ポイント
- 用途: 顧客セグメンテーション、画像圧縮、異常検知の前処理など。
- シンプルで高速: 実装が容易で大規模データにも適用しやすい。
- 初期値依存性: 最初のクラスタ中心の選び方で結果が変わる。k-means++ など改良手法がある。
- \(k\) の事前決定: クラスタ数 \(k\) を事前に指定する必要がある。エルボー法やシルエット係数で推定する。
- 形状の仮定: 球状でサイズが同程度のクラスタを仮定。複雑な形状や密度の異なるクラスタは苦手。
- 外れ値の影響: 外れ値に弱い。
- 距離指標: ユークリッド距離が一般的だが、データの種類によっては他の距離(例: コサイン類似度)が適切な場合もある。