Ch.08
K-meansクラスタリング:ラベルなしでグループ化
正解ラベルなしでデータだけを見て似たもの同士をまとめる教師なし学習の代表アルゴリズムです。Ch01で学んだ「教師なし」が実際にどう動くか、距離でK個のグループ(クラスタ)を作るK-meansで、概念→直感→数式→実践の順に学びます。Ch02のKNNで使った距離の式を再利用し、繰り返しでまとまりがはっきりする様子を視覚化とともに習得します。
チャプター別 機械学習図
チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。機械学習の流れを一覧で確認できます。
最も近い中心に割り当て、中心を属する点の平均に更新することを繰り返します。
① データ — ラベルのない点が特徴空間に散らばっている
点: データ
K-meansクラスタリング:ラベルなしでグループ化
K-meansとは? — ラベルがなくデータだけのとき、最も近いもの同士でK個のグループに分けるアルゴリズムです。「近い」はCh02と同様ユークリッド距離で測ります。各グループは代表点(セントロイド)で要約され、「各点を最も近い中心に割り当て」→「各クラスタの点の平均で中心を更新」を収束まで繰り返します。
Kは「いくつのグループに分けるか」 — K-meansではクラスタ数Kを人が事前に決めます。K=2なら2つ、K=3なら3つに分かれます。正解ラベルがないため「どのクラスタが正解か」は分からず、「似たもの同士がまとまった結果」だけが得られます。
目的:クラスタ内距離の和(SSE)の最小化 — 最小化するのは歪み(SSE)です。中心の更新式は「そのクラスタに属する点の座標の平均」で、こう動かすとそのクラスタのSSEが減ります。
数式に抵抗がある場合 — 距離の式は「1点と1つの中心の間の長さ」を測るだけです。SSE は「クラスタがどれだけまとまっているか」を1つの数にしたもので、中心の更新式は「そのクラスタの点の座標の平均」を求める式です。下の数式の読み方で記号ごとに説明しています。
Ch01教師なし学習の代表例 — K-meansは「ラベルなしで構造・クラスタを見つける」を実際に実装した代表アルゴリズムです。顧客セグメンテーション、文書・画像クラスタリング、異常検知の前処理などで最初に試す手法です。
顧客セグメンテーション — 購買履歴だけがあり顧客タイプのラベルがないとき、K-meansで似た顧客をまとめ、人が各クラスタに意味(VIP・一般・離脱リスクなど)を付けて活用します。
直感的で実装が簡単 — 割り当て(最近傍の中心)と更新(平均)だけの反復なので実装しやすく、2次元で可視化すると「まとまる」過程が確認しやすいです。
クラスタリング — 顧客セグメンテーション、トピック・文書のまとめ、画像の色・領域圧縮、遺伝子発現のグループ化など。
前処理・特徴要約 — クラスタ番号を新特徴として教師ありモデルに入れたり、クラスタ代表だけ残してデータを圧縮したりする用途で使います。
Kの選択 — Kは利用者が決めます。複数のKでSSE・シルエットなどを見て、肘の位置や解釈しやすさで選びます。
まとめ
(1) 入力: ラベルなしの点、クラスタ数 。
(2) 初期化: 個の中心をランダムまたはヒューリスティックで置く。
(3) 割り当て: 各点を最も近い中心のクラスタに割り当て。
(4) 更新: 各クラスタの点の座標平均を新中心にする。
(5) 反復: 割り当て・更新が変わらなくなるまで3–4を繰り返す。
目的: SSE(歪み) の最小化。
中心の更新式:
下の表と例を参照してください。
用語説明
- 項目距離の2乗
- 説明2点 , のユークリッド距離の2乗:。比較だけなら平方根は不要。
- 項目割り当て
- 説明点と 個の中心が与えられたとき、各中心までの距離(または距離2乗)を計算し、最も小さい中心の番号(1から)がその点のクラスタ。
- 項目中心の更新
- 説明クラスタ に属する点の 座標の平均、 座標の平均が新中心 。必要なら四捨五入。
- 項目SSE
- 説明1クラスタ内で 。各点と中心の距離2乗の和。
| 項目 | 説明 |
|---|---|
| 距離の2乗 | 2点 , のユークリッド距離の2乗:。比較だけなら平方根は不要。 |
| 割り当て | 点と 個の中心が与えられたとき、各中心までの距離(または距離2乗)を計算し、最も小さい中心の番号(1から)がその点のクラスタ。 |
| 中心の更新 | クラスタ に属する点の 座標の平均、 座標の平均が新中心 。必要なら四捨五入。 |
| SSE | 1クラスタ内で 。各点と中心の距離2乗の和。 |
例(割り当て)
中心 , 、点 の属するクラスタ番号は?
距離2乗:, 。同点なら1番。→ 答 1
例(中心更新)
クラスタ1に点 , が属するとき新中心:, 。→ (2, 3)
数式の読み方
① 距離
何の式? — 1つのデータ点 と1つの中心 の間の直線距離(定規で測った長さ)を表す式です。
記号の意味 — はその点の 番目の特徴の値、 は中心の 番目の座標です。特徴が2つ(例:身長・体重)なら , がそれで、 を足して平方根を取ると、2次元では三平方の定理と同じ「直線の長さ」になります。
数値例 — 点 、中心 のとき、差は 、。距離の2乗 、距離 。
K-meansでは — 「どちらの中心が近いか」の比較だけすればよいので、平方根は省略して距離の2乗 だけ使ってもよいです。小さい方が近い中心です。
一言: 点と中心の直線距離(またはその2乗)を求める式。
② 目的(SSE)
何の式? — 「全クラスタについて、各点が自分のクラスタの中心からどれだけ離れているか」を2乗して足し合わせた値です。これをSSE(歪み)といいます。
記号の意味 — =クラスタ番号(1, 2, …)。= 番クラスタに属する点の集合。= 番目の点の座標。= 番クラスタの中心。 は点 とその中心の距離の2乗です。
なぜ2乗? — 2乗すると「遠いほど値が大きく」なり、しかも正の値だけになるので、「まとまりの良さ」が1つの数 で表せます。 が小さいほど点が中心のまわりにまとまっているので、アルゴリズムは を減らすように中心を動かします。
例 — クラスタ1に点が3つあり、各点の中心までの距離の2乗が 1, 4, 9 なら、そのクラスタの寄与分は 。全クラスタでこうした値を足したものが です。
一言: クラスタがどれだけまとまっているかを表す数。小さいほどよい。
③ 中心の更新
何の式? — 番クラスタに属する点の座標の平均を求め、それを新中心にする式です。
記号の意味 — =クラスタ に属する点の個数。=そのクラスタの点の , 座標をそれぞれ全部足したもの。 をかけると平均になります。
数値例 — クラスタ1に点 , , の3つがあるとき 。 の和 、 の和 。新中心 、 → (3, 2)。
なぜ平均? — 中心を点の平均の位置に動かすと、そのクラスタ内の「点と中心の距離の2乗の和(SSE)」が減ります。そのため K-means はこの式で中心を更新します。
一言: そのクラスタに属する点の の平均、 の平均を新中心にします。