ベータ分布は、値が0~1の間を取りうる確率分布で、機械学習や統計学の応用分野で非常に多く登場する確率分布です。
ベータ分布とよく混同しやすいガンマ分布は、取りうる値が正の実数の範囲内なので、ベータ分布とガンマ分布と混同しないように覚えておく必要があります。(ベータの分布もガンマ分布も本当に重要なので、合わせて覚えておくと良いでしょう)
今回は、基本的な確率分布の中で、正規分布と並んで最も登場頻度が高いといってもいい確率分布であるベータ分布について、その性質やグラフの形状、期待値や分散などの統計量を解説していきます。
また、Pythonを利用して、実際にベータ分布を可視化し、ベータ分布のパラメータ$a$, $b$を変えることで分布の形状がどのように変わるかを見ていきます。
- ベータ分布の確率密度関数の定義式を確認
- Pythonを用いてベータ分布の形状をチェック
- 期待値や分散など基本的な統計量の導出
ベータ分布の数式
ベータ分布(beta distribution)は、その分布の取りうる値が0 から1 になる、確率分布です。
ガンマ分布(Gamma distribution)は取りうる値が十数の範囲内なので、混同しないようにしましょう。
後述する理由から、機械学習や統計学に実際の応用場面で、非常に多く登場する確率分布となっています。
ベータ分布の確率密度関数の定義式は、下記に示すようになっています。
\begin{equation} Beta(\mu | a, b) = C \mu^{a -1} (1 - \mu) ^ {b-1} \end{equation}
ここで、Beta分布は値が0, 1の間になります。つまり、$Beta(\mu | a, b) \in (0, 1)$となります。
(1)式に登場するa, b はそれぞれ $a, b \in \mathcal{R}$を満たすパラメータとなっています。ベータ分布は2つのパラメータを有する確率分布となっています。
ここで(1)式は正規化項ということで、(1)が確率密度関数の定義である
\int_{-\infin}^{\infin} Beta(\mu | a, b) = 1
を満たすように調整された係数となっています。このCは具体的には下記のような形となっています。
\begin{equation} C = \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} \end{equation}
なにやら見慣れない関数$\Gamma(x)$が出てきました。
この関数はガンマ関数(Gamma Function)と呼ばれており、機械学習分野、特にベイズ統計でかなり頻繁に登場する関数なので慣れておいて良いでしょう。

実際、の正規化項は、実際上はあまり計算に影響することはないため、(2)のような形式の正規化項がつくんだな〜、というような認識さえ持っておけば良いでしょう。
ちなみに、(1)式ですが、よくみると二項分布に似ていることがわかります。
\begin{equation} Bin(m | M, μ ) = {}_M C_m μ^m(1-μ)^{M-m} \end{equation}
Pythonでベータ分布を図示してみる
(1)のような数式を見ても、ベータ分布がどのような形をしているか想像できる人は恐らくいないでしょう。例のごとく、Pythonでパラメータ$a, b$を変更してみたベータ分布を図示してみましょう。
ベータ分布の2つのパラメータ$a, b$を$params = \{ 0.5, 1, 2, 3\}$ の範囲で変えてみて、図示してみましょう。
ライブラリはscipyとmatplotlibとnumpyを利用しているので、使っているPython環境でまだこれらのライブラリをインストールしていない人はこれらをインストールしてから、下記のコードを実行してみてください。
from scipy import stats
import matplotlib.pylab as plt
import numpy as np
params = [0.5, 1, 2, 3]
x = np.linspace(0, 1, 100)
f, ax = plt.subplots(len(params), len(params), figsize=(10,8), dpi=150)
colorlist = ["m", "y", "g", "b"]
for i in range(len(params)):
for j in range(len(params)):
alpha = params[i]
beta = params[j]
y = stats.beta(alpha, beta).pdf(x)
ax[i, j].plot(x, y, label="$\\alpha$ = {}, $\\beta:$ = {}".format(i, j), color=colorlist[i])
ax[i, j].legend()
このように表示されるはずです。

今回はパラメータを0.5 ~ 3の範囲で変えただけですが、かなり表現力の高い分布になっていることがわかると思います。
このように、ベータ分布は区間 (0, 1)の値をとる変数の分布をかなり柔軟に表現することができます。
ベータ分布が統計学や機械学習で重要な理由
ここまでベータ分布を図示してきましたが、ベータ分布のパラメタ$a, b$を変更することで、柔軟に形状を変えられることがわかると思います。例えば、上の図をみるとわかりますが、a=1, b=1の時は一様分布のような形状になりますし、a=3, b=3の時は正規分布のような形状をしています。
このようにベータ分布が、2つのパラメータa, b の選び方によって様々な分布を表現できることが、ベータ分布が非常によく利用されている1つ目の理由です。
そして、実はベータ分布がよく利用されるもう一つの理由として、ベータ分布が、ベルヌーイ分布や二項分布のパラメータの共役事前分布(conjugate prior)であることが挙げられます。
共役事前分布は、尤度関数とかけ合わせると、分布の形状が変わらない事後分布になる性質があります。この共役事前分布の性質は別に記事にて詳しく解説しますが、ベイズ推定などを行う上で極めて重要な性質となっています。
しかし、一旦ベータ分布を学ぶ上では、一旦これらの、二項分布とベルヌーイ分布の共役事前分布となる性質は忘れて大丈夫です。ベータ分布はこれからベイズ統計を学ぶ上で非常に重要な分布になるんだ、ということだけ頭の中に入れておけば大丈夫です。
ベータ分布の期待値
まず最初に、ベータ分布の期待値は下記のようになります。
\begin{equation} E[Beta(\mu | a, b)] = \frac{a}{a+b} \end{equation}
(4)式で求められた、ベータ分布の期待値の導出と証明をしましょう。
ベータ分布の期待値の証明
ベータ分布は連続確率分布なので、期待値の定義から期待を計算します。
\begin{equation} \begin{split} \int_{0}^{1} \mu Beta(\mu | a, b) d\mu &= \int_{0}^{1} \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} \mu^{a } (1 - \mu) ^ {b-1} d\mu \\ &= \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} \int_{0}^{1} \mu^{a } (1 - \mu) ^ {b-1} d\mu \\ &= \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} \frac{\Gamma(a + 1)\Gamma(b)}{\Gamma(a + b + 1)} \\ &= \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} \frac{a}{a+b} \frac{\Gamma(a )\Gamma(b)}{\Gamma(a + b)} \\ &= \frac{a}{a+b} \end{split} \end{equation}
となり、期待値の証明をすることができました。
ここで、(5)の式変形ですが、3行目と4行目の式変形は少しわかりにくいかもしれません。
3行目の式変形は、ベータ分布の確率密度関数の下側面積が1になることを利用しています。
4行目の式変形にはガンマ関数$\Gamma(x)$において成り立つ、下記の性質を利用しています。
ガンマ関数について成り立つ重要な性質
\begin{equation} \begin{split} \Gamma(x+1) &= x \Gamma(x) \\ \Gamma(1) &= 1 \end{split} \end{equation}
(5)の証明における、4行目の式変形はこの性質を利用していることに注意してください。
ベータ分布の分散
続いて、ベータ分布の分散の導出と証明をします。まず、ベータ分布の分散は下記にようになります。
\begin{equation} V[Beta(\mu | a, b)] = \frac{ab}{(a+b)^2 (a+b+1)} \end{equation}
この証明を行います。
ベータ分布の分散の証明
ベータ分布の分散の証明には、確率密度関数における期待値と分散の間に成り立つ、下記の関係式を利用します。
\begin{equation} V[X] = E[X^2] - E[X]^2 \end{equation}
(8)式から、まず$E[X^2]$を求めると
\begin{equation} \begin{split} E[Beta(\mu | a, b)^2] &= \int_{0}^{1} \mu^2 \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \mu^{a-1}(1-\mu)^{b-1} d\mu \\ &= \int_{0}^{1} \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \mu^{a+1}(1-\mu)^{b-1} d\mu \\ &= \int_{0}^{1} \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \frac{\Gamma(a+2)\Gamma(b)}{\Gamma(a+b+2)} \\ &= \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \frac{a(a+1)\Gamma(a)\Gamma(b)}{(a+b+1)(a+b)\Gamma(a+b)} \\ &= \frac{a(a+1)}{(a+b+1)(a+b)} \\ \end{split} \end{equation}
この式変形も、(5)式の式変形を追えることができれば、理解できると思います。
よって、(8)式より、
\begin{equation} \begin{split} V[X] &= E[X^2] - E[X]^2 \\ &= \frac{a(a+1)}{(a+b+1)(a+b)} - \biggr(\frac{a}{a+b} \biggr)^2 \\ &= \frac{ab}{(a+b)^2 (a+b+1)} \end{split} \end{equation}
(7)で示した、ベータ分布の分散が証明できました。