機械学習を勉強する上で、二項分布を学ぶことは非常に重要です。
二項分布はよくコイン投げを複数回行った時に、表が何回出る確率を表現するような確率分布です。
ベイズ推定などを勉強している人は、二項分布とその共役事前分布であるベータ分布を用いて、コイン投げの試行回数の推定をベイズの枠組みで推定する、といった練習問題に遭遇した人も多いのではないでしょうか。
二項分布はコイン投げだけではなく、コイン投げのように試行が0,1 の2種類で表すことができるような現象を表現するのによく利用されます。今回はこの二項分布について、数式やグラフを交えてできるだけ分かりやすく解説していきます。また、期待値や分散などの基本的な統計量について、扱っていきます。
- 二項分布について解説
- 二項分布のグラフを可視化
- 二項分布の期待値と分散
二項分布(binomial distribution)とは
二項分布(Binomial distribution)はベルヌーイ分布と同様に、よくコイン投げの試行に例えられることがあります。ベルヌーイ分布では、コイン投げを行い、表(1)か裏(0)かを表現する、2つの値をとる離散的確率分布でした。
今回の二項分布は、ベルヌーイ分布で表現されるようなコイン投げの試行を何回か行い、その結果表が出た回数を表現する確率分布です。
二項分布の定義
ではまず二項分布の確率分布を見ていきましょう。
二項分布は、ベルヌーイ分布と同じように離散確率変数で、パラメータは$N$と$μ$の2つを取る確率分布です。ここで、$N$はコイン投げのような試行を行った回数で、$μ$はコイン投げで言うところの表がでる確率です。
ここで、今回確率値を出したい、$N$回の試行で表がでた回数を$m$とすると、二項分布では下記のように定式化することができます。
\begin{equation} Bin(m | N, μ ) = {}_N C_m μ^m(1-μ)^{N-m} \end{equation}
ここで、${}_N C_m$とありますが、これが下記のように表される組み合わせの数となっています。
\begin{equation} {}_N C_m = \frac{N!}{m!(N-m)!} \end{equation}
表にすると、二項分布の取りうる値はこのようになっています。
m | 1 | 2 | … | n | … | N |
Bin(m) | $N μ (1-μ)^{N-1}$ | $\frac{N(N-1)}{2・1} μ^2 (1-μ)^{N-2}$ | … | $ \frac{N! (N-n)!}{n!} μ^n(1-μ)^{N-n}$ | … | $μ^N$ |
二項分布のグラフを可視化
定義をおさえても、なかなか理解できるものではないと思うので、可視化して確認してみましょう。
今回はPythonとそのライブラリであるscikit-learnとmatplotlibを用いて可視化します。Jupyternotebookの環境がある人は、次のようなコードを入力することで、二項分布のグラフを可視化することができます。
表が出る確率が、0.2, 0.5, 0.7 になっている歪なコインを100回投げた時の、二項分布のグラフを描写してみます。
from scipy.stats import binom
import matplotlib.pylab as plt
import numpy as np
fig, ax = plt.subplots(figsize=(10, 2), dpi=120)
N = 100
k = np.arange(100)
p = [0.2, 0.5, 0.7]
for idx, p in enumerate(p):
pmf = binom.pmf(k, N, p)
ax.bar(k, pmf, label="p = {}".format(p))
ax.set_xlabel("Numer")
ax.set_ylabel("Probability")
ax.legend()
このようになりました。
青色、オレンジ、緑の準備に、0.2、0.5、0.7のサイコロを使っています。それぞれのグラフは山のような形状をしています。表が出る確率が0.5である通常のコインであれば、100回投げれば、50回は出るだろうということがわかります。
二項分布の期待値・分散・エントロピー・KL情報量などの統計量
新しい確率分布を学ぶときは、その確率分布の基本的な統計量である期待値や分散、エントロピーやKL情報量などの統計量を確認するようにしましょう。
これらは、機械学習や統計で実際に問題を解いていくうちに勝手に覚えていくので、無理に覚える必要性はありません。
ただ、いつでも導入できるように、確率変数の期待値の定義や分散の定義などは覚えていくようにしましょう。
エントロピーとKL情報量に関しては以下のページでわかりやすく説明しています。
二項分布の期待値と分散
二項分布の期待値と分散はこのようになっています。
期待値
\begin{equation} E[Bin(m|N, μ)] = Nμ \end{equation}
分散
\begin{equation} Var[Bin(m|N, μ)] = Nμ(1 - \mu) \end{equation}
二項分布の期待値の証明
下記の証明には、確率変数における、和の期待値は期待値の和である性質を利用します。
ここで、n回目のコイン投げにおける確率変数を考えます。
ベルヌーイ分布を用い、n回目において表が出ると1、裏が出ると0になる確率変数$X_n$を考えると、下記によって導かれます。
\begin{split} E[Bin(m|N, μ)] &= E[X_1 + X_2 + \dots + X_M] \\ &= E[X_1] + E[X_2] + \dots + E[X_N] = Nμ \end{split}
この公式については、こちらをご参考ください。
また、二項分布の期待値は$Nμ$ですが、これは試行回数×表が出る確率 になっており、直感的にもこのようになることはイメージできるかと思います。