タグ

gmmとcodereadingに関するyukimori_726のブックマーク (4)

  • C++を使ったEMアルゴリズムの実装(+Pythonによるプロット) - kivantium活動日記

    複数のガウス分布を重ねあわせてできる混合ガウス分布はある程度複雑な分布を近似するときに使われ、Fisher Vectorや声質変換、手書き漢字変換などの応用がある重要な分布です。今回はEMアルゴリズムを用いて混合ガウス分布による近似を求めるプログラムを実装してみました。 EMアルゴリズムは混合ガウス分布以外にも使えるアルゴリズムですが、ここでは混合ガウス分布に話を限定しています。 EMアルゴリズム 式はPRML第9章に従います。いつものようにベクトルの太字は省略しています。 混合ガウス分布は という形で表される分布です。 はk番目のガウス分布の割合を表し、とを満たします。 D次元ガウス分布は という式で表されます。 式変形を楽にするために、潜在変数zを導入します。 K次元ベクトルを、どれか一つの要素だけが1で他の全ての要素が0であるようなベクトルとします。 zの確率分布は、とを満たすを用い

    C++を使ったEMアルゴリズムの実装(+Pythonによるプロット) - kivantium活動日記
  • PRML第9章 混合ガウス分布 Python実装 - Qiita

    でフィッティングすると、 このようになってしまい、このケースでは単峰のガウス分布は適切なモデルではありません。データ点が3つの群に分かれていることに着目すると、今回の場合は3つのガウス分布を用いた混合ガウス分布 が適切なモデルであると考えられます。ただし、$\sum_k\pi_k=1$とします。それぞれ${\bf\mu}_1$が上、${\bf\mu}_2$が右下、${\bf\mu}_3$が左下のデータ点の塊の平均のようにします。よって塊ごとにガウス分布でフィッティングすればいいのですが、どのデータ点がどの塊に属するのかは私たち人間には一目瞭然ですが、機械にはそんなことは分かりません。 N個のデータ点の座標$\{{\bf x}_n\}_{n=1}^N$を観測変数として、どのデータ点がK個の塊のうちどれに属するかを1-of-k符号化で表す潜在変数$\{{\bf z}_n\}_{n=1}^N$と

    PRML第9章 混合ガウス分布 Python実装 - Qiita
  • 混合ガウスモデルとEM - 人工知能に関する断創録

    今回は、9.2の混合ガウス分布のところです。混合ガウス分布はK個のガウス分布の線形重ね合わせで表されます。 ここで、π_kを混合係数と言い、k番目のガウス分布を選択する確率を表します。π_kは確率の条件を満たし、すべてのkについて足し合わせると1になります。ここら辺は、2.3.9の混合ガウス分布でも出てきました。この章では、混合ガウス分布を潜在変数zを導入して再定式化しています。zはK次元ベクトルで、K個の要素のうちどれか1つだけ1を取り、他は0、つまり1-of-K表現です。zはデータxがどのガウス分布から生成されたかを表し、下のような分布になります。 そして、式(9.12)のようにこのzを陽に用いた形でp(x)を求めてもやっぱり混合ガウス分布の式 (9.7) になります(演習9.3)。 つまり、混合ガウス分布を「潜在変数zを含む別の式」で表現できたってことですね。何でこんなことするのか不

    混合ガウスモデルとEM - 人工知能に関する断創録
  • EMアルゴリズムを使って多峰型分布をモデル化してみる - Qiita

    概要 標から得られた分布が多峰型であったとき, 単純なガウス分布でモデル化するのは適切ではありません. 多峰型の分布は複数のガウス分布を組み合わせた混合ガウス分布を使ってモデル化することができます. この記事ではEMアルゴリズムを使って, 混合ガウス分布のパラメータを決定する例を紹介します. まずは単峰型分布から 最尤推定 標を$x_n (n=1,…,N)$とします. ガウス分布の最尤推定によって, 平均と分散を以下の形で求めることができます. \mu_{ML}=\frac{1}{N}\sum_{n=1}^N x_n \\\ \sigma^2_{ML}=\frac{1}{N-1}\sum_{n=1}^N (x_n-\mu_{ML})^2 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt

    EMアルゴリズムを使って多峰型分布をモデル化してみる - Qiita
  • 1