潜在変数とパラメータの事後確率が前より大きくなるようなら新しい値に更新という3つのステップを何度も繰り返し、事後確率が収束すれば終了、というアルゴリズムですが、今回は簡単のため、ステップ1と2を繰り返すことにしています。(つまり、事後確率が大きくなるにしろ小さくなるにしろ潜在変数とパラメータを更新しています。)実際にDPGMMを適用した結果はこんな感じになりました。(初期クラスタ数は1に設定)ちゃんと適切な混合数を選択できていることが確認できました。実装していて分からなかったのですが、CRPで潜在変数をサンプリングしている時、新しくクラスタが増えた場合、そのクラスタのパラメータも同時に生成する必要があると思うのですが、基底測度(というか事前分布)からサンプリングすれば良いのでしょうか?とりあえず適当に初期化したパラメータを新規クラスタに与えたところ、一応期待通りの動作をしているのですが、あまり厳密ではないかもしれません...ともあれ、DPGMM自体は130行くらいで実装できたので、結構シンプルに書けるものだなと思いました。いうイベントがありました。最近、LDAを(pythonで)実装する機会がありました。統計の勉強の一環で、最近はこの本を読んでます。»プロフィールid:breakbee機械学習とプログラミングについてちょっとずつ。(13)はてなブログをはじめよう!breakbeeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。