k-meansのクラスターに属する確率を取得する方法は?


8

データセットの各ポイントの確率を取得する必要があります。考え方は、距離行列を計算することです(最初の列は最初のクラスターまでの距離、2番目の列は2番目のクラスターまでの距離など)。最も近いポイントの確率は1、最も遠い確率は0です。問題は線形関数(MinMaxScallerなど)で、ほとんどすべてのポイントがほぼ同じ確率で出力されます。

このタスクの非線形性を選択する方法は?Pythonでこのプロセスを自動化する方法は?たとえば、最も近いポイントのp=1場合、cluster p=0.5に属する最も遠いポイントの場合、最も遠いポイントのpはalmols 0です。

または、この確率を計算する別の方法を提案できます。

回答:


12

k平均の確率的一般化:ガウス混合モデル(GMM)について簡単に説明します。

k個の -means、次の手順を実行する:
-特定のk、重心をランダムにその座標を初期化
-各重心に各データポイントの距離を計算する
-その最も近い重心に各データポイントを割り当てる
-更新に重心の座標それに割り当てられたすべてのポイントの平均
-収束するまで繰り返します。

GMMでは、次の手順を実行します。
- k個の多変量ガウス(コンポーネントと呼ばれる)を指定し、それらの平均と分散をランダムに初期化します
-各データポイントが各コンポーネントによって生成される確率を計算します(各コンポーネントが行う責任と呼ばれることもあります)データポイント)
-各データポイントを最も高い確率で所属するコンポーネントに割り当てます-コンポーネント
の平均と分散を、それに割り当てられたすべてのデータポイントの平均と分散に更新します
-収束するまで繰り返します

これら2つの手順の類似点に気付くでしょう。実際、k -meansは、固定分散コンポーネントを持つGMMです。GMMでは、あなたが探している確率(私は思う)は、各コンポーネントが各データポイントに対して負う責任です。

あるGMMのscikit-学ぶ実装あなたはそれに見てみたかったが、私はあなたがあなたのクラスタを想定している幸せが固定されている場合は、あなただけの、その場合には、既存のコードを修正する簡単な方法をしたい推測している場合は利用可能に-分散ガウス、距離行列を要素ごとにとして変換し(指数関数的な減衰を与える)、列全体のソフトマックスを計算します(分布を正規化して)。y=exP(Y=1)+P(Y=2)+...+P(Y=k)=1

クラスターが固定分散ガウス分布であるという仮定は必ずしも有効ではないことを指摘する価値があります。次元のスケールが大きく異なる場合、大きさの単位が小さい次元ほど「可能性が高い」ように見えるため、奇妙な結果が生じる可能性があります。クラスタリング手順を実行する前にデータを標準化すると、これを修正できます。


1

定義により、kmeansは、ポイントが割り当てられているクラスターに最も近い重心があることを確認する必要があります。そのため、クラスターに含まれる確率は明確に定義されていません。

前述のように、GMM-EMクラスタリングは、各クラスターに存在する可能性の推定値を提供し、明らかにオプションです。

ただし、k-meansの球形の構成要素に留まりたい場合は、各ポイントのクラスタリングに「良いスコア」を割り当てたい場合、おそらくより単純な仮定/公式を使用できます。これは、母集団のサブセットをサンプリングしていて、サンプルの各ポイントに割り当てられているクラスターをどれだけ信頼するかを決定する場合に役立ちます。

単純な「スコアリング」スキームの1つは、最初に、k個の重心のそれぞれに対するクラスタリングで使用されるすべての次元にわたってSQRT zスコア距離を計算することです。次に、k重心のそれぞれについてからを想定すると、スコアを割り当てることができますd1dk

score=1di(n1)/i=1k1di(n1)

ここで、はクラスタリングに使用される次元の数です。n

なぜ乗なのですか?重力が2乗距離で消散する重力または電磁気の3次元空間で何が起こるかを考えます。同様に、k-meansはn次元の球状クラスターを作成します。したがって、各クラスターの重心を「エネルギー」の点源と見なすと、dがdだけ乗して増加するときに散逸します。結果として、任意のランダムポイントで、任意のクラスターの重心からの「エネルギー」の強度は、に比例しますここで、(n1)1d(n1)1di(n1)di重心までの距離です。したがって、0と1の間のスケールであるこの良さのスコアを計算し、問題の次元と構造に基づいて、k平均アルゴリズムがどの点でどのように「混乱」しているのかを知ることができます。


0

k-meansを数百回実行し、データポイントがクラスターに割り当てられた回数をカウントすることにより、データポイントが特定のクラスター、にクラスター化される確率を見つけることができます。dikjP(kj|di)dikj

クラスターIDは実際には意味がないため、重心の値を利用することで、k平均法の反復でクラスターを識別できます。つまり、各k-meansが収束した後、重心値によってインデックスが付けられたIDのリストに基づいてクラスターIDを再マップします。


1
私に反対票を投じた人なら誰でも、その理由を聞くことは役に立ちます。これは反復k-meansと定義され、大学で教えられています。
2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.