Soft K-means法のハイパーパラメーターチューニング

今回の目的

前回作ったデータでは、Soft K-means法のほうがHard K-means法よりも劣った性能を出してしまったが、それは理論の予測どおりだった。
MacKay Information Theory, Inference and Learning Algorithmsの問題20.4への解答を通じて、Soft K-means法のほうが性能が向上する場合があることを確かめる。

入力データ

2つの1次元Gaussianの混合分布から生成します。ただし、今回はかなり中心を近くとります。

mix

問題20.4の条件と同様に、

  • 分布1: 平均1, 分散1
  • 分布2: 平均-1, 分散1

 

となるようにとります。このデータの特徴は次の2点です。

  1. 2つのクラスタというより、1つのクラスタに見える
  2. 平均値に対する、テールのデータの寄与が大きい

 

何をするか

上記データを、Soft K-means(β=1)、Soft K-means(β=100)、Soft K-means(β=10000)、Hard K-meansでクラスタリングし、平均の位置を比較します。

実行
Soft K-means(β=1):

結果:
-0.22,0.23

Soft K-means(β=100):

結果:
-0.72,1.66

Soft K-means(β=10000):

ここで問題勃発しました。
指数による減衰が強すぎて、0での除算が出てしまいます・・・。
stackoverflowの皆様のおかげで、精度無限大の指数関数を組んでいる研究者のかたが見つかったので、コードをお借りしました。
デバッガで除いたら、10のマイナス6000乗とかまで指数減衰していました。
ちなみに、ライブラリの中は覗きましたが何をしているかさっぱりでした。

stackoverflow:
http://stackoverflow.com/questions/16441769/javas-bigdecimal-powerbigdecimal-exponent-is-there-a-java-library-that-does

BigDecimalMath:
http://arxiv.org/src/0908.3030v2/anc

結果:
めちゃくちゃ遅いけどどうにか計算できました。

-0.86,1.50

Hard K-means:

注目のHard K-meansです。

結果:
-1.16, 1.17

何と、Hard K-meansのほうが性能が良い(真の値に近い)と言う結果に!教科書と違う!
特に、βがかなり大きくても、Soft K-meansはHard K-meansの結果と実際には一致しません。
無限と現実は違うのかもしれません。これは収穫でした。

(もちろん実装が間違っている可能性もあります。)

発展

MacKayに書かれている答えは、

  • Hard K-meansはテールのデータの影響を受けて、平均は(-1,1)より外側に落ちる
  • しかも、-1,1より大きく外側に落ちる
  • Soft K-meansはβが大きすぎると2つの固定点が、1つの固定点0に縮退する

 

の3点で、1番目しか成り立っていないようにも思えます。引き続き追求したいところです。

「Soft K-means法のハイパーパラメーターチューニング」への1件のフィードバック

  1. ピンバック: 実践:Soft K-means法 | The Big Computing

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