SSブログ

凸クラスタリング法の実験 [学問]

 書籍、「続:わかりやすいパターン認識」の第10章p208にある凸クラスタリング法による実験を、実際にpythonで実装して確かめてみました。凸クラスタリングのアルゴリズムは、p206のもの(式(10.36)〜(10.45))を用いています。データは、前のEMアルゴリズムに使ったものと同じものを使っています。iter = 0の初期値は、書籍のものに合わせています。凸クラスタリングには、以下の様な特徴があります。

・ クラスタ数c を未知のまま推定する(メリット)

・ 凸計画問題なので、初期条件に依存せず、大域的最適解(最大点)となる(メリット)

・ 共分散行列σが全てのクラスタで等しく、かつ等方的であるという前提(デメリット)

・パラメータσは、恣意的に決める必要があり、直感に頼るしかない(デメリット)

 凸クラスタリングの実験を、以下の2通りの方法で試してみた。式(10.32)のσ2σ=1とした。なお、p208の図10.6の途中段階のグラフは今回は煩雑になるので掲載していません。一番最後のもの(final)だけを表示してあります。



・ノーマルケース

 全ての500個の点の事前確率πiを最後まで愚直に計算した場合。iter=4000となった時点での、πi > 0.01 の条件で選別して、6個のセントロイドが抽出された。(0, 0)のクラスタが2個のセントロイドとなったので、そのセントロイドの相加平均を求めている。(相加平均を求めたクラスタのσ=1の等方的正規分布は輪郭線を太い黒で示してある。)図final_normalに示すように最終的なクラスタ数はc=5個になり、その最終的な事前確率は式(10.37)で再正規化を行ってπi= [0.396, 0.200, 0.205(注1), 0.100, 0.099] となった。真の値、[0.4, 0.2, 0.2, 0.1, 0.1] に近い値になっている。一方セントロイドPは、P[5][2] = [[-3.014, 2.960], [1.994, 4.030], [0.006, -0.013], [3.991, -2.054], [-2.009, -4.059]]となった。(図でセントロイド位置は赤点で示してある。)


・カットケース

 予め定められた閾値(0.001/samples)以下となったπiは強制的に0に設定し、収束効率の改善を図ったもの。(ここで、samplesはπ≠ 0πi個数で500から徐々に減っていくが、削除される度に式(10.37)で正規化を行っている。これに合わせて、πi = 0のfik(p206のStep2の式)に対応する行も削除されていく。)最終的にiter=4000で、12個のセントロイドが抽出された。samples=12, fik  = (12, 500)となった。(-3, 3)クラスタのセントロイドが4個、(0, 0)クラスタのセントロイドが4個、(-2, -4)クラスタのセントロイドが2個となったので、それぞれのクラスタのセントロイドの相加平均を求めた。(相加平均を求めたクラスタのσ=1の等方的正規分布は輪郭線を太い黒で示してある。)図final_cutに示すように最終的なクラスタ数はc=5個になり、その最終的な事前確率はπ= [0.395(注2),  0.199,  0.206(注2), 0.100, 0.100(注2)]となった。セントロイドPは、P[5][2] = [[-3.014, 2.960], [1.994, 4.030], [0.007, -0.011], [3.991, -2.054], [-2.008, -4.058]]となった。(図でセントロイド位置は赤点で示してある。)


(注1)(0, 0)のクラスタの2個の事前確率を足し算している。(0.1707 + 0.0340)

(注2)(-3, 3)、(0, 0)、(-2, 4)のクラスタの4個、4個、2個の事前確率をそれぞれ足し算している。

initial_cut.png

              推定する共分散行列の分布

final_normal.png  likelihood_normal.png

          final_normal                                   対数尤度(normal)

  final_cut.png likelihood_cut.png

                         final_cut                                       対数尤度(cut) 

by チイ

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:学問

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。