本文へスキップ
ひもとくAI

確率分布:二項分布・正規分布・中心極限定理と、共分散

レッスン 2/6

確率分布:どの値が、どれくらいの確率で出るか

確率変数の「それぞれの値が出る確率」をまとめたものを、確率分布 と呼びます。前のレッスンのサイコロの表(1〜6がどれも 16\frac{1}{6})も、確率分布の1つです。

世の中の偶然には、よく出てくる「型」があります。型ごとに名前が付いていて、機械学習でもよく使います。

ベルヌーイ分布:1回だけの「当たりか、はずれか」

硬貨を1回投げて、表なら1、裏なら0とします。表の確率を pp とすると、次のようになります。

値 xx1(表)0(裏)
確率 P(X=x)P(X = x)pp1−p1 - p

結果が「1か0か」の2通りしかない確率分布を、ベルヌーイ分布 と呼びます。期待値は 1×p+0×(1−p)=p1 \times p + 0 \times (1 - p) = p です。

第5章のロジスティック回帰は、「このメールが迷惑メールである確率は0.8」のように、ベルヌーイ分布の pp を予測するモデル だと見ることができます。

ベルヌーイ分布を、結果が3通り以上ある場合(サイコロの目、手書き数字の0〜9など)に広げたものを、カテゴリ分布(マルチヌーイ分布)と呼びます。第7章のCNNがソフトマックス関数で出した「10クラスそれぞれの確率」は、カテゴリ分布を予測していたことになります。

二項分布:当たりか、はずれかを nn 回繰り返したときの、当たりの回数

表の確率が0.5の硬貨を10回投げて、表が何回出るかを数えます。表が kk 回出る確率は、次の式で計算できます。

P(X=k)=10Ck×0.5k×0.510−kP(X = k) = {}_{10}\mathrm{C}_{k} \times 0.5^{k} \times 0.5^{10 - k}

10Ck{}_{10}\mathrm{C}_{k} は、「10回のうち、表になる kk 回を選ぶ選び方の数」です。例えば、10回中5回が表になる並び方は252通りあり、1つの並び方が起こる確率はどれも 0.510=110240.5^{10} = \frac{1}{1024} なので、P(X=5)=2521024≈0.246P(X = 5) = \frac{252}{1024} \approx 0.246 です。

表の回数0.00100.0110.04420.11730.20540.24650.20560.11770.04480.0190.00110
硬貨を10回投げたときの、表の回数ごとの確率(式で計算)。5回が0.246で最も高く、4回と6回が0.205、3回と7回が0.117と、5回から離れるほど低くなる。0回と10回は0.001

Pythonで「硬貨を10回投げる」を1万回繰り返し、式と比べました。

表の回数34567
式で計算した確率0.1170.2050.2460.2050.117
1万回の実験での割合0.1200.2010.2450.2080.115

式とシミュレーションが、ほぼ一致しました。1回の当たりの確率が pp で、nn 回繰り返したときの当たりの回数の分布を 二項分布 と呼びます。期待値は npnp(この例では 10×0.5=510 \times 0.5 = 5)、分散は np(1−p)np(1 - p)(この例では2.5)です。実験では、平均4.998、分散2.509でした。

正規分布と、中心極限定理

正規分布:平均の近くが多く、離れるほど少ない、つりがね型

身長のように、細かい値をとる数では、「ちょうど170.000…cmになる確率」を考えても意味がありません。代わりに、「どのあたりの値が出やすいか」を曲線で表します。曲線が高いところほど、その近くの値が出やすいことを表し、曲線の下の面積が、その範囲の値が出る確率になります(全体の面積は1)。

平均の近くが一番出やすく、左右対称に、離れるほど出にくくなる、つりがね型の分布を 正規分布 と呼びます(ガウス分布とも呼びます)。正規分布の形は、平均 と 標準偏差 の2つの数だけで決まります。

身長(cm)出やすさ15215816417017618218800.050.1
  • 平均170・標準偏差6
  • 平均170・標準偏差3
平均170の正規分布を2つ重ねた図。標準偏差6の曲線は、152〜188cmあたりまで広がる、なだらかなつりがね型。標準偏差3の曲線は、161〜179cmあたりに集まった、幅が半分で高さが2倍の、とがったつりがね型。どちらも170cmで一番高い

標準偏差が小さいほど、値が平均の近くに集まり、曲線は細く高くなります(面積はどちらも1)。

「平均 ± 標準偏差の何倍」に入る割合は、いつも同じ

平均170、標準偏差6の正規分布に従う数を、Pythonで1万個作って数えました。

範囲平均 ± 標準偏差(164〜176)平均 ± 標準偏差の2倍(158〜182)平均 ± 標準偏差の3倍(152〜188)
入った割合0.6820.9540.998

正規分布なら、平均と標準偏差がどんな値でも、この割合は約68%・95%・99.7%になります。「平均から標準偏差の3倍以上離れた値」はめったに出ないので、データの中の異常な値を見つける目安にも使われます。

中心極限定理:平均をとると、正規分布に近づく

サイコロの目は1〜6が同じ確率で出るので、つりがね型ではありません。ところが、サイコロを何個か振って、その目の平均をとる と、その平均の分布は正規分布に近づいていきます。Pythonで1万回ずつ試し、平均のばらつき(標準偏差)を測りました。

一度に振るサイコロの数1個2個5個30個
目の平均の標準偏差1.701.200.7610.311
1.708÷個数1.708 \div \sqrt{\text{個数}}1.7081.2080.7640.312

平均をとる数を増やすほど、平均は3.5の近くに集まり(ばらつきは 1個数\frac{1}{\sqrt{\text{個数}}} 倍に小さくなる)、分布の形はつりがね型に近づきます。これを 中心極限定理 と呼びます。

多くの小さな偶然が足し合わさってできる数(身長、測定の誤差など)が正規分布に近くなるのは、このためです。第4章の線形回帰で「誤差」と呼んだものも、多くの場合、正規分布だと考えます(レッスン4で使います)。

共分散と相関、Pythonで確かめる、振り返り

共分散:2つの数が、一緒に増えるか

身長と体重のように、2つの数の関係を調べたいことがあります。身長が平均より高い人は、体重も平均より重いことが多いでしょう。これを数で表すのが 共分散 です。

1人ずつ「身長 − 身長の平均」と「体重 − 体重の平均」を掛け、その平均をとります。

  • 両方とも平均より大きい(プラス × プラス)、または両方とも小さい(マイナス × マイナス)人が多いと、プラス になる
  • 片方が大きいともう片方が小さい人が多いと、マイナス になる
  • 関係がなければ、プラスとマイナスが打ち消し合って 0に近く なる

Pythonで作った身長と体重のデータ(200人)では、共分散は38.5でした。一方、身長と、身長とは別々に作った靴のサイズの共分散は0.49で、0に近い値でした。

相関係数:単位に左右されない「関係の強さ」

共分散には、単位によって値が変わる弱点があります(身長をcmからmに変えると、共分散は100分の1になります)。そこで、共分散を、2つの数の標準偏差で割ったものを使います。これを 相関係数 と呼び、必ず −1-1 から 11 の間になります。

  • 1に近い: 一方が増えると、もう一方もほぼ直線的に増える
  • −1-1 に近い: 一方が増えると、もう一方はほぼ直線的に減る
  • 0に近い: 直線的な関係はない

身長と体重の相関係数は0.746でした。第3章の散布図でいえば、点が右上がりの帯のように並んでいる状態です。

ただし、相関があっても、一方が他方の原因とは限りません(第9章の、アイスの売り上げと水難事故の例)。

Pythonで確かめる

import numpy as np
from math import comb

rng = np.random.default_rng(0)
heads = rng.binomial(10, 0.5, 10000)    # 表の確率0.5の硬貨を10回投げる、を1万回
print((heads == 5).mean())              # → 0.2453(表が5回だった割合)
print(comb(10, 5) * 0.5 ** 10)          # → 0.24609…(式で計算した確率)

x = rng.normal(170, 6, 10000)           # 平均170、標準偏差6の正規分布から1万個
print(x.mean(), x.std())                # → 約170と約6

# height, weight: 身長と体重の配列(200人分)
print(np.cov(height, weight, ddof=0))       # 共分散の表(右上・左下が共分散)
print(np.corrcoef(height, weight)[0, 1])    # 相関係数

comb(10, 5) は、10個から5個を選ぶ選び方の数(252)です。np.cov は、「身長どうし(分散)・身長と体重(共分散)・体重どうし(分散)」をまとめた2行2列の表を返します。ddof=0 は、第3章と同じく、人数で割ることを指定します。

よくある誤解

  • 「データは、いつも正規分布になる」: 年収のように、少数の人がとても大きな値をとるデータは、左右対称になりません。分布の形は、値の範囲ごとに個数を数えた棒グラフ(ヒストグラム、Matplotlib の plt.hist)を描いて確かめます
  • 「共分散が大きいほど、関係が強い」: 共分散は単位で値が変わります。関係の強さは、相関係数で比べます
  • 「相関係数が0なら、2つの数は無関係」: 相関係数が表すのは直線的な関係だけです。放物線のような関係があっても、0に近くなることがあります

振り返り

  • ベルヌーイ分布は1回の「当たりか、はずれか」、二項分布は nn 回繰り返したときの当たりの回数の分布
  • 正規分布は、平均と標準偏差で決まるつりがね型。平均 ± 標準偏差の1・2・3倍に、約68%・95%・99.7%が入る
  • 中心極限定理: 多くの偶然の平均は、正規分布に近づく
  • 共分散と相関係数は、2つの数が一緒に増えるかを表す。相関は、原因を意味しない

演習

演習を読み込んでいます…