スキップしてメイン コンテンツに移動

最尤推定

Introduction


今日は最尤推定について加工と思います。これは統計的推定でよく使われる手法です。最尤推定の例も書こうと思います。初めに尤度の説明をし、そのあとで最尤推定の説明をします。

概要


  • 尤度
  • 最尤推定
  • 最尤推定の問題点

尤度

前提条件から得られる観察データを考えます。この時、えられた観測データに対して前提条件が尤もらしい条件であるかの値を尤度といいます。

なにをゆっているのかわからない人がほとんどだと思います。。。
尤度の例を扱っていきます。

コインを投げることを考えます。このコインは確率Pで表、確率1-Pで裏を出すコインだとします。
例えば、100回コインを投げたとき、全て表だったとします。この時このコインが表が出る確率はかなり1に近いことが予想されます。

ではもし、表が出る確率PがP=0.5だとします。この時、表が100回連続で出る確率は$0.5^{100} = 7.88860e-31$になります。あり得ない確率ですね。これがP=0.5としたときのもっともらしさです。つまり、あまり現実的ではないということです。

もしP=0.99とするとき、100回とも表が出る確率は$0.99^{100} = 0.3666....$となります。つまり、P=0.99としたときの尤度は0.36くらいということです。よって、P=0.5よりかは現実見があることになります。まだまだ低い数字ではありますが。


観測データである、100回表が出るという事象を固定したとき、尤度はPを変数としたP(100回表|P)を尤度関数と呼びます。この関数の値を尤度と呼びます。


尤度が高いほうが尤もらしい値、つまり理にかなっているなと感じることができる値ということになります。

例えば、先ほどの例でゆうと、

P=0.5としたときの尤度は7.88860e-31でした。P=0.99としたときの尤度は0.3666でした。よってP=0.5より、P=0.99のほうが尤もらしい自然な値ということになります。


最尤推定

最尤推定とは得られた観測データからデータが依存している分布のパラメーターを推測するための手法です。
最尤推定では尤度を最大化して、最も尤もらしいパラメーターを求めます。

確率密度関数$f$と$X_1,X_2,...,X_n$が$f$に従う確率変数とします。 $$X_1,X_2, ..., X_n \sim f$$

この時、$X_1,X_2,..,X_n$が同時におこる確率は
$$\Pi_{i=1}^{N} P(X_i)$$
いわゆる同時確率です。

よって、尤度関数を次のように定義します。
$$L(\theta) = f(x_1,x_2,...,x_n|\theta)$$

この時、
$$\theta^{\star} \in \arg_{\theta} \max L(\theta)$$
$\theta$最尤推定量といいます。

そして、
$$\frac{\partial}{\partial \theta} \log L(\theta)$$
これを尤度方程式といいます。

なぜ、$\log$がいきなり登場しているのかは後の最尤推定の例で説明します。


最尤推定の例

$x_1,x_2,...,x_n \in {0,1}$について考えます。 $\forall i \in {1,2,..,n}$について、$x_i = 1$とするとき、i回目のコイン投げは表とします。$x_i$とするとき、コインは裏になったとします。

この時、尤度関数は
$$L(\theta) = P(x_1,x_2,...,x_n|\theta) = \Pi_{i=1}^{n} \theta^{x_i} (1-\theta)^{1-x_i}$$

$\forall i \in {1,2,..,n},  \sim p(k;\theta) = \theta^k (1-\theta)^{1-k} ~~~~\textrm{for} k \in {0,1}$

コインはベルヌーイ分布に従うので、このような形になります。
ここで、 $\theta$表が出る確率とします。

$L(\theta)$を$\theta$について最大化したいのですが、微分がかなり難しい形になっています。なぜなら$L(\theta)$について線形でないからです。つまり、$\theta$について掛け算の形になっていることが微分を難しくしています。

この問題を解決するために、$\log$を使います。
$\log$は単調増加関数なので$L(\theta)$と$\log L(\theta)$の局所解は変わりません。

よって、$\log L(\theta)$を最大化します。

\begin{eqnarray*}
\log L(\theta) &=& \log \Pi_{i=1}^{n} \theta^{x_i} (1-\theta)^{1-x_i} \\
&=& \sum_{i=1}^N \log \theta^{x_i} + \log (1-\theta)^{1-x_i} \\
&=& \sum_{i=1}^N  x_i \log \theta + (1-x_i)\log(1-\theta)
\end{eqnarray*}

これの微分は

\begin{eqnarray*}
\frac{\partial}{\partial \theta} \log L(\theta) &=& 0 \\
\frac{\partial}{\partial \theta} \sum_{i=1}^N x_i \log \theta + (1-x_i) \log (1-\theta) &=& 0 \\
\sum_{i=1}^N \frac{x_i}{\theta} - \frac{1-x_i}{1-\theta} &=& 0 \\
\frac{1}{\theta} \sum_{i=1}^N x_i - \frac{1}{1-\theta_i} \sum_{i=1}^N (1-x_i) &=& 0 \\
(1-\theta) \sum_{i=1}^N x_i - \theta \sum_{i=1}^N 1-x_i &=& 0 \\
\sum_{i=1}^N x_i - \theta \sum_{i=1}^N x_i - \theta \sum_{i=1}^N 1 + \theta \sum_{i=1}^N x_i &=& 0 \\
\sum_{i=1}^N x_i - n \theta &=& 0 \\
\theta &=& \frac{\sum_{i=1}^N }{n} \\
\end{eqnarray*}

この最適解は$x_1,x_2,..,x_n$の平均を表していることがわかります。
もし、コインが100回表、裏が0回だった時、最尤推定により、得た$\theta$の値は$\theta=1$
また、コインが50回表、裏が50回であれば、最尤推定により、得られた$\theta$の値は$\theta = 0.5$

最尤推定の問題点

最尤推定には問題点もあります。例えば、先ほどみたとおり、100回表がでて、裏が0解の時、$\theta=1$とするのが尤もらしいという結果が最尤推定から得られました。

ただ、もし3回表がでて、0回裏が出たとき、この時の最尤推定量も$\theta=1$となってします。しかし、3回表が出たからと言って、コインの表が出る確率が1と考えるのはあまりに危険すぎます。


つまり、観測データが少ない場合は最尤推定の結果はあまり信用できません。


Reference

https://ja.wikipedia.org/wiki/%E5%B0%A4%E5%BA%A6%E9%96%A2%E6%95%B0

コメント

  1. 対数尤度をさらに変形していくと確率モデルの分布をデータの出現頻度の分布(経験分布)に近づけるって話にももっていけますよねー。

    返信削除
    返信
    1. コメントありがとうございます!
      すいません。勉強不足で、よろしければご教授していただけないでしょうか?

      削除
  2. このコメントは投稿者によって削除されました。

    返信削除

コメントを投稿

このブログの人気の投稿

heap structure

Introduction 日本語 ver Today, I will write about heap structure. The heap structure is one of the data structure. My reason of studying heap structure is that I joined seminar of Ritsumeikan Univ. I used this  slide  in seminar of Ritsumeikan Univ. Overview data structure binary tree heap Implementation heap sort Data structure I will explain about data structure before explaining about heap. Data structure is how to keep data. Data structure is selected on the basis of operation which you want to.  Heap belong to data structure called priority queue. priority queue have purpose which  add data pick up minimum data (and remove)  Binary Tree Let, E and V are sets. The element $e \in E$ is called edge. The element $v \in V$ is called node. g:E->V×V is map to V × V from E. (E,V,g) is called graph. For example, The arrows are edge. The circles are node. This is expressed map. It is possible to go to node 3 from 1....

Pythonでグラフ理論

Introduction English ver 今日はnetworkxというpythonのモジュールについて書きます。 グラフ理論の定義などの情報は ここ の記事に書いてあります。 この記事ではグラフ理論の中身については扱いませんが、Pythonでのnetworkxというモジュールについてメモをしておきます。 Networkx Python3にはnetworkxはすでに入っています。 Python2の方はpipを使ってinstallしてください。コマンドラインで以下のコマンドを実行します。 pip install networkx ではNetworkxを使ってグラフを作っていきます。 初めにimportをしてインスタンスを作っていきます。 import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() 次にグラフにノード(頂点)とエッジ(枝)を入れていきます。 G.add_node(1) # add Multiple nodes G.add_nodes_from([2,3,4]) G.add_edge(1,2) # add Multiple edges G.add_edges_from([(3,4),(1,2),(4,6)]) ではこのGのグラフを描画していきましょう。 以下のコードで描画できます。 nx.draw(G) plt.show() Networkxはたくさんの関数を持っています。 また、随時追記していきたいと思います。 Reference https://qiita.com/kzm4269/items/081ff2fdb8a6b0a6112f http://akiniwa.hatenablog.jp/entry/2013/05/12/012459