クラスターの正しい数を決める方法は?


54

クラスターの中心を見つけて、k-meansクラスタリングk個の異なるクラスタービンにポイントを割り当てます。これは、非常によく知られたアルゴリズムであり、ネット上のほとんどすべての機械学習パッケージにあります。しかし、私の意見で欠けている最も重要な部分は、正しいkの選択です。それに最適な値は何ですか?そして、最高の意味は何ですか?

ここで説明する kを決定する方法としてシルエットプロットを見ることができる科学計算にMATLABを使用します。しかし、私はベイジアンアプローチにもっと興味があります。どんな提案も大歓迎です。


2
ニースの質問...


下で可視化-のためのクラスタリング(エヘン)K-クラスタを画像とMSTSを使用して、ワンショットで様々なkの効果を確認する方法があります。
デニス

私は中に半ダースの方法でこの質問に答えてきたR以上、ここで
ベン・

1
「最良の」クラスター数kを決定することは、クラスターソリューションを異なるkと比較することを意味します。このソリューションは「より良い」ものです。その点で、タスククラスタリング方法を比較する方法に似ています-これはデータにとって「より良い」です。一般的なガイドラインはこちらです。
ttnphns

回答:


28

これは、stackoverflowで何度か尋ねられています:hereherehere。そこの群衆がこの質問(またはその小さな変形)についてどう考えているかを見ることができます。

stackoverflow.comで、この質問に対する自分の回答もコピーしてみましょう。

残念ながら、「正しい」Kを自動的に設定する方法はなく、「正しい」とは何かという定義もありません。「正しいK」を設定できる、単純または複雑な原則的な統計的方法はありません。経験則、経験則がありますが、時々うまくいきます。

多くのクラスタリング手法にはこれらのタイプのパラメーターがあるため、状況はより一般的であり、これはクラスタリング/教師なし学習研究コミュニティにおける大きな未解決の問題だと思います。


+1これを読んだ後、私にはとても直感的に思えます。実際にPCAでPCの数を選択する問題は、K-meanでクラスターの数を選択する問題と同等
Dov

2
@Dovこれら2つのことは完全に同等ではありません。PCAソリューションの品質を調べるために使用できる特定の測定値(最も顕著なのは再構成誤差だけでなく、キャプチャされた分散の%など)があり、これらは(ほとんど)一貫している傾向があります。ただし、クラスタリングでは「正解」が1つも存在しないことがよくあります。あるメトリックでは、あるクラスタリングが他のクラスタリングよりも優れている場合があります。また、状況によっては、同じメトリックで2つの異なるクラスタリングが等しく発生する可能性があります。
tdc

@tdcですが、このen.wikipedia.org/wiki/…は、このような改善された outcomes.com/docs/WebSiteDocs/PCA/…に多少似ていますか?
ドブ

2
@Dovはい、それらは互いに「多かれ少なかれ」ですが、クラスターの数を選択する問題はPCの数を選択するよりもはるかに複雑であると言っていました-つまり、「同等」ではありません。
tdc

1
+1その通りです。...私たちは、一種の最高のKを決定するために、いくつかの他のモデルや仮定を導入したが、その後の質問は、そのモデルや仮定が最善である理由であることが判明
ペトリコール

19

まず注意点。クラスタリングでは、「正解」は1つもありません。1つのクラスタリングは、1つのメトリックで他のクラスタリングよりも優れている場合があり、別のメトリックを使用すると逆の場合があります。また、状況によっては、同じメトリックで2つの異なるクラスタリングが等しく発生する可能性があります。

そうは言っても、Dirichlet Processesを見たいと思うかもしれません。このチュートリアルも参照してください

ガウス混合モデルから始める場合、k-meansの場合と同じ問題があります。クラスターの数を選択する必要があります。モデルの証拠を使用できますが、この場合は堅牢ではありません。そのため、混合成分よりも先にディリクレプロセスを使用するのがコツです。これにより、無限数の混合成分を使用できるようになりますが、モデルは(通常)「正しい」数の成分を自動的に検出します(モデル)。

αα


1
どの濃度パラメーターでのディリクレ過程?これは、同じ元の質問と同等です。何のkの下のk-meansですか?Direchlet分布を理解することに同意しますが、実世界のデータに対する複雑なアルゴリズムの動作です。
carlosdc

@carlosdcの良い点、私は回答を更新して、濃度パラメーターに関する少しの議論を含めるようにしました
-tdc

1
私の経験では、有限混合モデルのクラスター数を決定するよりも、アルファのような連続値の濃度パラメーターを学ぶ方がはるかに簡単です。有限混合モデルに固執し、ベイジアンタックを取りたい場合は、リバーシブルジャンプMCMC(onlinelibrary.wiley.com/doi/10.1111/1467-9868.00095/abstract

1
素晴らしい答え。「Revisiting K-Means:New Algorithms via Bayesian Nonparametrics」という論文を追加します。これは、K-Meansに単純な「連続」アプローチを提供します。その後、最適化を使用して、最適な値を見つけるのは簡単です。
ロイ

9

私はエルボー法を使用します:

  • K = 2から始めて、各ステップで1ずつ増やして、クラスターとトレーニングに伴うコストを計算します。Kの値が一定の場合、コストは劇的に低下し、その後さらに増加するとプラトーに達します。これは、必要なK値です。

理由は、この後、クラスターの数を増やすが、新しいクラスターは既存のクラスターの一部に非常に近いということです。


これは、Lメソッド(私の答えを参照)が評価する原則のように思えます。
winwaed

6

クラスターのサイズは、データと結果の使用目的の両方に大きく依存します。物事をカテゴリに分割するためにデータを使用する場合、最初に必要なカテゴリの数を想像してみてください。データの視覚化を目的とする場合は、構成可能にして、大きなクラスターと小さなクラスターの両方が見えるようにします。

自動化する必要がある場合は、kの増加にペナルティを追加し、最適なクラスターをそのように計算することができます。そして、大量のクラスターが必要か、非常に少ないクラスターかによって、kに重みを付けるだけです。



5

「Lメソッド」を使用して、地理的アプリケーションのクラスター数を決定することができました(つまり、本質的に2次元の問題ですが、技術的にはユークリッドではありません)。

Lメソッドについては、ここで説明します。 階層的クラスタリング/セグメンテーションアルゴリズムでのクラスター/セグメントの数の決定Stan SalvadorおよびPhilip Chan

基本的に、これはkのさまざまな値の適合を評価します。「L」字型のグラフは、グラフの膝で表される最適なk値で見られます。単純な二重線最小二乗近似計算を使用して、ニーポイントを見つけます。

kの各値について反復k-meansを計算する必要があるため、この方法は非常に遅いことがわかりました。また、複数の実行でk-meansが最適に機能し、最後に最適なものを選択することもわかりました。各データポイントには2つの次元しかありませんでしたが、単純なピタゴラス距離は使用できませんでした。だから、それは多くの計算です。

1つの考えは、kの他のすべての値(たとえば)をスキップして計算の半分にし、k-meansの反復回数を減らしてから、結果の曲線をわずかに滑らかにしてより正確な近似を生成することです。StackOverflow -IMHO でこれについて尋ねましたが、平滑化の質問は未解決の研究質問のままです。


4

k

しかし、データセットが実際にボロノイスキームに適合しない場合はどうでしょうか?

kk

k


3
最初の段落のK-meansの説明は間違っていませんが、一部の人々は、この方法を元のデータに基づくボロノイ分割同一視するように誤解させる可能性があります。 これはそうではありません。パーティションは、元のデータのいずれとも一致しない(通常は一致しない)クラスター平均の位置に基づいています。
whuber

3

全体として、2つの異なるパスでクラスターの数を選択できます。

  1. 知識駆動型:ビジネスの観点から必要なクラスターの数のアイデアが必要です。たとえば、顧客をクラスタリングしている場合、これらの顧客を取得した後、次に何をすればよいでしょうか?クラスターごとに異なる治療を受けることになるでしょうか?(たとえば、電子メールまたは電話による広告)。次に、可能な治療をいくつ計画していますか?この例では、100個のクラスターはあまり意味がないと選択します。

  2. データ駆動型:クラスターの数が多すぎると、クラスターの数が少なくなります。いつでもデータを半分に分割し、相互検証を実行して、適切なクラスター数を確認できます。クラスタリングでは、監視設定に似た損失機能がまだあることに注意してください。

最後に、現実世界では常に知識駆動型とデータ駆動型を組み合わせて使用​​する必要があります。


2

まだ誰も指摘していないので、私はこれを共有すると思った。ベイズ情報量基準(BIC)を使用して適切なクラスター数を推定するX-means(このリンクを参照)と呼ばれる方法があります。基本的に、これはKを異なるKで試して、KごとにBICを計算し、最適なKを選択することと似ています。このアルゴリズムは効率的にそれを行います。

wekaの実装もあります。詳細については、こちらを参照してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.