気ままに実装する機械学習

機械学習に興味のある大学院生によるブログです.

ベルヌーイ分布

第2章の確率分布の一番最初に紹介されているベルヌーイ分布について

二値確率変数 (binary random variable, 以下二値r.v.) {x \in \{0,1\}}が1つの場合について考える. 例えば、 x = 1で「」、x = 0で「」を表現するとする.

これを使えばコイン投げの結果が二値r.v.で表現できる.
一般の話を扱うので「」が出る確率は0.5ではなくパラメータ\muで表すことにする.
つまり、

{\displaystyle  p(x = 1 | \mu) = \mu }

となる.
確率なので  0 \leq \mu \leq 1 を満たし、 p(x = 0 | \mu) = 1 - \muとなる.
これより xが従う分布は

{\displaystyle Bern(x | \mu) = \mu ^{x} (1 - \mu)^{1-x}}

となり、これがベルヌーイ分布である.
また、平均、分散はそれぞれ、E[x] = \mu, V[x] = \mu (1-\mu)である.

ベルヌーイ分布をpythonmatplotlibを使って可視化してみようと思う.
私が書いたソースは以下の通りである.

パラメータをそれぞれ0.1, 0.5, 0.8に設定したものを載せておく.

f:id:linearml:20170818103828p:plain:w240 f:id:linearml:20170818103833p:plain:w240 f:id:linearml:20170818103839p:plain:w240

次に、観測データ集合 \{x_{1},\cdots,x_{N}\}ベルヌーイ分布から独立に与えられたとする.
その時の尤度は

{\displaystyle \prod_{n=1}^{N}\mu^{x_{n}}(1-\mu)^{1-x_{n}}}

となり、この尤度を最大にするようにしてパラメータを推定するのが最尤推定である.
積の形では扱いにくいので尤度の対数をとって和の形にしてしまう.
この対数尤度をパラメータ \mu微分して0とおき、方程式を解けば最尤推定量が求まり以下のように得られる.

{\displaystyle \mu_{ML} = \frac{1}{N} \sum_{n=1}^{N} x_{n}}

ここで表が出た回数、つまりx = 1となった回数をmとすると

{\displaystyle \mu_{ML} = \frac{m}{N}}

となる.
例えば試行3回中3回とも表が出た場合に、最尤推定量は1となるので、今後もずっと表が出続けると予測してしまっている.
これは過学習の極端な例であるが、これではまずい. 今後はパラメータが従う事前分布を導入して、もっと常識的な結果を得る方法について考える.