SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

完全情報最尤推定法による欠損値補完.

仕事の関係でGraphClusteringについての論文を漁っていたのでここらへんの勉強が止まってしまっていた。いやまさか社会人になってから英語の論文を漁ることになるとは思っていなかった。ここらへん最近改めて思うのだけれど、僕は文系学卒出身の人間なので、社会人になってから数式とにらめっこしたり、機械学習やデータ解析周りの論文読むことになったり、と入社前に想定していた感じ*1とはかけ離れているので人生は面白いな*2と思う今日この頃。

さて、前回からの欠損値についての勉強の続きで、完全情報最尤推定法をまとめる。

完全情報最尤推定法(full information maximum likelihood method, FIML)


ケースごとの欠損値パターンに応じた個別の尤度関数を仮定した最尤推定により、欠損値を補完する手法である。FIMLは欠損のあるデータも、欠損のない部分の情報を完全に利用しているために最尤推定法に対して完全情報という名前が付いているが、原理としては変わりがないと言える。

なので、まずは最尤推定Pythonで書いてみる。
最尤推定対数尤度の最大化を行う。目標値のtの予測分布を求めるためにもう一個予測分布の精度パラメータを最大化する必要がある。
{ \displaystyle
Inp(t|x,w,β)=-\frac{β}{2}\sum_{n=1}^{M} {\{y(x_n, w)-t_n\}^2}+\frac{N}{2}Inβ-\frac{N}{2}In(2π)
}


結果は以下の図。赤い実線が予測分布の平均、赤い点線が1σの範囲となる。
f:id:fixxman:20151010200522p:plain


次に欠損値があった場合の多変量正規分布に従った最尤推定を行い、完全情報最尤推定法を理解する。
データサンプルxは、平均u、分散共分散行列Σの多変量正規分布に従うと仮定する。dをxの次元とすると尤度{ \displaystyle
L=L(u,Σ)}は以下となる。

{ \displaystyle
L=L(u,Σ)=f(x|u,Σ)=\frac{1}{(2π)^\frac{d}{2}|Σ|^\frac{1}{2}}exp(-\frac{1}{2}(x-u)^TΣ^{-1}(x-u))
}

ここでサンプルが1個,2個,3個, ...i個までのデータとして{ \displaystyle
x_i}が得られた時、これらのデータが同じ多変量正規分布のもとで得られる確率は以下となる。

{ \displaystyle
f(x_i|u,Σ)=\frac{1}{(2π)^\frac{d}{2}|Σ|^\frac{1}{2}}exp(-\frac{1}{2}(x_i-u)^TΣ^{-1}(x_i-u))
}

したがって、データi=1,2,...,Nが独立だと仮定すると、これらのデータが得られる確率は確率密度を掛け合わせて以下となる。

{ \displaystyle
f(x_1,x_2,...x_N|u,Σ)=\prod_{i=1}^N \frac{1}{(2π)^\frac{d}{2}|Σ|^\frac{1}{2}}exp(-\frac{1}{2}(x_i-u)^TΣ^{-1}(x_i-u))
}

この尤度関数に対して対数を取って計算しやすくし、対数尤度が最大となるように平均u, 分散共分散ΣをEMアルゴリズムによって求める。以下が対数で表記した次式*3である。

{ \displaystyle
\log L(u,Σ) = -\frac{dN}{2}\log 2π-\frac{N}{2}\log |Σ| + \sum_{i=1}^{N} \{-\frac{1}{2}(x_i-u)^TΣ^{-1}(x_i-u)\}
}

最尤推定法は個々の尤度関数を個別に定義することで、欠損値の問題を解決している。

欠損値のメカニズムとして、MCAR/MAR/MNARの3パターンがあると前回述べたが、特にMARに対する欠損値対応として、バイアスのない推定値を取ることが出来るために完全情報最尤推定法と多重代入法がよく用いられる。また、MCARであっても、欠損値以外の情報を全て用いるために統計的検定力は相対的に高くなる傾向があるために完全情報最尤推定法と多重代入を用いられることが多い。ただ、MNARにおいては推定値にどうしてもバイアスが生じてしまうために分析がなかなか難しい。とはいえ、多少バイアスがあったとしても現実的にはベターであることが多いと言われている。



現場からは以上です。


参考

データ分析プロセス (シリーズ Useful R 2) | 福島 真太朗, 金 明哲 | 本 | Amazon.co.jp

http://koumurayama.com/koujapanese/missing_data.pdf

*1:数学使わないプログラミングをやってると思ってた。

*2:“Life is like a box of chocolates. You never know what you're gonna get until you open it up.”ってやつ。

*3:この次式表記するのにめちゃくちゃ時間かかった。はてブは数式がぐちゃぐちゃになる時がある。

Remove all ads