技術(非IT系)

k-means法をわかりやすく解説!仕組みと手順は?(クラスタリング:重心:分類:アルゴリズム:機械学習など)

当サイトでは記事内に広告を含みます

「k-means法とはどんな手法なのか」「クラスタリングのアルゴリズムとして何をしているのかを理解したい」——機械学習やデータ分析を学ぶ多くの方が最初に出会う教師なし学習の代表格が、このk-means法です。

クラスタリング・重心・分類・アルゴリズム——これらすべてがk-means法の理解と深く関わっています。

本記事では、k-means法の意味と仕組み、アルゴリズムの手順、クラスタ数kの選び方、メリット・デメリット、実装方法と実際の応用場面まで、わかりやすく体系的に解説していきます。

データサイエンスの基礎を固めたい方から、実務でクラスタリングを活用したい方まで、幅広く役立つ内容となっているでしょう。

k-means法の意味と定義——教師なし学習の代表的なクラスタリング手法

それではまず、k-means法の意味と定義について解説していきます。

k-means法(k-平均法)とは、データをk個のクラスタ(グループ)に分類する教師なし学習のクラスタリングアルゴリズムであり、各クラスタを代表する重心(セントロイド)を反復的に更新することでデータの分類を最適化する手法です。

「k」はクラスタの数(ユーザーが事前に指定するハイパーパラメータ)、「means」は各クラスタの平均値(重心)を意味します。

k-means法が「教師なし学習」である理由

k-means法が教師なし学習(Unsupervised Learning)に分類される理由は、正解ラベル(教師データ)を必要とせずデータ間の類似性だけに基づいてグループ化を行うためです。

「どのデータが同じグループか」という答えを人間が事前に与えることなく、アルゴリズムが自動的にデータの構造を発見します。

顧客セグメンテーション(顧客を行動パターンで自動分類)・画像の色量子化・文書の自動グループ化など、正解ラベルがなくてもデータの中に潜む構造を自動的に発見できる点がk-means法の最大の特徴です。

k-means法が最小化する目的関数

k-means法は「各データ点からその所属クラスタの重心までの距離の二乗和(Within-Cluster Sum of Squares・WCSS)」を最小化することを目的としています。

k-means法の目的関数(WCSS)

J = Σᵢ Σₓ∈Cᵢ ||x − μᵢ||²

Cᵢ:第iクラスタに属するデータ点の集合

μᵢ:第iクラスタの重心(クラスタ内データ点の平均)

||x − μᵢ||²:データ点xと重心μᵢのユークリッド距離の二乗

→ このJが小さいほど、各クラスタ内でデータが重心の周囲に密集している(良いクラスタリング)

k-means法のアルゴリズムの手順——反復による最適化プロセス

続いては、k-means法のアルゴリズムの具体的な手順について確認していきます。

k-means法のアルゴリズムは4つのステップを繰り返すシンプルな構造です。

k-means法の4ステップ

k-means法のアルゴリズム(4ステップ)

【Step1:初期化】

k個の重心(セントロイド)の初期位置をランダムにまたは特定の方法(k-means++など)で設定する

【Step2:割り当て(Assignment)】

全データ点について、最も近い重心を持つクラスタに割り当てる

(各データ点はk個の重心のうち最も距離が小さい重心のクラスタに所属する)

【Step3:更新(Update)】

各クラスタの新しい重心を、そのクラスタに属する全データ点の平均として計算する

(重心の位置がクラスタ内の平均点に移動する)

【Step4:収束判定】

重心の位置が変化しなくなった(または変化量が閾値以下になった)場合は終了

変化があれば Step2に戻り繰り返す

k-means法はStep2(割り当て)とStep3(更新)を繰り返すことでWCSSを単調減少させ、有限回の反復で必ず収束することが数学的に保証されているでしょう。

k-means法の収束の可視化——各ステップでの変化

k-means法がどのように収束していくかをステップごとに見てみましょう。

イテレーション 割り当てステップ 更新ステップ 変化
初期(0回目) ランダムな重心位置を設定 重心が不適切な位置にある
1回目 各点を最近傍重心に割り当て クラスタ平均で重心を更新 重心がクラスタ中心に向かって大きく移動
2〜3回目 境界付近の点の所属が変化 重心の位置が微調整される クラスタ境界が安定化してくる
収束(n回目) どの点も重心の変化なし 重心が変化しない アルゴリズム終了

初期値問題とk-means++——より良い初期化方法

k-means法の大きな問題点の一つが、初期重心の設定方法によって結果が大きく変わることです。

ランダムな初期化では局所最適解(全体の最適ではないが局所的に最適な解)に収束してしまうことがあります。

この問題を解決するために提案されたのが「k-means++」という初期化手法です。

k-means++では最初の重心をランダムに選んだ後、残りの重心を「既存の重心から遠いデータ点ほど高い確率で選ぶ」という確率的な方法で設定します。

k-means++による初期化は標準的なランダム初期化と比べて理論的に優れた近似精度を保証しており、scikit-learnのKMeansクラスではデフォルトでk-means++が採用されているでしょう。

クラスタ数kの選び方——最適なkを決める手法

続いては、k-means法における最も重要な設計判断の一つである「クラスタ数kの選び方」について確認していきます。

k-means法では適切なkの値を事前に指定する必要があり、これがしばしば難しい判断となります。

エルボー法——WCSSの変化からkを決める

最も広く使われるkの選択方法が「エルボー法(Elbow Method)」です。

異なるkの値(例:1〜10)でk-means法を実行し、各kに対するWCSS(クラスタ内の距離の二乗和)をグラフにプロットします。

kが増えるにつれてWCSSは単調減少しますが、ある点を過ぎると減少が急に緩やかになります。

この「肘(Elbow)」の形をした折れ曲がり点が最適なkの目安となります。

エルボー法はグラフの「肘」の位置を視覚的に判断するため、主観的な要素が入りやすいという限界があるが、クラスタ数の検討に最初に試みる基本的な方法として広く活用されているでしょう。

シルエット係数——クラスタの質を定量的に評価する

シルエット係数(Silhouette Score)は、各データ点がどれだけ適切なクラスタに割り当てられているかを−1〜1の範囲で定量評価する指標です。

シルエット係数が1に近いほどクラスタリングが良好で、0に近いほどクラスタ間の境界付近にあり、−1に近いほど誤ったクラスタに割り当てられていることを示します。

異なるkに対するシルエット係数の平均値を比較し、最もシルエット係数が高いkを最適値として選択する方法です。

ギャップ統計量——ランダムデータとの比較によるk選択

ギャップ統計量(Gap Statistic)は、実データのクラスタリング結果をランダムに生成したデータのクラスタリング結果と比較することで最適なkを選ぶ統計的手法です。

ランダムデータと比べてWCSSの減少が大きいkを最適クラスタ数として選択します。エルボー法よりも客観的な指標ですが計算コストが高くなります。

k-means法のメリット・デメリットと実際の応用場面

続いては、k-means法のメリット・デメリットと実際の応用場面について確認していきます。

k-means法のメリット

k-means法の主なメリットを整理しましょう。

第一に、アルゴリズムが単純でわかりやすく、実装も容易です。

第二に、計算効率が高く大規模データにも対応できます。計算量はO(n×k×i×d)(n:データ数・k:クラスタ数・i:反復回数・d:次元数)であり、比較的スケーラブルです。

第三に、結果の解釈が直感的です。各クラスタの重心が「典型的なデータ点」として解釈でき、クラスタの意味を理解しやすいです。

k-means法のデメリット

k-means法には重要なデメリットもあります。

最大のデメリットはクラスタ数kを事前に指定する必要があることです。適切なkの選択が難しく、誤った選択は意味のないクラスタリング結果につながります。

非球形・不均一密度のクラスタへの対応が苦手という限界もあります。k-means法はクラスタが球形(等方的)で各クラスタのサイズが概ね均等であることを暗黙に仮定しています。

外れ値(異常値)の影響を受けやすいという問題もあり、外れ値が重心の計算に影響して不適切なクラスタリングを引き起こすことがあります。

k-means法の実際の応用場面

応用分野 具体的な用途 kの解釈
マーケティング 顧客セグメンテーション 顧客グループ数
画像処理 画像の色量子化・圧縮 使用する色の数
医療 患者の症状パターンの自動分類 症状グループ数
自然言語処理 文書の自動トピック分類 トピック数
製造・品質管理 製品の不良パターンのグループ化 不良パターン数

k-means法の重要ポイントまとめ

・定義:データをk個のクラスタに分類する教師なし学習のクラスタリング手法

・目的関数:クラスタ内の距離の二乗和(WCSS)を最小化する

・アルゴリズム:初期化→割り当て→更新→収束判定の反復

・初期値問題:k-means++で局所最適解のリスクを低減

・k選択:エルボー法・シルエット係数・ギャップ統計量で評価

・限界:k事前指定・球形クラスタの仮定・外れ値に弱い

まとめ

本記事では、k-means法の意味と定義から、アルゴリズムの4ステップの手順、初期値問題とk-means++、クラスタ数kの選び方(エルボー法・シルエット係数)、メリット・デメリット、実際の応用場面まで体系的に解説してきました。

k-means法は「重心への割り当てと重心の更新を繰り返してクラスタ内の分散を最小化する」というシンプルなアイデアに基づいており、教師なし学習の入門として最適であると同時に実務でも幅広く活用されている基礎的かつ強力なクラスタリング手法です。

kの選択・初期値の工夫・特徴量のスケーリングという3点を丁寧に扱うことで、k-means法から高品質なクラスタリング結果を得ることができます。

本記事を参考に、k-means法への理解を深め、データ分析・機械学習プロジェクトに積極的に活用していただければ幸いです。