最尤推定 Maximum Likelihood, MLE


|| 一番それっぽい予測(母数を)をするやり方のこと

「一番ほんとの値っぽい」ものを求めます。

スポンサーリンク




目次


最尤推定の感じ「サンプリングした結果の再現率」


尤度関数「再現率を表す確率を導ける関数」

尤度方程式「再現率が最大になる時の推定量を求める関数」






これは具体的な操作から見た方が分かりやすいでしょう。

一番見るのは「確率が 1/2 じゃないコイン」みたいな例ですね。

いわゆる普通じゃない確率の、ほんとの確率を求めたいときとか。




この場合だと「無作為」だってことの保証みたいな感じです。

これを数学的に推測するのが、最尤推定の一例になります。




では、↑のコインが「 100 回の内 90 回、表になった」とします。

明らかな異常値です。

ほぼ確実に「 1/2 で表」とはなりません。




はて、ではこのイカサマコインの実際の確率はどうなんでしょう?

1/2 」じゃないことはほぼ確実ですなんですけど、

いやでも待ってください。なんで、そう言えるんですか?




いや普通に考えて「 90/100 」っぽいし。

とか、こんな感じに考えませんでしたか?




はい、というわけで、この感じが『最尤推定』になります。

これをすごい人がどうにかこうにか形式化したわけですね。






さて、では実際の操作について見てきましょう。

ざっとですが、最尤推定の感覚をこれで掴んでください。




↑の例で考えて、とりあえず実際にまず検証してみます。



まず『仮説』として「実際の確率」と思われるものを用意します。

1/2 」とか「 90/100 」とか、この辺りを。






※でもなんかちょっと数値がでかすぎるんで、別ので

10 回中 9 が表」くらいにしましょうか。




この例で行くなら、

『仮説』として「 1/2 」や「 9/10 」を用意できます。

とりあえず、この辺りが一番それっぽいわけですね。






というわけで、検証を開始します。



まず「確率 1/2 で表」なら『 10 回中 9 回表が出る確率』は、

\displaystyle {}_{10} \mathrm{C}_{9} \left(\frac{1}{2}\right)^9\left(\frac{1}{2}\right)^1=10\cdot\frac{1}{2^{10}}≒0.00977\,\,\,\,\,∴0.98\%

(↑は表表表…表裏、表表表…裏表、…とやってけば)



次に「確率 9/10 で表」なら『 10 回中 9 回表が出る確率』は、

\displaystyle {}_{10} \mathrm{C}_{9} \left(\frac{9}{10} \right)^9\left(\frac{1}{10}\right)^1=10\cdot\frac{9^9}{10^{10}}=(0.9)^9≒0.387\,\,\,\,\,∴38.7\%



これを比べてみれば分かる通り、

「確率 1/2 」よりも「確率 9/10 」の方が、

『サンプリングで出た結果になる「確率」』が高いです。




ですから少なくとも、

「確率 1/2 」よりも「確率 9/10 」の方が、

なんか『それっぽい』わけです。




如何でしたでしょうか。

これで、なんとなく『最尤推定』の感じが掴めたと思います。






というわけで、この操作を「色々な場面で使える」ように、

要は『一般化』してみます。




コインのような「 2 択」のもので考えてみます。

そして『片方が出る確率を p 』としましょう。

取り出すサンプルの数は n としますか。




こうすれば、どんな数にでも対応できるようになります。

こんな感じの操作のことを「一般化」というわけですね。




というわけで「片方が出た回数を x 」とします。

こうすれば↑を↓みたいに一般的に書けるわけです。



f(x)={}_n\mathrm{C}_x\cdot p^x(1-p)^{n-x}



これがさっき使った式の一般形になります。

↑の具体例で見たように、これは「確率」を算出します。

それを基準にして「大小」で『それっぽさ』を比較するわけです。



そうです。↑の具体例であったように、

これの『最大』が「一番それっぽい」になります。

『サンプリングの再現度が最大になる』わけですから。







尤度関数 Likelihood Function


|| 最尤推定用の関数

つまりは「それっぽい推定量から再現率を求めるやつ」です。




具体的に見るために↑の関数を使うと、

『分からない確率 p 』の「推定量 θ_{est} 」とすると、


f(x,θ_{est})={}_n\mathrm{C}_x\cdot θ_{est}^x(1-θ_{est})^{n-x}

となります。



ただまあ、これじゃあ変数が 2 つあって扱いにくいです。

なので片方を確定させて見てみましょう。

幸い↑は「確率」を算出するので、




ここで、それを表す形式(表し方)を考えます。



↑の具体例の流れでいくと、

まず「推定量 θ に具体的な値」を入れてから、

実際に「サンプリング」して「それっぽさ」を調べるとしましょうか。



とすると「推定量 θ_{est} 」が固定されてから、

その後に「サンプリングの結果 x 」が得られるので、



f(x\,|\,θ_{est})

と書き表せそうです。




f(x,θ) 」は確率を返す関数ですから、


これは「推定量 θ 」が定まった上での、

θ の影響を受ける f(x) 」が返す、

「条件付き確率」を表している、と言えることから来ています。




そして、これから「尤度関数」は導かれるわけです。



というのも「推定量 θ 」は、

サンプリングに影響を受けずに、勝手に決定されます。

この時点ではただの予測(なんか入るかも)に過ぎませんので。

(文字以上の意味はありません)



そしてその後にサンプリングの結果が出ます。

そこで「データ x 」もまた決定されるわけですね。



そして変数の全てが出揃った結果、確率が導かれます。

そうやって出てきたこれがなんの確率かというと、

「サンプリングした結果の出やすさ」なわけです。




つまり↑の関数をそのまま使えば、

『それっぽさを決める関数』は、具体例から直観的に理解できます。




というわけで「推定量 θ 」を固定して、

その後に「サンプル x 」も確定させてやると、



Lik(θ_{est}\,|\,x):=f(x\,|\,θ_{est})={}_n\mathrm{C}_x\cdot θ_{est}^x(1-θ_{est})^{n-x}



こんな感じに「それっぽさ」を表す『確率』を返す関数として、

この「 Lik(θ_{est}\,|\,x) 」が出てきます。



そしてこれが『尤度関数』なわけです。



ん? 確定した変数が入れ替わっただけ?

こう考えた方、それで合ってます。



要は、便宜上固定された「未確定な推定量 θ_{est} 」を、

一旦「関数 f(x,θ) 」の値を定めてから求める感じです。

軸を見る方向を変えただけですね。

x 軸側からか θ 軸側からか)






考え方の直観的な流れとしては、

まず、よく分からん「確率を返す関数 f(x,θ) 」があります。



これは『 2 種類の変数』を持っていて、

片方は「サンプリングすれば決まる変数 x 」で、

もう片方は「なんかよく分からん変数 θ 」なわけです。




片方の変数 x は、サンプリングすれば求まります。

でももう片方 θ は、どうにもなりません。

(母数だと、全部サンプリングしないと不明)




となると、知りたい「 f(x,θ) 」の値は分かりません。

どうすりゃいいんでしょう?




ともかく、まずは「分かる値」を埋めていきます。

すると「分かんない値」がなんなのか、分かってきますよね。

全部分かれば分かんない値は無いわけですし。



こうやって「よく分からん変数 θ 」を見出します。

はい、なんか出てきました。




ともあれ、θ には「なんかの値(よく分からん)」は入るわけです。

よく分かりませんけど、よく分からないまま、

とりあえず適当に「定数 θ_{est} 」ってしておくことにします。




すると「 f(x,θ) 」の値はとりあえず『一点に定まる』わけですね。



詳しくは「 f(x,θ) は確率を返す関数」なので、

「よく分からん変数 θ 」をとりあえず固定して、

『条件付確率 f(x\,|\,θ_{est}) 』に、分かってるのをぶち込む感じ。



これで、とりあえず「 f(x,θ) の値(点)」は求められるわけです。

θ は相変わらずよく分かりませんけど。






はい、というわけで、ここから「尤度関数」が見えてきます。



というのも、そもそも「 f(x\,|\,θ_{est}) 」は、

あくまで『変数 x についての関数』なわけです。

θ_{est} は定数』ですから。




いやでも、私達が『知りたい情報』は、

「よく分からん変数 θ 」の方なんですよね。

となると、こっちを「変数」として扱いたくなります。

こいつをどうにか求めたいんで。




そこで「変数 x は分かる」という部分に着目します。

↑での「分からないもの」を掘り出す作業をもっかいやる感じ。



そうすると「確定させられるものは確定させた関数」ができます。

これが、いわゆる『尤度関数』というものです。




f(x\,|\,θ) の『変数を入れ替えただけ』というのは、

こういう経緯からくるわけですね。



そういうわけで『尤度関数』は↓のように定義できます。


Lik(θ_{est}\,|\,x):=f(x\,|\,θ_{est})



わざわざこうするのは「変数が複数ある」場合を考えると分かります。

↓に紹介するので、ともかくここでは感覚を覚えてください。




ちなみに「 L(θ\,|\,x) 」や「 L(θ) 」と表されることが多いです。






形式的な言い回しをするなら、

『分布』を表す『確率密度関数 f(x,θ) 』が与えられたとき、



『確率を返す関数 f(x,θ) 』から、

まず推定量を定めて f(x\,|\,θ_{est}) と表せることから、

Lik(θ_{est}\,|\,x):=f(x\,|\,θ_{est}) 」を定義する。



このとき『 Lik(θ_{est}\,|\,x) 』を「尤度関数」と言う。



そしてこの尤度関数が最大(一番出やすい)になるとき、

その「 θ_{est} 」を『最尤推定量』と言う感じ。




とまあ、こういうわけです。

これはあくまで形式ですので、やりたいことは具体例みたいに、

「サンプリングした結果を一番再現できる推定量」を求めます。






ちなみにもっと一般化できます。そんな難しくないです。

単に「データ(観測値) x 」を多くして、

「推定量(知りたいやつ) θ_{est} 」を多くするだけ。



Lik(θ_1,θ_2,...,θ_n\,|\,x_1,x_2,...,x_i):=

f(x_1,x_2,…,x_i\,|\,θ_1,θ_2,…,θ_n)



f(x_1,x_2,…,x_i\,|\,θ_1,θ_2,…,θ_n) 」は、

「推定量 θ_1,θ_2,…,θ_n 」が固定された場合の、

「データ x_1,x_2,…,x_i 」が「同時に出現する確率」ですから、

Pr(x_1∩x_2∩…∩x_i)



\displaystyle f(x_1,x_2,…,x_i\,|\,θ_1,θ_2,…,θ_n)=\prod_{k=1}^{i}f(x_k\,|\,θ_1,θ_2,…,θ_n)



これが「尤度関数」の厳密で一般的な定義になります。

見た目むずいですけど、単にデータを増やしただけです。



どんどん分かり難くなっていきますが、そういうもんです。

といっても、一般化はし過ぎると分かり難くなっていけませんね。

あまり直観的じゃないですよ、これ。




はい、というわけで、次はこれの『最大』を求めてみましょう。

厳密には最大というより「極値」なんですが、そこは割愛。







尤度方程式 Likelihood Equation


|| 扱いにくい掛け算を足し算にする感じ

これは「比較を簡単にする手続きの一つ」になります。

それ以上の意味は無いです。




これはいわゆる『大小比較』のテクニックの一つになります。

主に「指数」が絡む場合に使われる方法です。

例えば「 99^{100}100^{99} の比較」とか。




これは、そのままだと『大小比較』が「超大変」です。

超絶面倒な計算をしないことには「比較」できません。




そこで、ここである方法を使うわけです。

「大小の比較だけ」は確実にやれる方法が。



そのやり方とは、要は↓みたいにやります。


99^{100}=e^{\log_{e}99^{100}}100^{99}=e^{\log_{e}100^{99}}



e^x は「正」で「単調増加」ですから、


a<b なら、当然 e^a<e^b です。

この逆、e^a<e^b なら a<b も成立します。



ということは、

99^{100}100^{99} の大小の比較は、

\log_{e}99^{100}\log_{e}100^{99} の大小の比較をすれば分かるわけです。




つまり『指数だけ』を比較すれば、計算をしなくても、

大小の『比較だけ』は、確実に、なにより簡単にできるわけですね。






『尤度方程式』は、この考え方を使います。



なにせ、例えば「 {}_n\mathrm{C}_x\cdot θ_{est}^x(1-θ_{est})^{n-x} 」の最大とか求めます。

欲しい『最大の推定量 θ_{est} 』は、

x 次方程式の解の中の 1 つ」になります。



求めようと思ったら、面倒とかそういう次元の話じゃないです。

『連続』で「 5 次元以上」だったら、そもそも求められません。






そんなわけで「指数だけ」を見て、

『大小の比較だけ』はできることの確認ができました。



そこで「対数尤度関数」というものを、誰かが考えました。

それこそ当初の目的通りに「最大」を求められるように。



Lik(θ\,|\,x)=e^{\log_{e}Lik(θ\,|\,x)}



というわけで、これの『指数の最大』を考えます。

この「指数 \log_{e}Lik(θ\,|\,x) が最大」になれば、

当然「 Lik(θ\,|\,x) 」も最大になりますので。



念のため確認しておくと、

『最大の指数 t_{max} 』とすると、



Lik(θ\,|\,x)=e^{\log_{e}Lik(θ\,|\,x)}≤e^{t_{max}}



つまり『最大の指数 t_{max} 』があれば、

Lik(θ\,|\,x) の最大」もまた求められるわけです。

具体的には『 e^{t_{max}} 』という値が。






さて、では実際に『最大』を求める方法を考えてみましょう。

より正確には「極値」を求める方法が必要です。




ここでは、とりあえず『最大が存在する』

ということを念頭にして、話を進めていきます。

なにせ『 Lik(θ\,|\,x) 』は確率ですからね。



0≤Lik(θ\,|\,x)≤1

になります。



簡単な図形にして考えてみると、

基本的には『接線の傾きが 0 になる』箇所がありそうです。

そこの「一番高いところ」が『最大』になりますし。




というわけで、同じく『対数尤度関数の最大』から、

「尤度関数(条件付き確率)の最大」を求めてみましょう。




つまりは『対数尤度関数』の最大なので、

「接線の傾きが 0 になる(変化量無し)」箇所から、

その中で一番大きなものが、最大の指数になります。




つまりは「偏微分」を使って、接線の傾きを求めれば良いわけです。

ということは↓みたいにすれば良いわけですね。



\displaystyle \frac{∂}{∂θ}\log_{e}Lik(θ\,|\,x)=0



これを解けば、最大が求められます。

そして、これこそが『尤度方程式』なわけです。






前後をひっくり返して繰り返し確認してみましょう。

いわゆる形式的な言い回しをします。



『尤度方程式』の定義は、


\displaystyle \frac{∂}{∂θ}\log_{e}Lik(θ\,|\,x)=0

です。






というわけで、保留していた↑の具体例を解いてみましょう。



\displaystyle \frac{∂}{∂θ}\log_{e}{}_n\mathrm{C}_x\cdot θ_{est}^x(1-θ_{est})^{n-x}=0



この「尤度方程式」から『最尤推定量』を求めます。




まず「偏微分」をする前に、中の式を整理しておきましょう。



\log_{e}{}_n\mathrm{C}_x\cdot θ_{est}^x(1-θ_{est})^{n-x}

\displaystyle =\log_{e}\frac{n!}{(n-x)!x!}θ_{est}^x(1-θ_{est})^{n-x}


ここで「 \log_{e}ab=\log_{e}a+\log_{e}b 」を使うと、

(詳細は対数関数の性質を確認してください)


=\log_{e}n!+\log_{e}((n-x)!)^{-1}+\log_{e}(x!)^{-1}

+\log_{e}θ_{est}^x+\log_{e}(1-θ_{est})^{n-x}



\log_{e}n!+\log_{e}((n-x)!)^{-1}+\log_{e}(x!)^{-1} の部分は、

「変数 θ_{est} 」の『偏微分』を考えるので「定数扱い」されますから、

「偏微分」をすると消えます。(変化しないので 0 になる)



なので、その部分を省いて整理すると、



\log_{e}θ_{est}^x+\log_{e}(1-θ_{est})^{n-x}

=x\log_{e}θ_{est}+(n-x)\log_{e}(1-θ_{est})



これで式の整理が終わったので、

改めて「変数 θ_{est} 」について『偏微分』すると、



\displaystyle \frac{∂}{∂θ}\left(x\log_{e}θ_{est}+(n-x)\log_{e}(1-θ_{est})\right)=0



対数関数の微分に関しては、結果だけ紹介します。

詳細は別の記事で。

\displaystyle \frac{d}{dx}\log_ex=\frac{1}{x}




これと、少しだけ込み入った微分の操作を使います。

具体的には↓みたいな考え方です。(詳細は微分の別記事で)

\displaystyle \frac{dy}{dx}=\frac{dy}{dz}\cdot\frac{dz}{dx}



というわけで微分すると、結果は↓になります。



\displaystyle \frac{∂}{∂θ}Lik(θ_{est}\,|\,x)

\displaystyle =\frac{∂}{∂θ}x\log_{e}θ_{est}+\frac{∂}{∂θ}(n-x)\log_{e}(1-θ_{est})+0

\displaystyle =x\cdot\frac{1}{θ_{est}}+(n-x)\cdot\frac{1}{1-θ_{est}}\frac{∂}{∂θ}(1-θ_{est})


\displaystyle =\frac{x}{θ_{est}}+(-1)\frac{n-x}{1-θ_{est}}=0



はい、というわけで、これを解けばフィニッシュです。

ようやっと『最尤推定量』が出てきます。



\displaystyle \frac{x}{θ_{est}}+(-1)\frac{n-x}{1-θ_{est}}=0

\displaystyle \frac{x}{θ_{est}}=\frac{n-x}{1-θ_{est}}


\displaystyle x(1-θ_{est})=(n-x)θ_{est}

x-xθ_{est}=nθ_{est}-xθ_{est}

x=nθ_{est}


\displaystyle ∴θ_{est}=\frac{x}{n}




というわけで『最尤推定量』が求まりました。

いやはや、ちゃんと直観的な値が出てきてびっくりですね。



というのも、意味としては、

「サンプリングしたサンプルの個数 n 」で、

「片方の結果が出た回数 x 」を割ってます。



具体的には「 100 回」の内「 90 回表が出た」なら、

『一番もっともらしい表が出る確率』は「 90/100 」って言ってます。

人間の直観にちゃんとマッチしてますね。