えんじにあのじゆうちょう

勉強したことを中心にアウトプットしていきます。

最尤推定によるパラメータ推定

はじめに

この世の中に存在するデータは「正規分布」であることが多い、だとか、個数を表す分布は「ポアソン分布」が当てはまりやすいだとか言われていますが、どのようにして、分布を求めればよいでしょうか。

数式で表すと、ある確率分布f(\theta)(\thetaは確率分布のパラメータ)があったとき、その確率分布に従うy_iy_i \sim f(x_i|\theta_i)を求めるということが実際にやりたいことになります。

その方法の一つとして「最尤推定」という方法があり、本エントリではそれについての学習をまとめます。

ちなみに最尤推定は以下と言われています。*1

統計学において、与えられたデータからそれが従う確率分布の母数を点推定する方法である。

わかったようなわからないような説明なので、まとめ直してみます。

解説

尤度: データと確率分布の当てはまり度

ここでは、「ある確率分布」を決めた上でデータに当てはめていく事を考えます。

例えばいま、以下のようなデータがあったとします。

f:id:marufeuillex:20190916012423p:plain
\mu = 4, \sigma = 1で生成したデータ

いま、このデータが正規分布に従っている、ということだけわかっていたとして、一番良い\mu, \sigmaを求めなくてはいけません。

当てずっぽうにいくつか描画してみると、(やや恣意的ですが)

f:id:marufeuillex:20190916012647p:plain
恣意的な当てはめ

のようになり、パッと見は\mu=3, \sigma=1のものがよりよく割りあたっているように見えます。
この割あたっている度合いを尤度といい、従う確率分布をf(X|\theta)とすると尤度関数は以下の様に表現されます。

L(\theta_i|X) = \prod_{i=0}^{N} f(X|\theta_i)

これはデータ(x_0, x_1, x_2, ..., x_9)を独立した事象と捉えてf(X|\theta)(\thetaは確率分布のパラメータ)の元で同時に発生する確率を考えています。
当てはまりが良い、ということはf(X|\theta)が大きい確率を返す点を多く含むはずなので、この尤度関数は大きな値を取るようになります。

最尤推定:データと確率分布がもっともよく当てはまる点の探索

では最も良い尤度を求めるにはどうしたら良いでしょうか。
数式で表すと以下のようになり、いろいろな\thetaに対してLが最大となるものを求めることになります。

\hat{\theta} = argmax_{\theta_i}L(\theta_i|X)

先程のデータを利用して考えてみます。
いま、確率分布関数であるf(X|\theta)は正規分布なので、Normal(X|\mu, \sigma)です。
正規分布は次のように表されます。

\frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{(x_i-\mu)^2}{2\sigma^2})

これを尤度関数に入れると、

L(\mu, \sigma|X) = \prod_{i=0}^{N} \frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{(x_i-\mu)^2}{2\sigma^2})

となります。

sigmaを固定値として考えると、\muの関数として考えられます。試しに図示してみると、いかのようになります。

f:id:marufeuillex:20190916020610p:plain
尤度関数

ピッタリ4ではないですが、概ね4のあたりが最大値になっていることがわかります。

コンピュータ的には\hat{\theta} = argmax_{\theta_i}L(\theta_i|X)を比較的簡単に考えることができるので、ある程度の幅で近似的に\muを求めることができるかもしれません。
\muを0から0.01の幅で動かしていくとこの場合はargmax = 423となり、\mu=4.23となります。
(ちなみに\sigma\sigma = \frac{1}{N} \sum_i^N (x_i - \overline{x}) = \frac{1}{10} \sum_i^{10} (x_i - \overline{x}) = 0.9566742769920872としています)

しかし、それでは数式的になぜを解決できないため、もう少し続けます。
先程の尤度関数を考えます。

L(\mu, \sigma|X) = \prod_{i=0}^{N} \frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{(x_i-\mu)^2}{2\sigma^2})

ですが、見ての通りとても計算しにくいですが、logを取ります。これを対数尤度関数といいます。
(以下の式は、logの定義に従い、式の展開後のものとなります)

\log(L(\mu, \sigma|X))=-\frac{1}{2}N\log(2\pi\sigma^2) - \frac{\sum(x_i-\mu)^2}{2\sigma^2}

これは\sigmaを固定してみると、\muに関する2次関数で、係数がマイナスなので最大値は傾きがゼロの点で求めることができそうです。
ここで式を見ると\muが含まれているのは-\frac{\sum(x_i-\mu)^2}{2\sigma^2}だけなので、ここの傾きがゼロの点を考えます。
つまり、これは最小二乗法を解くのと同一である、ということです。

ちなみに\sigmaも同様に求められますが、計算すると結局\sigma = \frac{1}{N} \sum_i^N (x_i - \overline{x})となります。

まとめ

このエントリでは最尤推定について、正規分布のデータを用いてまとめてみました。

従っている確率分布さえ仮定できれば、比較的簡単にパラメータの点推定ができるようです。

私個人として「一般線形モデルの目的変数は正規分布に従う」というところが、あまりピンときていないところがあったのですが、こういう計算を背後で行っていることを考えると納得がいきました。やはりちゃんと数式を読むということは大切ですね。