無限混合ガウスモデルを実装した
ノンパラベイズ面白いね。佐藤一誠先生のノンパラメトリックベイズの本を読んで自分なりに理解できたので実装してみた。本読んで理解して、自分で導出して、実装・実験するの本当に重要。定着度がぜんぜん違う。
ノンパラメトリックベイズ 点過程と統計的機械学習の数理 (機械学習プロフェッショナルシリーズ)
- 作者: 佐藤一誠
- 出版社/メーカー: 講談社
- 発売日: 2016/04/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
無限混合ガウスモデルは上の本の5.2節で説明されてるモデルで、ディリクレ過程混合ガウスモデル(Dirichlet Process Gaussian Mixture Model; DPGMM)とも呼ぶらしい。面倒くさいので以下DPGMMと書く。
DPGMM
普通の混合ガウスだと分割数(クラスタの数)K を事前に決めなきゃいけないんだけど、これが面倒くさいし、よほどそのデータに詳しいか超能力でも無い限り、いろんな K の値を試してみないといけない。面倒くさい。
そこでDPGMMの出番。予め K を決めなくてもデータから推定してくれる。便利。
感覚的にちょっと説明すると、あるデータ点のクラスタ割り当てを決めるとき、普通の混合ガウスだったらそのデータ点を生成したっぽいクラスタ(ガウシアン)に割り当てるんだけど、DPGMMだとどのクラスタからも生成されたっぽくないときは新しいクラスタが作られる。このクラスタ割り当てを何度も何度もやる(ギブスサンプリング)ことで、最終的に適切な数のクラスタが作られ、全てのデータ点が適切なクラスタに割り当てられる。
詳細は上の本を読むと良い。佐藤先生の本は本当に超わかりやすい。
実装
めっちゃ遅いけど実装した。本に書いてあるように、共分散行列は対角行列と仮定した。
Dirichlet Process Gaussian Mixture Model
実験
真のクラスタ数は3で、分散は全てのクラスタで1。クラスタ間が互いにかなり離れてるので簡単な設定になってる。
結果を見ると、クラスタ数を指定してないのに、クラスタが3つ作られて、全てのデータ点が適切なクラスタに割り当てられていることが分かる。