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の収束プロセス
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| ISO/IEC 22989:2022 | AI概念・用語(教師なし学習・クラスタリングの定義を含む) |
関連用語
- クラスタリング — k-meansが属するアルゴリズムカテゴリ
- 次元削減 — k-means前にPCA等で次元削減することで精度が上がることがある
- t-SNE・UMAP — k-meansのクラスタ結果を2Dで可視化するツール
- 特徴量エンジニアリング — k-meansの精度は特徴量のスケーリングに大きく依存する
- 損失関数 — k-meansの慣性(inertia)はクラスタの損失関数に相当する
- 交差検証 — シルエット係数など内部評価指標でkを選ぶ際の参考手法
- 決定木・ランダムフォレスト — k-meansで作ったクラスタを教師あり学習で解釈するときに使うモデル