K-meansクラスタリングの基礎と実装
K-meansクラスタリングは、教師なし学習の代表的な手法の一つであり、データを複数のグループ(クラスタ)に自動的に分類するアルゴリズムです。データ同士の類似性に基づいてグループ化を行うため、顧客分析や画像処理、異常検知など幅広い分野で利用されています。
ここでは、K-meansクラスタリングの基本的な考え方や仕組み、クラスタ数の決め方、活用例について解説します。
K-meansクラスタリングの仕組みを図で理解する

K-meansクラスタリングとは?
K-meansクラスタリングは、データをあらかじめ指定したK個のクラスタに分割するアルゴリズムです。
各データは最も近いクラスタ中心(セントロイド)へ割り当てられ、クラスタ中心を何度も更新しながら最適なグループ分けを行います。
例えば顧客データであれば、「若年層」「ファミリー層」「高所得層」など、似た特徴を持つグループを自動的に発見できます。
K-meansの基本的な流れ
K-meansは次の手順でクラスタを作成します。
- K個のクラスタ中心(セントロイド)を配置する
- 各データを最も近いセントロイドへ割り当てる
- 各クラスタの重心を計算する
- 重心を新しいセントロイドとして更新する
- 変化がほとんどなくなるまで繰り返す
最終的に、似た特徴を持つデータ同士が同じクラスタに分類されます。
セントロイド(クラスタ中心)とは?
セントロイドとは、クラスタ内のデータの平均位置を表す点です。
K-meansでは、このセントロイドを中心としてクラスタが形成されます。
| 用語 | 説明 |
|---|---|
| クラスタ | 似た特徴を持つデータの集まり |
| セントロイド | クラスタの中心となる代表点 |
| K | 作成するクラスタ数 |
K-meansの特徴
K-meansには次のような特徴があります。
- 計算速度が速い
- 実装が簡単
- 大規模データにも適用しやすい
- 教師データが不要
- 似たデータを自動的にグループ化できる
そのため、教師なし学習の入門アルゴリズムとしてよく利用されています。
クラスタ数(K)の決め方
K-meansでは、事前にクラスタ数Kを指定する必要があります。
しかし実際には、最適なクラスタ数が分からない場合も少なくありません。
そのような場合によく使われるのがエルボー法(Elbow法)です。
エルボー法(Elbow法)
クラスタ数を増やしていくと、クラスタ内のばらつき(SSE)は小さくなります。
しかし、ある程度を超えると改善効果が小さくなります。
このグラフの「ひじ(Elbow)」のように折れ曲がる部分を最適なクラスタ数の候補として選びます。
| クラスタ数 | SSEの傾向 |
|---|---|
| 少ない | ばらつきが大きい |
| 適切 | 効率よく改善される |
| 多すぎる | 改善効果が小さい |
K-means++とは?
通常のK-meansでは、最初のセントロイドをランダムに選びます。
しかし、初期位置が悪いとクラスタリング結果が不安定になることがあります。
K-means++は、初期セントロイドをできるだけ離して配置することで、この問題を改善する手法です。
| 手法 | 特徴 |
|---|---|
| K-means | 初期中心をランダムに選ぶ |
| K-means++ | 中心を分散させて選び、安定した結果を得やすい |
現在の多くのライブラリでは、K-means++が標準設定として採用されています。
K-meansの活用例
K-meansはさまざまな分野で利用されています。
| 分野 | 活用例 |
|---|---|
| マーケティング | 顧客セグメントの分類 |
| ECサイト | 購買傾向による顧客分類 |
| 画像処理 | 画像の色数削減や圧縮 |
| 位置情報分析 | 地域ごとの利用者グループ化 |
| 異常検知 | 通常グループから離れたデータの発見 |
画像圧縮への応用
画像は多数の色で構成されています。
K-meansを使うと、似た色を同じクラスタにまとめることで色数を減らし、画像サイズを小さくできます。
例えば数百万色ある画像を16色や32色程度に削減することで、データ容量を大幅に削減できます。
K-meansの注意点
K-meansは便利なアルゴリズムですが、いくつか注意点があります。
- クラスタ数を事前に決める必要がある
- 外れ値の影響を受けやすい
- 球状に近いクラスタを前提としている
- 初期セントロイドによって結果が変わることがある
- 複雑な形状のクラスタは苦手
まとめ
K-meansクラスタリングは、教師なし学習の代表的なアルゴリズムであり、似た特徴を持つデータを自動的にグループ化できます。
セントロイドを繰り返し更新することで最適なクラスタを形成し、顧客分析や画像処理など幅広い用途で活用されています。クラスタ数の決定にはエルボー法、初期化にはK-means++がよく利用されます。