MyEnigmaスマートフォン用の表示で見るMyEnigmaとあるエンジニアのブログです。Supportersはじめにロボティクスにおいて、あるデータを複数の確率分布で近似して、それらのパラメータを推定したい時があります。一本のビームの観測値を4つの確率分布の足しあわせによって表現して、観測尤度を計算します。観測尤度を計算したい場合、それぞれの確率分布のパラメータや、それぞれの確率分布の重み行列を、それぞれのセンサに合わせてチューニングする必要があります。複数の正規分布でデータを近似し、そのパラメータを推定したい時があります。Wikipedia今回は、このEMアルゴリズムの簡単な説明と冒頭の図のような、2つの混合正規分布のパラメータを推定するEMアルゴリズムのMATLABサンプルプログラムを公開したいと思います。尤度関数を最大化することで計算する方法です。尤度関数である確率分布の期待値(Expectation)を最大化(Maximization)することから、EMアルゴリズムと呼ばれています。繰り返し計算で最大尤度のパラメータを計算するという方法です。EMアルゴリズム自体は、かなり汎用的なものなので、ロボティクスだけでなく、音声認識や画像処理などにも使われています。一次元の分布において、2つのガウス分布をEMアルゴリズムで近似する方法は下記の計算式で得られます。Edition.今回のMATLABサンプルプログラムも上記のアルゴリズムを実装した形になります。混合率という各ガウス分布をどれだけの割合づつ組み合わせるのかというのを表したパラメータも推定する必要があります。EMアルゴリズムの詳細に関しては下記の資料やPRMLの9章を読むことをおすすめします。aysMATLABサンプルコード下記がEMアルゴリズムによる確率分布学習のMATLABサンプルプログラムです。p=Gauss(x,mu,sigma)%ガウス分布における確率を計算する関数p=(1/sqrt(2*pi*sigma^2)*exp(-(x-mu)^2/(2*sigma^2)));下記のGitHubリポジトリでも公開しています。尤もらしい混合分布のパラメータを学習するものです。このプログラムを起動すると下記のようにデータに対する正規分布のフィッティングの推定結果が表示されます。正確な確率分布のパラメータを学習できていることがわかります。学習するにつれて対数尤度が増加しているのがわかります。PythonによるEMアルゴリズムのサンプルプログラム下記のリンク先のコードが参考になると思います。Supportersもしこの記事が参考になり、ブログをサポートしたいと思われた方は、こちらからよろしくお願いします。22:04EMアルゴリズムによる確率分布学習のMATLABプログラムTweet関連記事2015-05-14StaticsToolbox代わりの統計学用MATLABライブラリを作り始めた。はてなブログProとあるエンジニアのブログです。Page月別アーカイブスポンサーリンクスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。