知識グラフ全体

k平均法(k-means法)を動かして学ぶ

「一番近い重心に集まる」→「集まった点の真ん中に重心が動く」・・・・・・このたった2つの操作を交互にくり返すだけで,ばらばらに置かれた点がいくつかのグループへ落ち着いていく過程を観察できるアプリの,しくみと数式の解説.

対象アプリ:k平均法学習


01 - 概要

このアプリで学べること

k平均法(k-means法)は,あらかじめ決めた個数 k のグループに,データをできるだけ「近いもの同士」でまとめる代表的な手法である.このアプリを操作すると,次のことが体感できる.

  • 重心(クラスターの代表点)への割り当てと,重心の位置の更新を交互にくり返すだけで,ばらばらな点が自然にグループへ分かれていく様子.
  • 「所属が変わった個体の数」がだんだん減り,やがて0になって止まる・・・・・・「収束」がどういう状態かということ.
  • 重心の初期位置(最初にランダムに選ばれる個体)によって,たどり着く最終的なグループ分けが変わることがあるという,この手法の弱点.
  • クラスターの数 k を変えると,グループの粒度がどう変わるか.

02 - モデル化

個体・重心・所属

個体 盤面上の1つの点.ドラッグで自由に動かせる.
重心
(セントロイド)
各クラスターを代表する点(ひし形 G1, G2, … で表示).実体を持つデータ点ではなく,計算で求めた「そのグループの平均位置」.
所属 ある個体が,どの重心に最も近いか(=どのクラスターに属するか).個体の色は,所属している重心の色に合わせて塗られる.

03 - 数式

距離・重心の更新・収束判定

個体 p と重心 G の近さは,ユークリッド距離で測る.

個体と重心の距離

d p,G = x p x G 2 + y p y G 2

各個体は,最も距離が近い重心の所属になる.

所属の決定

所属 p =arg min c d p,G

重心は,そのクラスターに現在所属している個体の座標の平均(重心=重さの中心)として計算し直す.クラスター c n c 個の個体が所属しているとき,

重心の更新

x ¯ c = 1 n c x p y ¯ c = 1 n c y p   (pはクラスターcに所属する個体)

「重心の更新」→「所属の決定」を1セットとして繰り返し,前回と比べて所属が変わった個体が1つもなくなったら,そこで終了(収束)とみなす.

04 -手順

k平均法の反復手順

  1. クラスター数 k と個体数を決め,個体をランダムな位置に配置する.
  2. 個体の中からランダムに k 個を選び,それをそのまま初期の重心とする.
  3. すべての個体を,最も近い重心の所属とする(最初の色分け).
  4. 各クラスターに所属する個体の平均位置を計算し,それを新しい重心の位置とする.
  5. すべての個体を,あらためて最も近い新しい重心に所属させ直す.
  6. 所属が変わった個体が1つでもあれば手順4に戻る.0であれば終了.

このアプリの「次のステップ」ボタンは,手順4〜5をちょうど1回分だけ実行し,そのとき所属が変わった個体の数を表示するボタンである.

05 - 樹形図

重心が動くと,所属が変わる

下の図は,2つの重心 G1・G2 と7つの個体の例である.境界付近にある個体は,重心の位置がわずかに動くだけで,所属する重心(=色)が入れ替わることがある.

06 - 観察

観察ポイント

  • 重心が中心へ寄っていく: 反復を重ねるたびに,重心(ひし形)はだんだんその色の点の集まりの真ん中に近づいていく.
  • 収束までの速さ: 「所属が変わった個体の数」は,多くの場合最初の数回で大きく減り,やがて0になる.減り方が点の配置やクラスター数でどう変わるかを見比べる.
  • 矢印の軌跡: 重心の移動を示す矢印は初期化までずっと残るので,重心がどんな経路をたどって収束したかを後から確認できる.

初期値によって結果が変わる(局所最適).k平均法は,最初にランダムに選ばれる重心の位置しだいで,最終的にたどり着くグループ分けが変わることがある.同じ点の配置のまま「現在の位置でやり直す」を何度か押し,毎回同じグループ分けになるとは限らないことを確かめてみよう.

変えるもの 起こりやすいこと
初期重心の選ばれ方 同じ点の配置でも,収束後のグループ分けが変わることがある(局所最適)
クラスター数 k を増やす グループがより細かく分割され,1回あたりの重心の移動距離は小さくなりやすい
クラスター数 k を減らす 大まかな分割になり,色の境界をまたぐ大きな重心移動が起こりやすい
個体数を増やす 重心の位置がより安定し,1個の外れた点の影響を受けにくくなる

07 - 実験

やってみよう

  1. クラスター数3・個体数20で「初期化」し,「次のステップ」を収束するまで押し続けて,何回で収束するか数える.
  2. 収束後,点の位置はそのままに「現在の位置でやり直す」を数回押し,毎回同じグループ分けに収束するか確認する.
  3. 個体をドラッグして,明らかに離れた2つの塊を作ってから初期化し直し,重心がそれぞれの塊の中心に収束する様子を見る.
  4. クラスター数を1に近づけたり10に近づけたりして,グループ分けの粒度がどう変わるかを比較する.

08 - 用語

用語ミニ辞典

クラスタリング データを,似ているもの同士のグループ(クラスター)に分ける作業.
重心 (セントロイド) クラスターに属する点の座標の平均.実データではなく計算で求めた代表点.
所属 ある個体がどのクラスター(重心)に属しているかという関係.
反復 「重心の更新」→「所属の決定」の1セット.このアプリの「次のステップ」に対応.
収束 反復を重ねても所属が変化しなくなった状態.これ以上結果が変わらないという合図.
局所最適 初期条件しだいで,本当に最も良い分け方ではない結果に落ち着いてしまうこと.

 

この記事は k平均法学習アプリ の実装内容にもとづく解説であり,実際にアプリを操作しながら読むことを想定している.

ホーム>>カテゴリー別分類>>データ分析>>k平均法(k-means法)を動かして学ぶ

最終更新日:2026年7月17日

[ページトップ]

金沢工業大学

利用規約,誤植や誤りなどがございましたら、こちらからご連絡ください。

google translate (English version)