アプリ版:「スタンプのみでお礼する」機能のリリースについて

書籍、続・わかりやすいパターン認識の10章p207~208にある凸クラスタリングの実験をpythonで実装して実際にやってみました。その結果書籍の内容と少し違った結果になったところとかもあり、その対応の仕方で疑問の残ったところもあるので質問させていただきました。
まず、図10.6のiter=0の500個の散布図は、pythonのnumpy.random.multivate_normal()関数を使って似たようなものを作りました。また、πiで、(0.001/samples)以下のものは強制的に0にして削除しながら、その都度、式(10.37)で再正規化を行いました。(samplesはπi != 0のπiの個数で500から徐々に減っていきます。)初期条件などは、書籍のものに合わせて行っています。
この結果、私のやってみたものでは、iter=4000で、12クラスタが残りました。これらの点は、5クラスタの中の3クラスタが中心付近に複数の点があります。書籍ではこの段階で5個のクラスタに収束したと書かれています。(また図10.6のiter=4000で3つ円の輪郭線がその他の2つのものより太く描かれているようですが、これはどういう意味なのでしょうか?)12クラスタ残った後の処理をどのようにしたら一番良いものか分かりかねています。ちなみに、σやiterの回数や上の閾値を色々変えてやってみたのですが、私のものでは、5クラスタには収束しませんでした。後この状態で、πi > 0.01の選別を行うと、6クラスタになりました。(真ん中のものだけ中心付近に2点残りました。πi = 0.1701 と πi = 0.0339 で足すと0.2に近い値になり、2点の重心も平均すると(0, 0)に近い値になります。
書籍に書かれているような希望するクラスタ数に収束しなかった場合のその後の処理の仕方について、詳しい方がいられたら、御教示願えればと思います。(他の書籍でも色々調べてみたのですが、この部分に関する記述は見つけることができませんでした。よろしくお願い致します。)

A 回答 (1件)

なにも併合処理しない凸クラスタリングは、そうなりますよ。


書籍で5つにクラスタリングできたというのも、あきらかに併合すべきクラスタを併合すると5つになった、ということです。

凸クラスタリングは、標準偏差σが全クラスタで共通と仮定しているわけですが、
これは、言うなれば解像度がσで固定の虫眼鏡を使って世界を見ることにします、といっているわけで、
原理的に、0.3σ程度以下の2点はそもそも区別できないです。

なんで、単純に、0.3σ程度より近い距離にある2つのクラスタは、併合してしまえばよいです。
    • good
    • 0
この回答へのお礼

そうですよね、
併合したクラスタの正規分布の輪郭線を太線で描いているんですよね。
(併合しなかったものは、普通の線で描いている。)
これですっきりしました。
ありがとうございました。

お礼日時:2017/05/18 04:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!