機械学習 はじめよう

第7回 代表的な離散型確率分布

この記事を読むのに必要な時間:およそ 3.5 分

今回は,前回導入したNumpy,そしてグラフを描画するmatplotlibを使って,いくつかの代表的な分布を紹介していきます。

第5回「よく使う分布」はどうしてよく使う?の項でも代表的な分布が紹介されていました。そこでは,この状況(モデル)では,この分布を使うというパターンを想定する,それがよく使う分布がいくつも存在する理由と言及されていましたが,どのような状況でどのような分布を使えばいいのでしょうか?

実際,どのような状況のときに,どのような分布を使うと説明しやすいかを考えながら,みていきましょう。

matplotlibのインストール

matplotlibはpythonとNumpyのための高機能なグラフ描画ライブラリです。今後もグラフを描画することがあるかと思いますので,ここでインストールしておきましょう。

公式サイトのダウンロードから各OS向けのパッケージを入手してインストールしてください。ソースコードからインストールする場合は,以下の手順でインストールすることができます。

svn co  https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib
cd matplotlib
python setup.py build
python setup.py install

確率分布とは

「成人男性の身長は正規分布に従う」「空いている高速道路の料金所を1分間に通過する自動車の台数はポワソン分布に従う」などの表現を統計の本などで見たことのある人もいるでしょう。そもそも,ここで利用している分布とはどういったものでしょうか。例として成人男性の身長について考えてみましょう。健康診断などで計った身長のデータを集めて,以下のようなグラフにしてみます。

図1 身長のヒストグラム

図1 身長のヒストグラム

このような表を度数分布表(ヒストグラム)といいます。このヒストグラムの形に合わせて曲線をひいていくと,山のような形になりますね。分布とはこのような曲線の形状を関数で表現し,数学的に利用するための道具になります。この曲線の形状を正規化したものが,第4回で紹介されている確率密度関数になります。

ここで例として使った「成人男性の身長」の分布ですが非常に多くの人数の身長を測定すると,理論編で説明のあった正規分布になるといわれています。これは裏を返せば,その平均と標準偏差を持つ正規分布に従うデータを用意することができるなら,身長の疑似データが作れるということですね。そこで今回は,Numpyのrandom.normal()関数を利用して乱数を生成し,身長の疑似データとしてヒストグラムを生成してみました。この関数は第一引数に平均を,第二引数に標準偏差を与えることで,それにしたがった乱数を生成することができます。生成した乱数を利用してヒストグラムを描画するコードは次のようになります。

リスト1 ヒストグラムを描画する(histgram.py)

# -*- coding:utf-8 -*-
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import numpy as np

# 身長の疑似データを生成
sample = 1000
mu, sigma = 170, 5
data = np.random.normal(mu, sigma, sample)

# ヒストグラムの描画
n, bins, patches = plt.hist(data, normed=1, alpha=0.75, align='mid')
y = mlab.normpdf(bins, mu, sigma)
l = plt.plot(bins, y, 'r-', linewidth=1)

plt.title(r'$\mathrm{Histgram\ of\ Height:}\ \mu=%d,\ \sigma=%d$' % (mu, sigma))
plt.xlabel('Height')
plt.ylabel('Probability')
plt.grid(True)

plt.show()

様々な分布

冒頭でも紹介しましたが,分布にはたくさんの種類があります。分布の種類は大きく分けると,「離散型確率分布」「連続型確率分布」の2種類に分類することができます。さらに,離散型確率分布には二項分布,ポアソン分布,ベルヌーイ分布,多項分布などが,連続型確率分布にはガンマ分布,ベータ分布,t分布,F分布,ディリクレ分布などが含まれています。

離散型確率分布と連続型確率分布の違いについては既に説明しているので詳細な説明は省略しますが,分布の説明をするためにもここで簡単に復習しましょう。

離散した数値から成るデータでは,それぞれの数値についての確率を計算することができます。例えば,サイコロで6の目の出る回数や,ある特定の期間に機械が故障する回数,車の台数などですね。このようにデータが離散しているときには,データは特定の値しか取ることはありません。確率変数が離散値になるような分布を「離散型確率分布」といいます。

しかし,身長や時間などのいくらでも細かく測れるようなデータは特定の値を取ることは実際には0に近いですよね。このような確率変数が連続量となるような確率分布を「連続型確率分布」といいます。

離散型確率分布連続型確率分布
二項分布,
ポアソン分布,
ベルヌーイ分布,
多項分布,
幾何分布,
負の二項分布,
超幾何分布,
...
ガンマ分布,
ベータ分布,
t分布,
F分布,
ディリクレ分布,
指数分布,
カイ二乗分布,
...

ここで列挙したものは代表的な分布で,実際にはここでは紹介しきれないくらいに様々な分布があります。それぞれの分布について説明すると,それだけで本が1冊書けるくらいの分量になってしまいます。そこで今回は,離散型確率分布の中から3つの分布を紹介します。

著者プロフィール

恩田伊織(おんだいおり)

1979年生まれの埼玉県出身。数学と関数型言語,SFとボードゲーム好きなプログラマー。好きな言語はRubyとLISP。現在は航空管制の基盤開発に従事している。

Twitter:http://twitter.com/Iori_o

コメント

コメントの記入