Processing math: 100%
スキップしてメイン コンテンツに移動

最尤推定

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のほうが尤もらしい自然な値ということになります。


最尤推定

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

確率密度関数fX_1,X_2,...,X_nfに従う確率変数とします。 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. このコメントは投稿者によって削除されました。

    返信削除

コメントを投稿

このブログの人気の投稿

カーネルk-meansの実装

Introduction   English ver 今日はカーネルk-meansの実装をしました。k-menasアルゴリズムはクラスタリングのためのアルゴリズムです。僕がカーネルk-meansを実装しようと思ったのには一つ理由があります。それは僕の友人がk-meansのプレゼンを、僕がカーネルのプレゼンをしていた時に、k-meansにカーネルを適応できないかと思ったからです。そこで、カーネルk-meansについての論文を探しました。 ここのpdf を主に参考にさせていただきました。うまくカーネルk-meansを実装できたと思います。ここでは、普通のk-meansとカーネルを用いた,kernel k-meansについての実装の結果を紹介します。 また、この記事では実装結果のみ書きますが、理論のほうも別の記事で書くつもりです。書き終えたらリンクをこの記事にも貼っておきます。 #  理論編書きました。K-means 理論編 概要 dataset   ちょっとだけ理論の説明  k-means    kernel k-means   Dataset   English ver 今回使うのは二つのデータセットです。一つ目は、普通のk-means用のデータです。二つ目はkernel k-means用のデータセットです。 一つ目のデータは、三つのグループで構成されており、次元は2で、サンプル数は300です。以下のような分布になっています。 二つ目のデータは二つのグループで構成されており、次元は2でサンプル数は300です。   this page にデータセットを作ったコードを載せています。 ちょっとだけ理論の説明 k-meansとは、k-平均法とも呼ばれています。初めに、適当なクラスに分け、各クラスの中で平均となるベクトルを求めます。そして、各データに対して、すべての平均ベクトルとの距離を求めます。そして、最小となる距離になるクラスに改めて、そのデータをクラスタリングします。そして、新たに得られたクラスの中でそれぞれ平均ベクトルを求め、これを繰り返し、平均ベクトルが動かな...

ダイクストラ法

Introduction English ver 今日は、ダイクストラ法について書きます。ダイクストラ法とは最短距離を求めるアルゴリズムです。地図はグラフで表されます。もし、まだ this page を見ていない方は先にこちらをご覧ください。今回はこの記事を前提としています。このページでは、グラフの定義と、ヒープ構造について書いています。ダイクストラ法ではヒープ構造を使って、かなりの計算量を落とします。 この スライド はダイクストラ法を説明したスライドです。 Overview アルゴリズム 実装 アルゴリズム このアルゴリズムは スタート始点のノードを決める。そして、それをAと名付ける。 各ノードにd=\inftyを割り当てる。ただし、スタート地点はd=0 Aの隣接ノードのリストをadj_listと名付ける。  For adj in adj_list:  If d of adj > d of A + weight to adj -> d = A + weight to adj. グラフnetworkからAを取り除く グラフnetworkの中で最初のdを持っているノードをAとし、4に戻る。 となっています。 このアルゴリズムを図を用いて説明します。  このグラフを使って説明します。  初めに、スタート地点を決めます。そして、各ノードにd=\inftyを割り当てます。  Aから始まります。Aの隣接ノードであるBのdを更新します。もし、現在のBよりもAのdとA->Bへの重みを足したもののほうが小さいならdをその値に更新します。同じようにCnのdを更新します。 次にAを取り除きます。  次はBから始まります。Aと同じことをやります。 このダイクストラ法では今のような操作をグラフの全てのノードに×がつくまで続きます。 実装 このアルゴリズムではO(log(|V|^2))という計算量を持っています。最小のdを持つノードを探すのに時間がかかります。 しかし、ヒープ構造を使えばO((E+V)log(V))に減らせます。ヒープ構造で現時点での...

ヘッセ行列

Introduction English ver 今日は、ヘッセ行列を用いたテイラー展開について書こうと思います。 これは最適化を勉強するにあたって、とても大事になってくるので自分でまとめて残しておくことにしました。とくに、機械学習では最適化を必ず行うため、このブログのタイトルにもマッチした内容だと思います。 . 概要 ヘッセ行列の定義 ベクトルを用いたテイラー展開 関数の最適性 ヘッセ行列の定義 仮定 f は次のような条件を満たす関数です。. f はn次元ベクトルから実数値を出力します。 このベクトルは次のように表せます。 x = [x_1,x_2,,,,x_n] \forall x_i , i \in {1,2,,,n}, f は二回偏微分可能です。 定義 ヘッセ行列は \frac{\partial^2}{\partial x_i \partial x_j}を (i,j)要素に持ちます。 よってヘッセ行列は次のように表せます。 \[ H(f) = \left( \begin{array}{cccc} \frac{\partial^ 2}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & &\ldots \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^ 2 f}{\partial x_1 \partial x_2} & \frac{\partial^ 2 f}{\partial x_2^ 2} & \ldots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^ 2 f}{\partial x_n \partial x_2} & \frac{\partial^ 2 f}{\partial x_n \partial x_2} & \ldo...