データ分析
2025/11/07
高好 秀和

k-means法とは何か?

本記事では、教師なし学習の代表的な手法である「k-means法(k平均法)」について、その基本的な考え方から解説します。似たもの同士を「距離」でグループ分けする仕組み(アルゴリズム)や、マーケティングにおける顧客セグメンテーションなどの具体的な活用例、さらに「kの数をどう決めるか」といった実用上の注意点や弱点までを、初心者にもわかりやすく掘り下げます。

導入 たくさんのデータ、どう分ける?

前回の記事では「クラスタリング」の概要と、その代表的な手法としてk-means法に軽く触れました。今回は、そのk-means法(k平均法)について、もう少し深く掘り下げて解説します。


たくさんの顧客データを前にして、「似たような嗜好を持つグループに分けたいけれど、どこから手をつければいいかわからない」と悩んだことはありませんか?この課題を解決するシンプルで強力なツールがk-means法です。


k-means法は「教師なし学習」の一種です。教師なし学習とは、明確な正解データがない状態で、データそのものの特徴からパターンや構造を見つけ出す手法を指します。k-means法はそのシンプルさと分かりやすさから、マーケティングにおける顧客セグメンテーション(顧客分類)などで広く活用されています。


この記事では、k-means法の基本的な考え方から、そのアルゴリズムの「賢い」仕組み、具体的な活用例、そして注意点までを、初心者向けにさらにやさしく解説します。


基本の考え方:似たもの同士を集めるシンプルなルール

k-means法の中心的なアイデアは非常にシンプルです。それは、「同じグループ(クラスター)内のデータ同士は距離が近く、違うグループのデータとは距離が遠くなるように分ける」というルールに基づいています。


この考え方を理解するために、2つの重要な用語をおさえておきましょう。



  • クラスター (Cluster): データを分類したときの「グループ」や「集団」のことです。

  • 重心 (Centroid): 各クラスターの「中心点」のことです。文字通り、そのグループの「重心」や「平均」にあたる点です。


たくさんの点が散らばったグラフ(散布図)を想像してみてください。k-means法は、この点群を数学的な**「距離」**に基づいて自動でグループ分けしてくれます。


この「距離」とは、多くの場合、グラフ上の2点間を定規で測ったような「まっすぐな距離」(ユークリッド距離)を指します。この「近さ」を基準に、最適なグループの「中心(重心)」を見つけ出してくれるのがk-means法の賢いところです。


以下の図は、データの点群が3つのクラスター(赤・緑・青)に分類され、それぞれのクラスターの中心(重心)がX印で示されている例です。見てわかるように、同じクラスター内の点は互いに近く、異なるクラスターの点同士は遠く離れています。このようにk-means法では、「距離が近いもの同士」をグループにまとめ、距離が遠いものは別グループに分けるというシンプルなルールでデータを分類します。


仕組みの核心:自動で「中心」を見つけるアルゴリズム

では、k-means法は具体的にどのようにして最適な「中心」を見つけ出すのでしょうか。数式を使わず、「グループの旗決めゲーム」にたとえて、その流れを見ていきましょう。


ステップ1:グループ数(k)を決め、仮の「旗」を立てる


まず、分析者が「データをいくつのグループに分けたいか(kの数)」を決めます。(例:k=3) 次に、データが散らばる広場に、ランダムにk本の「仮の旗(重心)」を立てます。これがスタート地点です。


ステップ2:全員、一番近い「旗」に集まる


広場にいるすべての人(全データ)が、自分から見て一番近い「旗」を見つけ、その旗のグループに参加します。 これで、広場にいた全員が、k個のいずれかのグループに一時的に所属することになります。


ステップ3:各グループの「中心」に「旗」を立て直す


ステップ2でできたグループごとに、所属するメンバー全員の「ちょうど真ん中の地点(平均点)」を計算します。 そして、今立っている「仮の旗」を抜き、計算したその新しい「中心」地点に旗を立て直します。これが新しい**「重心」**となります。


ステップ4:「旗」が動かなくなるまで繰り返す


旗が動いたことで、人によっては、さっきまで一番近かった旗よりも、別の旗の方が近くなるかもしれません。 そのため、ステップ2(一番近い旗に集まる)ステップ3(旗を真ん中に立て直す)を何度も繰り返します。


この「集まる」→「中心を計算」→「旗を移動」→「また集まる」…という作業を繰り返していくと、やがて誰も所属グループを変えなくなり、「旗」の位置も動かなくなります。


この「誰も動かない=旗も動かない」状態(収束)になったら、最適なグループ分けが完了したと判断し、処理を終了します。この繰り返しこそが、k-means法が最適なグループを見つけ出すための心臓部です。


実際の使い方:どんな場面で役立つの?

k-means法は、さまざまなビジネスシーンで役立てられています。


マーケティングでの活用例


例えば、ネットショップの顧客分類を考えてみましょう。顧客データとして「X軸にサイトへのアクセス回数」「Y軸に累計の購買金額」をとって散布図を作るとします。


このデータにk-means法を適用(例:k=3)することで、顧客を自動的に3つのグループに分類できます。



  • グループA:アクセス回数も購買金額も多い「ロイヤル顧客層

  • グループB:アクセスは多いが購買金額は少ない「比較検討層

  • グループC:アクセスも購買も少ない「休眠顧客層


このように特性が明らかになれば、各グループに合わせたキャンペーン(A層には先行優待、B層には初回割引クーポン、C層には掘り出し物メール)を打つなど、マーケティングの精度を高めることができます。


現場からの実践的な視点


k-means法は混沌としたデータからパターンを見つけ出すのに役立ちますが、実際のビジネスデータは必ずしもきれいに分類できるわけではありません。


専門家は、「実践で使うとそのような都合の良いデータはほとんどなく、むしろ仮説を否定する場合に使う方が現実的かもしれません」と指摘します。例えば、「自社の顧客は2つの明確なグループに分かれているはずだ」という仮説を検証するためにk-means法を使い、きれいなクラスターが形成されないことで、その仮説が正しくないと判断する、といった使い方です。


使用ツールについて


このような分析は、専門的なツールを使えば実行できます。プログラミング言語のPython(特にscikit-learnというライブラリ)は、データサイエンスの分野で広く使われています。また、TableauのようなBI(ビジネスインテリジェンス)ツールにも、クラスター分析機能としてk-means法が搭載されていることが多く、プログラミング不要で分析が可能です。


よくある誤解や注意点

k-means法はシンプルで強力ですが、万能ではありません。使う上で知っておくべき重要な注意点(弱点)がいくつかあります。


注意点1:グループ数(k)を自分で決める必要がある


k-means法は「k個に分けて」という命令を実行するだけで、「最適なkの数」を自動で教えてはくれません。分析者が目的やデータを見ながら試行錯誤して決める必要があります。


注意点2:最初の「旗」の立て方で結果が変わることがある


ステップ1で「旗」をランダムに置くため、実行するたびに分類結果がわずかに変わる可能性があります。 これは「登山口(最初の旗)が違うと、たどり着く頂上(結果)が変わってしまう」ことに似ています。たどり着いた頂上が、必ずしも一番高い頂上(全体最適解)であるとは限らないのです(局所最適解)。


注意点3:「外れ値」の影響を受けやすい


一つだけポツンと離れたデータ(外れ値)があると、重心(平均点)を計算する際に、その外れ値に「中心」が強く引っ張られてしまいます。 これは「グループの平均を計算するときに、一人だけ極端な値の人がいると、平均点がそちらに寄ってしまう」のと同じです。結果として、全体の分類精度が下がることがあります。




注意点4:きれいな球形のグループ分けを想定している


k-means法は、各グループがきれいな円形(3Dなら球形)で、データのばらつきが同程度であることを前提としています。 なぜなら、アルゴリズムが「1つの中心点からの距離」だけを見ているためです。そのため、三日月形やドーナツ形、細長いグループを正しく見つけるのは苦手です。


例えば、半月状(弧状)に分布するデータを2つのグループにクラスタリングしようとした場合、k-means法(左図)では各クラスターを無理に球状に区切ろうとするため、二つの半月形のデータ群がそれぞれ分断される結果になってしまいます。一方、密度に基づくクラスタリング手法であるDBSCAN(図の右)を適用すると、弧を描くような二つのグループをその形状のまま正しく識別することができます。つまり、k-means法では検出しづらい非球状のパターンであっても、他の適切な手法を用いることでクラスタリングが可能となるのです。


まとめと次のステップ

k-means法は、データに隠されたパターンを見つけ出し、自動でグループ分けできるシンプルで高速な手法です。


しかし、万能ではなく、グループ数を自分で決める必要があったり、データの形状や外れ値に影響されたりといった注意点も存在します。この記事で解説したk-means法の注意点は、データサイエンスの世界ではよく知られた課題であり、それぞれに対応するための発展的な手法が存在します。


次の一歩として、以下の点を学んでみることをお勧めします。




  • 注意点1「グループ数(k)を自分で決める必要がある」という課題には: kの数を客観的に判断する手助けとなる「エルボー法」や「シルエット分析」といった手法について学んでみましょう。


    エルボー法では、クラスター数kを増やしていったときのクラスタリング誤差(各クラスター内の二乗誤差和)の減少の様子をプロットし、その曲線の「折れ曲がり(肘)」から適切なkの目安を判断します。例えば上のグラフでは、kを増やすにつれて誤差は小さくなっていきますが、k=3を境に減り方が緩やかになっています。このようにに相当するポイント(ここでは3クラス目付近)では追加のクラスターによる改善効果が薄れていることがわかり、そこがクラスタ数選択の参考目安となります。





  • 注意点2「最初の『中心』の置き方で結果が変わることがある」という課題には: 最初の中心の選び方を改良し、より安定した結果を得やすくした「k-means++」という手法について調べてみましょう。これは、最初の中心点を互いに離れた場所に賢く配置する工夫がされています。

  • 注意点4「きれいな球形のグループ分けを想定している」という課題には: k-means法とは異なる考え方でグループ分けを行う「階層クラスター分析」や「DBSCAN」といった、他のクラスタリング手法についても学んでみると、分析の幅が大きく広がります。




この記事で、k-means法がどのように動いているか、より深くご理解いただけたなら幸いです。



New call-to-action