Soft K-means法

今回の目的

前回書いた、2次元データに対するHard K-means法のプログラムを拡張し、Soft K-means法(exponential decay)に変形する。

Soft K-means法は定義からはHard K-meansより性能が上昇するのかどうかわからない。実際は以下のような特徴があるので、それをこの目で確かめたい。

  • Soft K-means法はHard K-means法に対して性能劣化する場合があるが、それはどの程度か?
  • β→∞の極限でHard K-means法と全く同じ結果が出る
  • [発展]Soft K-means法はβをパラメータとする力学系であり、混合Gaussianから生成したデータに対する固定点が、βを変化させることでピッチフォーク分岐する。この分岐図を描く。(MacKay, Information Theory, Inference, and Learning Algorithms p290 Ex 20.3)

 

以上を実装して確認し、Soft K-means法をより理解したい。

入力データ

2つの2次元Gaussianの混合分布から生成します。

P(x)=\displaystyle\sum_{i=1}^{2}\sqrt{\displaystyle\frac{\det(A_i)}{2 \pi}} \exp(- \displaystyle\frac{1}{2}(\vec{x}-\vec{\mu_i})^tA_i(\vec{x}-\vec{\mu_i}))

実際にはRで以下のように生成します。

data1

どう見ても2つのクラスタですが、Soft K-means法はβを正しく選ばないと、このクラスタリングに失敗します。拡張したのに失敗するのは、驚くべきことだと思います。モデルを複雑にすると、抽出できる特徴は増えるが、安定性が犠牲になるというトレードオフがあるのです。この現象を過学習といい、複雑なモデルを可能な限り避けるという原理をオッカムの剃刀といいます。

(MacKay §28 ”Occum Factor”も参照)

何をするか

Hard K-means法では、各点は1つのクラスタにだけ属します。
Soft K-means法ではこれを拡張し、各点が次の重み(正規化済み)で全クラスタに属すると考えます。

r_k^{(n)}=\displaystyle\frac{\exp(-\beta d(\vec{m^{(k)}}, \vec{x^{(n)}})}{\sum_k

プログラムの変更ですが、Pointクラスごとに各クラスタへの帰属度というベクトルを持たせます。
従来の単一帰属度(belong_to)に関するコードを全部消し、ストリーム演算に置き換えます。

実行

β=100で実行すると、βが大きいのでHard K-means法と同じ結果が出るはずです。しかしなんと、毎回結果が違います。絵を見ると分かるとおり、Hard K-meansの結論は、各クラス他の中心が[-1,-1], [2,2]にあるということです。

clustered
これです

Soft K-means法を実行すると、毎回異なる結果が出ました。

正しく出るとき:

正しく出ないとき(3回の別々の実験結果):

そう、これは実は正しく出てないんじゃないんです。Soft K-meansはマルチアトラクタの力学系なんです(マルチアトラクタ=安定固定点が複数あること)。

data2

上の3つのペアを3色に色分けしたものです。この結果を見ると、必ずしも右と左でクラスタリングされているわけではなく、緑の点のように、各クラスタを半分にわけて別々のペアとくっつけたものをクラスタと機械が解釈したことが分かります。

このように、Soft K-meansを使うことでHard K-meansでは得られない特徴の抽出が出来ますが、解が複数かつ不安定になるという特徴があります。

発展
  • 帰属度で各点を2色に色分けし、散布図に描けるようにする
  • βに対する分岐図を描き、ピッチフォーク分岐を確かめる

 

あたりが次の目標です。

続き(第4回)

「Soft K-means法」への2件のフィードバック

  1. ピンバック: 実践:Hard K-means法2(2次元版) | The Big Computing

  2. ピンバック: データサイエンス人気記事 - The Big Computing

コメントは受け付けていません。