17
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

K-Meansのクラスタ数はどう決める?シルエット法で最適なKを見つける方法

17
Posted at

クラスタリング分析は、探索的データ分析(EDA)において最も有用な手法の一つです。

image.png

データの中にどのような「グループ」が存在するのか事前に分からない場合でも、クラスタリング分析を行うことで、

  • 顧客セグメント
  • 商品グループ
  • 行動パターン
  • 地域ごとの特徴
  • アンケート回答者タイプ

などのパターンを発見できます。

しかし、クラスタリングには必ず一つの重要な問いが伴います。

「クラスターはいくつ作ればよいのか?」

例えばクラスタリングにおいて最もよく一般的に使われる K-Means クラスタリングという手法では、アルゴリズムを実行する前にクラスター数(K)を決めなければなりません。

クラスタ数が少なすぎると、本来異なるグループが一つにまとめられてしまいますし、逆に多すぎると、本来一つであるべきグループを不自然に細分化してしまい、解釈が難しくなります。

image.png

そこで最適なクラスター数を決める方法はないかというときに、よく使われるのが

  • シルエット法(Silhouette Method)
  • エルボー法(Elbow Method)

といった手法です。

本記事ではシルエット法に焦点を当て、

  • シルエット法とは何か
  • どのように使うのか
  • 解釈時の注意点
  • エルボー法との違い

について解説します。

また最後には、Exploratory に最近追加された K-Means クラスタリング向けシルエット法サポートも紹介します。


シルエット法とは?

シルエット法(Silhouette Method)は、各データポイントが割り当てられたクラスタにどれだけ適合しているかを評価する手法です。

この方法は次の2つの問いを同時に評価します。

  1. 同じクラスタ内のデータと十分に近いか?
  2. 他のクラスタのデータから十分に離れているか?

良いクラスタリング結果は、この両方を満たしている必要があります。

つまり、

  • 同じクラスタ内の他のデータと似ている
  • 他のクラスタ内のデータとは明確に異なる

という状態です。

そして、これらを数値化したものが シルエットスコア(Silhouette Score) です。


シルエットスコアとは?

シルエットスコアは -1〜1 の範囲を取ります。

image.png

例えば、以下のような2次元の空間にいくつかのデータがあったとしましょう。

image.png

そして、これらのデータを3つのクラスターに分けたとします。

image.png

これから、矢印のついた点について、シルエットスコアを計算してみたいと思います。

image.png

シルエットスコアは以下のように計算することができます。

image.png

凝集度とは、どれだけ同じクラスタ内の他のデータと似ているかということで、クラスター内の他の全ての点からの距離を足し上げたものです。

image.png

そして、分離度とは最も近いクラスター内のすべての点との距離の平均。この値が大きければ、他のクラスターのデータから離れているということです。

image.png

そして、分離度から凝集度を引いたものを、分離度または凝集度のどちらか大きい方の値で割ったものがシルエットスコアです。

例えば上記の場合、凝集度は40、分離度は80だったとします。

image.png

その場合、シルエットスコアは0.5となります。

image.png

この式を見てもわかるように、分離度が大きく、凝集度が小さければ分子が大きくなるため、シルエットスコアはより大きくなります。そして、これはこの点が自分が属するクラスターの他のデータとより近く、別のクラスターのデータとはより離れていることを示します。

逆に、分離度が小さく凝集度が大きければ分子は0に近づく、またはマイナスの値となってしまい、シルエットスコアはより小さくなります。これは、この点が自分が属するクラスターの他のデータとより遠く、別のクラスターのデータとはより近いことを示します。

まとめると、シルエットスコアの評価は以下のようになります。

1に近い場合:良い

スコアが 1 に近いほど、

  • 自分のクラスタによく適合している
  • 他のクラスタから明確に分離されている

これが理想的な状態です。

0付近:曖昧

0付近の値は、

  • 2つのクラスタの境界付近に存在している

ことを意味します。

どちらのクラスタにも属しそうな状態です。

必ずしも問題ではありませんが、クラスタ間の分離が弱いことを示します。

負の値:誤分類の可能性

負の値の場合、

  • 割り当てられたクラスタより
  • 別のクラスタの方が近い

ことを示します。

負のスコアを示すデータが多い場合は、クラスタリング結果の信頼性に注意が必要となります。


クラスタ評価で役立つ3つのシルエット指標

先ほどは1つの点(データポイント)についてのシルエットスコアを見てきましたが、これを全ての点について計算し、それらのスコアを平均した「平均シルエットスコア」を使って現在のクラスタリングの質を評価します。

しかし平均だけでは十分ではありません。実際には、次の3つを合わせて見ていくことが重要となります。

  • 平均シルエットスコア
  • 最小シルエットスコア
  • 負のシルエットスコア割合

これらを組み合わせることで、

  • 全体的な品質
  • 問題のあるクラスタ割り当ての有無

をより正確に把握できます。

それでは、各指標を詳しく見ていきましょう。

1. 平均シルエットスコア:全体的な品質

これが一般的で最も重要な指標です。

全観測値のシルエットスコアの平均で、「全体としてクラスタへの割り当てはどれくらいうまくいっているか?」を示します。

例えば、以下のようにクラスターの数を変え、そのたびに平均シルエットスコアを計算したとしましょう。

K 平均シルエットスコア
2 0.42
3 0.51
4 0.47
5 0.39

この場合は クラスターの数が 3 のときの平均シルエットスコアが最も高いため、有力候補になります。

ただし注意が必要です。

平均値は、

  • 一部の誤分類
  • 分離の悪いクラスター

を隠してしまうことがあります。

そこで次の2つの指標も確認します。

2. 最小シルエットスコア:最悪の割り当て

全観測値の中で最も低いシルエットスコアです。

つまり、「最も問題のある割り当てはどれくらい悪いか?」を示します。

K 平均シルエットスコア 最小シルエットスコア
3 0.42 -0.05
4 0.41 -0.48

平均はほぼ同じですが、K=4 には非常に悪い観測値が存在します。

これは

  • 外れ値
  • ノイズ
  • クラスタの重なり
  • 不適切な K

などが原因で起こります。

ただし最小値は一つの観測値に大きく影響されるため、この値が悪いからと言って、必ずしもそれがクラスターの数がおかしいことを示すというわけではありません。

あくまでも、警告指標として確認するというのがおすすめです。

3. 負のシルエットスコアの割合

負のシルエットスコアの割合は、シルエットスコアが 0 未満(マイナスの値)であるデータの割合です。

つまり、「別のクラスタの方が近い可能性のあるデータがどれくらい存在するか?」を示します。

例えば、以下のようにクラスターの数を変え、そのたびに平均シルエットスコアと負のシルエットスコアの割合を計算したとしましょう。

K 平均シルエットスコア 負のシルエットスコアの割合
3 0.42 2%
4 0.44 12%

この場合、クラスターの数が4 の場合、3に比べて平均スコアが高いものの、負のスコアが12%もあります。

これは、クラスターの数が4 の場合、一定の割合のデータがうまく分類されていないことを意味します。

そのため、平均値が少し低くても クラスターの数が 3 の方がより安定した結果だと言えます。


3つの指標をどう使うか

ここで、これまで見てきたシルエットスコアに関する3つの指標を整理すると以下のようになります。

指標 答える問い 役割
平均シルエットスコア 全体の品質は? 主要指標
最小シルエットスコア 最悪のケースは? 警告指標
負のスコアの割合 問題のあるデータは多いか? 安定性チェックのための指標

これらの指標を以下のように使って、クラスターの数を決めていくことになります。

  1. 平均シルエットが最も高い K を候補にする
  2. 負スコア割合が低いか確認する
  3. 最小スコアが極端に低くないか確認する
  4. 各クラスターの特徴を確認する
  5. 実務的に意味のある K を選ぶ

目的は単に高スコアを選ぶことではありません。

分離性・安定性・解釈性・実用性を兼ね備えたクラスタを見つけることが大切です。


シルエット法とエルボー法の違い

ところで、クラスターの数を選択するときによく使われる手法として「エルボー法」というものもあります。

エルボー法

エルボー法は「各クラスタがどれだけ凝集している(コンパクト)か」を評価します。

K-Means クラスタリングは各観測値とクラスタの中心との距離(WSS)を最小化するためのアルゴリズムであるため、K(クラスターの数) を増やすほど 距離(WSS) は必ず減少します。

image.png

クラスターの数を1から2、2から3へと増やしていくと、最初のうちはこの距離(WSS)は大きく減少していくのですが、ある程度になると減少幅が落ち着いてきます。この減少の度合いが急激から緩やかに変わる点が「エルボー(肘)と言われるもので、このエルボーとなるK(クラスターの数)が最適なクラスターであることを示します。

image.png

ただ、実際にはこのエルボーが見つけにくいといったことはよくあります。

image.png

シルエット法

一方、シルエット法は「クラスタ同士がどれだけ分離しているか」を評価します。

つまり、凝集度と分離度の両方を見ることで、データがうまく各クラスターに振り分けられているかを評価します。

どちらもクラスタ数を決めるための手法ですが、見ているものが異なります。

簡単に言うと、

  • エルボー法は「クラスタはどれだけコンパクトか?」
  • シルエット法は「クラスタはどれだけ分離しているか?」

を評価することで、最適なクラスター数を選ぶために使える情報を与えてくれるということです。

どちらが良いのか?

どちらにもメリットがあるため、どちらが良いというよりも、実務では両方見ることで最適なクラスター数を決めていくのが理想的だと思います。

ただし、異なる K を比較するという目的では、シルエット法の方が

  • 解釈しやすい
  • 指標が明確

という利点があります。

特に

  • 平均シルエット
  • 最小シルエット
  • 負スコア割合

を組み合わせることで、単なるエルボーカーブよりも多面的な評価が可能になります。


シルエット法を使ってクラスターの数を選ぶ実践的な流れ

1. K の候補範囲を決める

まず K=2〜10 程度から始めます。

技術的には20クラスタ作れても、実務的に解釈できなければ意味がありません。

2. 平均シルエットを見る

目安としては、

平均シルエット 解釈
0.7以上 非常に良い
0.5〜0.7 良好
0.25〜0.5 弱い
0.25未満 明確な分離が少ない

ただしアンケートや行動データでは低めになることも珍しくありません。シルエットスコアが「弱い」からといって、そのクラスターが使えないということではないので、注意が必要です。

3. 負のスコアの割合を確認

問題のある割り当てがどれくらいあるか確認します。

4. 最小スコアを見る

外れ値や異常ケースの存在を確認します。

5. 平均スコアの近いクラスターの数を比較する

平均スコアが最高のクラスター数に単純に決めてしまうのではなく、このスコアが近いクラスター数も候補として検討します。

6. クラスターの特徴を見る

いくつか候補となるクラスターの数が決まったら、実際にそのクラスターの数でクラスターを作り、各クラスターの特徴を確認します。

例えば顧客のセグメント分析なら、「購入頻度が高く、客単価が高いが割引利用は少ない顧客」、のように意味のある説明ができるクラスターができていることが望ましい状態です。

7. ドメイン知識で検証する

クラスタリングには正解ラベルというものがありません。そのため、線形回帰やランダムフォレスのような「教師あり学習」モデルと違って、「教師なし学習」モデルと言われます。

そのため、最終的には人間が業務知識や分析目的をもとに判断することになります。

シルエット法は意思決定を支援するものであり、代替するものではないということは重要な点です。


Exploratoryでシルエット法を使う

Exploratoryでも最近のリリース (v15.5以降) から アナリティクス・ビューの K-Means クラスタリングでシルエット法が使えるようになっています。

最適なクラスター数を選ぶ

K-Means クラスタリングを実行すると、デフォルトの設定でシルエット法を使って最適なクラスター数を評価することができます。

image.png

例えば、こちらの従業員アンケートデータのサンプルを使うと、以下のような結果が得られます。

image.png

この場合、シルエットスコアの平均を見るとクラスターの数は 2 が最も良く、その次に 3 が良いとことが確認できます。しかし、負のシルエットの割合を見るとクラスター数が2の場合、3よりもしっかりと分離できてないデータが多いようです。

そこで、この場合は凝集と分離のバランスがより良い2を選ぶか、それとも分離がよりうまくいっている3を選ぶかということになります。

こうした場合は、実際にクラスターの数を2または3にしたときに、各クラスターの特徴を比較してみることになります。Exploratoryの場合であれば、「クラスターの特徴」セクションにあるレーダーチャート、箱ひげ図、散布図などを使って、クラスターを2つに分けたときと3つに分けたときを比べ、どちらのほうが自分にとって意味のあるようなまとまりになっているかを見ます。

クラスター数2の場合:

image.png

クラスター数3の場合:

image.png

今回の場合であれば、私はクラスターの数を3つにしたときの方がいいかなと思います。というのも、クラスターが2つの場合は、単に各質問に対する評価が高いグループと低いグループに分けられただけですが、3つの場合は、評価が高いグループをさらに2つに分けたことによって、回答傾向にあるパターンをよりうまく捉えられるようになっているからです。

こういった解釈に自信がない場合は、「AIサマリ」を使ってみるのもおすすめです。最適なクラスター数に関するアドバイス、さらに各クラスターの特徴に関する説明を読むことで、一段と理解が深まるのではないでしょうか。

image.png

各クラスターのシルエットスコア

さらに、各クラスターのシルエットスコアの各指標も「サマリ」セクションの下で確認できます。

image.png

上記の場合であれば、シルエットスコアの平均を見ると、クラスター「1」と「3」は「2」に比べてよりうまくまとまっていることがわかります。さらに負のシルエットスコアの割合を見ると、「1」と「3」はうまく分離できてないデータがほぼない、ということもわかります。

「仕事に対するやりがいやエンゲージメントが高い」特徴のあるクラスター「2」は、うまく分離できてないデータが20%ほどあるので注意が必要です。

今回はExploratoryを使って、以下の手順に沿ってクラスターの数を選び、それを評価してみました。

  1. シルエット法を使い、複数の K(クラスター数) を試す
  2. 平均シルエットを比較する
  3. 負スコア割合を確認する
  4. 最小スコアを確認する
  5. クラスター数の候補が決まったら、それぞれにおいてのクラスターの特徴を比較する
  6. 各クラスターのシルエットスコアを確認する

単に「最高スコアを選ぶ」のではなく、分離性・安定性・解釈性のバランスで最適なクラスター数を判断していくことが重要です。


最後に

クラスタリングは、顧客セグメンテーション、アンケート分析、行動分析、データに隠れたパターンの発見などにおいて、とても便利な手法です。

一方で、K-Meansクラスタリングでは、あらかじめクラスター数を決める必要があります。そのため、「クラスターはいくつにすればよいのか?」という悩みは、多くの人がぶつかるポイントです。

シルエット法を使うことで、

  • 各クラスターは本当にうまく分かれているのか?
  • 無理に細かく分けすぎていないか?
  • うまく分類できていないデータはどれくらいあるのか?

といったことを、シルエットスコアをもとに確認できるようになります。

ただし、最終的に大切なのは、スコアが一番高いクラスター数を機械的に選ぶことではありません。シルエットスコアを参考にしながら、実際に各クラスターの特徴を見て、それが分析目的や業務上の意思決定にとって意味のある分け方になっているかを判断することです。

Exploratoryにシルエット法が追加されたことで、クラスター数の評価、クラスターの特徴の可視化、AIによる解釈、そして人間による最終判断までを、1つの流れとして行えるようになりました。

クラスター分析を試してみたい方、あるいは過去にクラスター数の決め方で迷ったことがある方は、ぜひExploratoryでシルエット法を使ったK-Meansクラスタリングを試してみてください。

👉 Exploratory 最新版をダウンロード
https://exploratory.io/download

まだアカウントをお持ちでない方は、こちらからサインアップして30日間の無料トライアルを開始できます。

トライアル期間が終了している場合でも、最新版を起動して「トライアルを延長」から再度お試しいただけます。


データサイエンス・ブートキャンプでクラスター分析を実践的に学ぶ

クラスター分析を含め、統計学、機械学習、データ加工、可視化、分析結果の解釈までを体系的に学びたい方には、Exploratoryの「データサイエンス・ブートキャンプ」もおすすめです。

このブートキャンプでは、単にツールの使い方を学ぶだけでなく、問いを立て、データを準備し、可視化し、分析し、その結果をどう解釈して意思決定につなげるかまでを、実際に手を動かしながら3日間で集中的に学びます。

クラスター分析をはじめ、実務のデータ分析でより自信を持って分析手法を使えるようになりたい方は、ぜひ以下のページをご覧ください。

👉 データサイエンス・ブートキャンプの詳細を見る
https://exploratory.io/training-jp

17
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?