Gaussian Mixture Model (GMM)
本稿では混合ガウスモデル(Gaussian Mixture Model)について概説する。混合ガウスモデルは確率分布を表現するモデルであり、複数の正規分布を合成して確率分布を表すモデルである。正規分布の確率密度関数を\(\small N\left(x \middle| \mu,\sigma^2\right) \)と表して、数式で表すと
\[ \small p(x)=\sum_{k=1}^K \pi_k N\left(x \middle| \mu_k, \sigma_k^2\right), \quad \sum_{k=1}^K \pi_k = 1,\quad \pi_k > 0 \]
と表現できる。
基底になる正規分布の数を増やすことで任意の確率分布を表現することができる。また、パラメータの推定を通じて確率分布をスムージングすることもできるため、サンプルデータのノンパラメトリックな確率分布(ヒストグラム)をデータとして保持する代わりに推定した混合ガウスモデルを用いることでノイズを減らしたり、保存するデータ量を削減するといった目的にも利用できるだろう。
EMアルゴリズム
観測データ\(\small x_1,\cdots,x_N\)からパラメータを推定するためには、対数尤度を計算して、それを最大化するパラメータを最適化問題を解くことで求めればよい。すなわち、対数尤度関数を
\[ \small \log L(x | \pi_k, \mu_k, \sigma^2_k,k=1,\cdots,K) =\sum_{i=1}^N \ln p(x_i)\]
と置いて、
\[ \small \max_{\pi_k, \mu_k, \sigma^2_k} \log L(x | \pi_k, \mu_k, \sigma^2_k,k=1,\cdots,K) \]
の解としてパラメータを推定すればよい。この最適化問題は制約付きの非線形最適化問題であり、一般的に容易に解くことができない。加えて、この関数は一般的に非凸関数であるため、大域的な最適解をリーズナブルな計算量で計算するアルゴリズムは一般に存在しない(NP困難と言われる数理問題に相当する)。
現実的な解法としては、適当な初期値から出発して局所的な最適解を探索する方法だろう。この局所的な最適解を効率的に探索するアルゴリズムとして知られているアルゴリズムが表題のEMアルゴリズム(EM(Expectation-Maximization) Algorithm)である。大域的な最適解を発見できることを保証しているアルゴリズムではないことに注意する。一定の操作を繰り返すことで尤度関数を改良していき、収束した解を局所的な最適解とするアルゴリズムである。具体的な計算手続きは以下の通りである。
- 適当なパラメータの初期点\(\small \pi_k^{(0)}, \mu_k^{(0)}, {\sigma^2_k}^{(0)} \)を決める。\(\small i=0 \)と置く。
- 現在のパラメータ\(\small \pi_k^{(i)}, \mu_k^{(i)}, {\sigma^2_k}^{(i)} \)を用いて、各観測データ\(\small x_1,\cdots,x_N\)がクラスタ\(\small k\)に属する確率\(\small \gamma_{jk}^{(i)}\)を以下の式で推定する。
\[ \small \gamma_{jk}^{(i)} = \frac{\pi_k^{(i)} N\left(x_j \middle| \mu_k^{(i)}, {\sigma_k^2}^{(i)}\right)}{\sum_{l=1}^K\pi_l^{(i)} N\left(x_j \middle| \mu_l^{(i)}, {\sigma_l^2}^{(i)}\right)}\]
- 推定したクラスタ\(\small k\)に属する確率\(\small \gamma_{jk}^{(i)}\)を用いてパラメータを推定する。
\[ \small \begin{align*} &\pi_k^{(i+1)} = \frac{1}{N}\sum_{j=1}^N \gamma_{jk}^{(i)} \\ &\mu_k^{(i+1)} = \frac{\sum_{j=1}^N \gamma_{jk}^{(i)}x_j}{\sum_{j=1}^N \gamma_{jk}^{(i)}} \\ &{\sigma_k^2}^{(i+1)} = \frac{\sum_{j=1}^N \gamma_{jk}^{(i)}(x_j-\mu_k^{(i+1)})^2}{\sum_{j=1}^N \gamma_{jk}^{(i)}} \end{align*}\]
- \(\small i=i+1\)と置いて2.に戻る。収束するまで以上の手続きを繰り返す。
2.の手続きはE-Step、3.の手続きはM-Stepとそれぞれ言われる。pythonなどのプログラミング言語であれば自分で実装する必要はなく、scikit-learnなど数学計算ライブラリの関数を呼び出すだけで利用することができる。
情報量基準
GMMでは基底になる正規分布の数\(\small K\)(クラスタ数)を外生的に与える必要がある。サンプルデータのノンパラメトリックなヒストグラムをデータとして保持する代わりに用いる場合は適当な数値を与えればよいが、確率分布を平滑化したいなどノイズをカットする目的でパラメータを推定する場合は最適なパラメータ数を選択することでオーバーフィッティングを避けることができる。この最適なパラメータ数を選択するために用いられる基準は情報量基準(Information Criterion)と言われる。
情報量基準の例として、赤池情報量基準(AIC)とベイズ情報量基準(BIC)という情報量基準が良く用いられる。最大化された尤度関数の最大値を\(\small \log L\)、パラメータ数を\(\small p \)と表すと、赤池情報量基準は
\[ \small \text{AIC} =-2 \log L + 2p =-2 \log L + 2 (3K-1) \]
ベイズ情報量基準は
\[ \small \text{BIC} =-2 \log L + p \log N =-2 \log L + (3K-1) \log N \]
と表される。GMMではクラスタごとに3個のパラメータがあるが、加重平均係数は合計が1なのでパラメータ数が1減ることに注意する。したがって、\(\small p=3K-1\)である。各\(\small K\)についてこれらの値を計算し、最も小さい値になる\(\small K\)が最適なクラスタ数になる。
