なぜk-meansはグローバルな最小値を与えないのですか?


16

k-meansアルゴリズムは局所的な最小値にのみ収束し、グローバルな最小値には収束しないことを読みました。どうしてこれなの?初期化が最終的なクラスタリングにどのように影響するかを論理的に考えることができ、最適でないクラスタリングの可能性がありますが、数学的にそれを証明するものは見つかりませんでした。

また、なぜk-meansは反復プロセスなのですか?目的関数を重心に部分的に区別するだけでは、この関数を最小化する重心を見つけるためにそれをゼロに等しくすることはできませんか?段階的な最小ステップに到達するために勾配降下を使用する必要があるのはなぜですか?


4
滑らかな関数に複数の局所最小値がある場合、それらのそれぞれが必然的に(すべての偏微分が消失する)臨界点になるため、アルゴリズムは正しいですが、通常は役に立ちません:膨大な数の恐ろしく複雑な方程式を得ることができますソリューション(無限に多くも)。しかし、別の問題があります:k-means目的関数がどこでも微分可能であることをどのように知るのですか?
whuber

1
ある重心に関して目的関数を部分的に微分すると、別の重心のクラスター内のポイントが微分で消失すると思います。したがって、取得できる重心は、特定のクラスターのみの距離の二乗の合計のみを最小化します。
プラテククルカルニ

3
それは部分的にはそれですが、実際には動作を説明していません。さらに重要なのは、重心へのポイントの割り当てがk-meansが行っていることの大きな部分であるという事実です。(割り当てが行われると、重心は簡単に計算され、何もすることはありません。)その割り当ては離散的です。まったく区別できるものではありません。さらに、組み合わせが複雑ですポイントをクラスターに割り当てる方法があります。実際、重心を見つけるために勾配降下を使用する必要はまったくありません。n kO(nk)nk
whuber

私は同意します。割り当て部分を数学的な形に直接入れることはできません。この孤立したステップによってのみ、機能を最小化するために重心を移動できます。勾配降下法の見方は次のとおりです。初期化が不適切であるためにローカル最小値に近づいた場合、勾配降下法によりローカル最小値に引き下げられます。良好な初期化によりグローバルミニマムに近づいた場合、グローバルミニマムの下にドラッグされます。しかし、この動きがクラスターの割り当てにどのようにマッピングされるかはあいまいです。
プラテククルカルニ

非微分可能性は過大評価されています。LeonBottouは、非常に大きなデータセットで確率的勾配降下を使用してK-Meansを推定する作業をいくつか行い、かなり成功しています。多くのデータポイントに起因する多くの問題のように、非微分は大きな問題を引き起こしません。(たとえば、畳み込みネットワークも局所的に微分不可能ですが、とにかくうまく機能するため、整流線形伝達関数を備えた多くのニューラルネットアーキテクチャも同様です)。ここでの本当の理由は、複数の最小値です。
バイエルジ

回答:


10

k-meansはEMアルゴリズムの特別なバージョンとして見ることができます。これは少し役立つかもしれません。

あなたはすべてのために単位行列に固定された共分散行列を持つ各クラスタの多変量正規分布を推定しますが、変数の平均と言う、私は、クラスタのインデックスです。パラメータの場合明らかに、{ μ iは }知られており、各ポイントに割り当てることができ、Pの最大尤クラスタ(すなわち、μ Iまでの距離のためにP最小限にします)。この問題のEMアルゴリズムは、k-meansとほぼ同等です。μii{μi}pμip

あなたがどのクラスタに属する点を知っていれば、周りの他の方法は、あなたは最適を推定することができます。(大域的最適解を発見する)これに閉じた形のソリューションは、基本的には、最大尤度モデルを見つけるために言う{ μ I }あなたがクラスタにポイントのすべての可能な割り当てを超える統合します。わずか30ポイントと2つのクラスターでさえ、そのような可能な割り当てが約10億あるため、これを計算することは不可能です。μi{μ^i}

代わりに、隠されたパラメーター(またはモデルパラメーター)について推測し、2つのステップを繰り返します(最終的に極大値になる可能性があります)。各クラスターがポイントに対して部分的な責任を負うことを許可すると、EMになります。最適なクラスターを割り当てるだけで、k-meansが得られます。

エグゼクティブサマリー:確率論的に言えば、グローバルなソリューションがありますが、考えられるすべてのクラスタリングを反復処理する必要があります。目的関数がある場合、明らかに同じことが当てはまります。すべてのソリューションを反復処理して目的関数を最大化できますが、反復回数はデータのサイズにおいて指数関数的です。


よく置きます!これを答えとしてマークします!
プラテククルカルニ

4

これが解決したい問題です。

minxi=1nj=1kxij||picj||2subject to:j=1kxij=1icj is the centroid of cluster jxij{0,1}i,j

バイナリ変数は、ポイントiがクラスターjに割り当てられているかどうかを示します。シンボルp ic jは、それぞれ番目の点の座標と番目のクラスターの重心を示します。これらは両方ともにありますはデータポイントの次元です。xijijpicjj R d dijRdd

制約の最初のグループは、各ポイントを正確に1つのクラスターに割り当てる必要があることを示しています。2番目のグループの制約(数学的には定義していません)は、クラスターの重心の座標は実際には変数の値に依存すると言います。たとえば、この制約を次のように表現できます。 x i j c j = i x i j p i jjxij

cj=ixijpijixij

ただし、これらの非線形制約を処理する代わりに、K-Meansでは、元の問題と同じ最適解をもつ別の問題を(およそ)解決します。

minxi=1nj=1kxij||piyj||2subject to:j=1kxij=1ixij{0,1}i,jyjRdj

重心までの距離を最小化する代わりに、より良いソリューションを提供する任意のポイントセットまでの距離を最小化します。これらのポイントはまさに重心であることがわかります。

この問題を解決するために、収束までこのアルゴリズムのステップ2〜3を繰り返します。

  1. 変数にいくつかの値を割り当てますyj
  2. 変数の値を修正し、変数の最適値を見つけます。 x i jyjxij
  3. 変数の値を修正し、変数の最適値を見つけます。 y jxijyj

前のステップで見つかった解は現在のステップの探索空間にあるため、各ステップで目的関数は改善されます(またはアルゴリズムが収束しても同じままです)。ただし、各ステップで変数の一部を修正しているため、これは最適性を保証しないローカル検索手順です。

幸いなことに、ステップ2と3の最適化の問題は、閉じた形で解決できます。我々が知っている場合 (私たちは、各点が割り当てられたクラスタにわかっている場合IE)を、のための最高値変数は、クラスターの重心です。値がわかっている場合、変数の最適な選択は、各点を最も近いに割り当てること。 y j y j x i j y jxijyjyjxijyj


2

簡単な例が役立ちます。

としてクラスター化されるポイントのセットを定義しましょうA = {1,2,3,4}

Aに2つの適切なクラスター(2つの手段)を見つけようとしているとします。k-meansの定常条件を満たす(少なくとも)2つの異なる設定があります。

設定1:

Center1 = 1, Cluster1 = {1}
Center2 = 3, Cluster1 = {2,3,4}

ここでの目的は、(してみてください、これは鞍点である実際のところ2であるcenter1 = 1 + epsiloncenter1 = 1 - epsilon

設定1:

Center1 = 1.5, Cluster1 = {1,2}
Center2 = 3.5, Cluster1 = {3,4}

ここでの目的は1/4です。

k-meansが最初の設定として初期化されると、スタックします。これは決してグローバルな最小値ではありません。

前の例のバリアントを使用して、2つの異なるローカル最小値を作成できます。A = {1,2,3,4,5}設定cluster1={1,2}cluster2={3,4,5}同じ目標値で結果をだろうcluster1={1,2,3}し、cluster2={4,5}

最後に、あなたが選択した場合どうなります

A = {1,2,3,4,6}
center1={2.5} cluster1={1,2,3,4} and 
center1={6} cluster1={6}

center1={2} cluster1={1,2,3} and 
center1={5} cluster1={4,6}


0

[これは@Peterが答える前でした]
ちょっとした議論(コメントセクション)の後、自分の質問に答えなければならないと感じました。

ある重心に関して目的関数を部分的に微分すると、別の重心のクラスター内のポイントが微分で消失すると思います。したがって、取得できる重心は、特定のクラスターのみの距離の二乗の合計のみを最小化します。

@whuberの追加:

それは部分的にはそれですが、実際には動作を説明していません。さらに重要なのは、重心へのポイントの割り当てがk-meansが行っていることの大きな部分であるという事実です。(割り当てが行われると、重心は簡単に計算され、何もすることはありません。)その割り当ては離散的です。まったく区別できるものではありません。

誰かが追加するものがあれば素晴らしいでしょう。


0

誰もがすべてを説明しましたが、サンプルデータがガウス分布として分布していない場合、ローカルミニマムに固執する可能性があることを付け加えます。K-meansアルゴリズムでは、実際にそれを取得しようとしています。


ガウスではなく、「ユニモーダル」を意味すると思います
Peter Leopold
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.