複数のガウス分布を重ねあわせてできる混合ガウス分布はある程度複雑な分布を近似するときに使われ、Fisher Vectorや声質変換、手書き漢字変換などの応用がある重要な分布です。今回はEMアルゴリズムを用いて混合ガウス分布による近似を求めるプログラムを実装してみました。 EMアルゴリズムは混合ガウス分布以外にも使えるアルゴリズムですが、ここでは混合ガウス分布に話を限定しています。 EMアルゴリズム 式はPRML第9章に従います。いつものようにベクトルの太字は省略しています。 混合ガウス分布は という形で表される分布です。 はk番目のガウス分布の割合を表し、とを満たします。 D次元ガウス分布は という式で表されます。 式変形を楽にするために、潜在変数zを導入します。 K次元ベクトルを、どれか一つの要素だけが1で他の全ての要素が0であるようなベクトルとします。 zの確率分布は、とを満たすを用い
![C++を使ったEMアルゴリズムの実装(+Pythonによるプロット) - kivantium活動日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/2327d7bb0f5e5719682601c52483dabde5ef1e1d/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkivantium%2F20150817%2F20150817235250.png)