k-means クラスタリング
点群を k 個のグループに分ける反復法。割り当て → 重心移動 を繰り返し、初期値で収束先(局所解)が変わる様子を体感します。
3
7
0.7 s
反復回数
—
フェーズ
—
割り当て変更数
—
SSE(クラスタ内誤差平方和)
—
点(●)=データ / ✕=重心。重心が動かなくなれば収束。重心(✕)をドラッグして初期位置を変更 / 空き領域クリックでデータ点を追加。
k-means は、ラベルのない点群を k 個のクラスタに分ける代表的な手法です。やることは 2 ステップの繰り返しだけ。
① 割り当て:各点を「いちばん近い重心」の色に塗る。
② 更新:各クラスタの重心(平均位置)を、その色の点の中心へ動かす。
この①②を、割り当てが変わらなくなる(重心が動かなくなる)まで繰り返します。初期重心の置き方で収束先が変わり、必ずしも最良の分割(大域最適)に届かない=局所解に落ちることがあるのが要点です。
① 割り当て:各点を「いちばん近い重心」の色に塗る。
② 更新:各クラスタの重心(平均位置)を、その色の点の中心へ動かす。
この①②を、割り当てが変わらなくなる(重心が動かなくなる)まで繰り返します。初期重心の置き方で収束先が変わり、必ずしも最良の分割(大域最適)に届かない=局所解に落ちることがあるのが要点です。
いま何が起きている?
ここがポイント
- 2 ステップの反復 ── 「最近傍の重心へ割り当て」と「重心=所属点の平均へ更新」を交互に繰り返すだけ。
- SSE は単調減少 ── 各ステップで
Σ‖xᵢ − μ_{c(i)}‖²は必ず下がるか不変。だから必ず収束する。 - 局所解に落ちる ── 初期シードを変えると別の分割に収束する。最終 SSE が小さいほど良い分割。
- k は自分で決める ── k を変えると分割の粒度が変わる。真のグループ数と合わないと不自然に割れる/まとまる。