EMアルゴリズムを実装したました。
GitHubにソースコードをあげています。
EMアルゴリズムは、混合ガウスモデルの生成に用いられます。
簡単にまとめると、ある標本をN個のガウスモデルが混合したものとみなし、それぞれのモデルの重み/平均/分散を求めることでその標本を説明しようというものです。
パラメータ(重み/平均/分散)に適当な初期値を設け、それを評価するような関数(Q関数)を定め、Q関数がモデルに近づいていくようにパラメータを更新して行くのがEMアルゴリズムであり、その更新の過程が以下のExpectationステップとMaximizationステップなのでEMと呼ばれています。
・Expectationステップ: 隠れ変数(負荷率)の事後確率を推定するステップ
・Maximizationステップ: Eステップで求めた事後確率から、Q関数を最小化するようなパラメータを求めるステップ
僕が行った実装では、以下の標本を、33回のEMステップでモデルを生成できました。

