AI・機械学習の基本概念

k-means けいみーんず

クラスタリング重心教師なし学習セグメンテーションエルボー法距離
k-meansについて教えて

簡単に言うとこんな感じ!

「k個の旗を立てて、それぞれの旗に一番近い人を集め、集まった人の真ん中に旗を移動して、また集め直す」イメージだよ!これを繰り返すと自然にグループが形成される——それがk-meansなんだ。「何グループに分ける?」という数(k)を最初に決める必要があるのがポイントだよ!


k-meansとは

k-means(k平均法)は、データをk個のクラスタに分割するクラスタリングアルゴリズムです。各クラスタの重心(セントロイド) にデータが集まるように、重心の位置とクラスタの割り当てを交互に更新することで最適な分類を求めます。

アルゴリズムは非常にシンプルです。①k個の重心をランダムに配置する、②各データを最も近い重心のクラスタに割り当てる、③各クラスタの重心を所属データの平均に移動する、④②③を変化がなくなるまで繰り返す——以上です。

k-meansの「平均(means)」という名前は、重心をクラスタ内データの平均値で更新することに由来します。計算コストが低く、大規模データへの適用も可能なため、顧客セグメンテーション・画像の色量子化・文書クラスタリングなど幅広い実務で使われます。


k-meansのアルゴリズム

ステップ内容
①初期化k個の重心をランダム(またはk-means++で賢く)配置
②割り当て各データを最も近い重心のクラスタに割り当て
③更新各クラスタの重心を所属データの平均位置に移動
④収束判定重心が動かなくなったら終了。動いたら②へ戻る

クラスタ数kの決め方

エルボー法(Elbow Method):
  k=1, 2, 3, ... と変えながら「慣性(inertia)」
  (各データから重心までの距離の二乗和)を計算。
  グラフが「肘(elbow)」のように曲がる点が最適なk

シルエット法(Silhouette Method):
  シルエット係数が最大になるkを選ぶ
  (-1〜1、1に近いほど良いクラスタ分離)

ビジネス的なk:
  「顧客を3セグメントで管理したい」など
  業務上の意図でkを決めることも多い

歴史と背景

  • 1957年:Stuart Lloydがベル研究所でk-meansの原型アルゴリズムを開発(当時は社内メモ)
  • 1965年:E. W. Forgyが独立して類似アルゴリズムを発表
  • 1982年:LloydがIEEEで正式に論文発表。「Lloydのアルゴリズム」とも呼ばれる
  • 1984年:MacQueenが「k-means」という名称を定着させる
  • 1998年:MacKayらがk-meansをExpectation-Maximization(EM)アルゴリズムの特殊ケースとして理論的に整理
  • 2007年:Arthur & Vassilvitskiiがk-means++(賢い初期化手法)を発表。局所最適解に陥りにくくなる
  • 現在:scikit-learnに標準実装され、クラスタリングの入門として世界中で使われる。k-means++が事実上の標準初期化手法

k-meansの収束プロセス

k-means(k=3)の収束ステップ ①初期配置 C1 C2 C3 重心をランダム配置 ②割り当て C1 C2 C3 各データを最近傍の重心に割当 ③重心更新・繰り返し C1 C2 C3 重心が平均位置に移動 ④収束 C1 C2 C3 重心が安定→完了 k-meansは局所最適解に陥る可能性がある → k-means++初期化や複数回試行で対策

関連する規格・RFC

規格・RFC番号内容
ISO/IEC 22989:2022AI概念・用語(教師なし学習・クラスタリングの定義を含む)

関連用語