22
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

尤度と確率は何が違うのか?ダミーデータで直感的に理解する

22
Posted at

統計や機械学習を学び始めると、「尤度(likelihood)」と「確率(probability)」が似たように見えて混乱しがちです。
実際、数式の形はかなり似ています。

でも、見ている向きは逆です。

確率は「パラメータを固定して、どんなデータが出るか」を見る
尤度は「データを固定して、どんなパラメータがもっともらしいか」を見る

この記事では、コイン投げのダミーデータを使ってこの違いを直感的に整理します。
コードは Google Colab でそのまま実行できます。

まずは用語から

この記事では次の3つが重要です。

  • データ: 実際に観測した結果
  • モデル: データが生まれる仕組みを数式で表したもの
  • パラメータ: モデルの性質を決める値

今回の例では、次のように考えます。

  • コインを1回投げて、表なら 1、裏なら 0 とする
  • コインが表を出す確率を p とする
  • コインを20回投げた結果を観測する

このとき pパラメータ、20回の結果がデータです。

今回の結論を先に1枚で

観点 固定するもの 動かすもの 知りたいこと
確率 パラメータ p データ どんな結果がどれくらい起きるか
尤度 データ パラメータ p どの p が観測結果をもっともよく説明するか

「同じ式でも、どちらを固定してどちらを動かしているか」が違いの本質です。

ダミーデータを用意する

今回は乱数ではなく、再現性のある固定のダミーデータを使います。
1 が表、0 が裏です。

import numpy as np
import matplotlib.pyplot as plt
from math import comb

# 1 = 表, 0 = 裏
dummy_data = np.array([1, 0, 1, 1, 1, 0, 1, 1, 0, 1,
                       1, 1, 0, 1, 0, 0, 1, 1, 1, 1])

n = len(dummy_data)
k_obs = int(dummy_data.sum())

print(f"試行回数 n = {n}")
print(f"表の回数 k = {k_obs}")
print(f"裏の回数 n-k = {n-k_obs}")
print("dummy_data =", dummy_data.tolist())

実行すると、今回のダミーデータは20回中14回が表です。

試行回数 n = 20
表の回数 k = 14
裏の回数 n-k = 6

確率の視点: p を固定して、どんな結果が出るかを見る

まずは「このコインは表が 70% で出る」と仮定してみます。
つまり p = 0.7 を固定します。

このとき、20回投げたときに表が k 回出る確率は二項分布で

$$
P(K = k \mid p) = \binom{n}{k} p^k (1-p)^{n-k}
$$

で表せます。

ここで重要なのは、p を固定して、k のほうを動かしていることです。
つまり「どんなデータがどれくらい起こりやすいか」を見ています。

p_fixed = 0.7
k_values = np.arange(n + 1)

probabilities = np.array([
    comb(n, k) * (p_fixed ** k) * ((1 - p_fixed) ** (n - k))
    for k in k_values
])

print(f"P(K={k_obs} | p={p_fixed}) = {probabilities[k_obs]:.4f}")

plt.figure(figsize=(8, 4.5))
plt.bar(k_values, probabilities)
plt.axvline(k_obs, linestyle="--", label=f"observed k={k_obs}")
plt.xlabel("Number of heads (k)")
plt.ylabel("Probability")
plt.title(f"Probability distribution when p={p_fixed} and n={n}")
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("figure1_probability.png", dpi=150, bbox_inches="tight")
plt.show()

figure1_probability.png

この図では、p=0.7 というコインを20回投げたとき、表の回数 k が何回くらいになりやすいかを見ています。
山の中心が 14 前後に来ているので、p=0.7 なら「20回中14回表」はかなり自然な結果だと分かります。

今回のダミーデータである k=14 の確率は、およそ 0.1916 です。

尤度の視点: データを固定して、どの p がもっともらしいかを見る

次は視点を逆にします。

今度はデータのほうを固定します。
つまり「20回投げて14回表だった」という観測結果はもう手元にある、と考えます。

そのうえで、

  • p = 0.3 のコインだったら、この結果はどれくらい自然か?
  • p = 0.5 のコインだったらどうか?
  • p = 0.7 のコインだったらどうか?

を比べます。

この「観測したデータに対して、各 p がどれくらいもっともらしいか」を表すのが尤度です。

観測値 K=14 を固定すると、尤度は

$$
L(p \mid K=14) \propto p^{14}(1-p)^6
$$

の形になります。

p に依存しない $\binom{20}{14}$ は、「どの p がよりもっともらしいか」を比べるだけなら省略できます。

p_grid = np.linspace(0.001, 0.999, 500)

likelihood = np.array([
    comb(n, k_obs) * (p ** k_obs) * ((1 - p) ** (n - k_obs))
    for p in p_grid
])

# 見やすさのため、最大値が 1 になるように正規化
relative_likelihood = likelihood / likelihood.max()

p_hat = k_obs / n
print(f"最尤推定値 p_hat = {p_hat:.2f}")

plt.figure(figsize=(8, 4.5))
plt.plot(p_grid, relative_likelihood, linewidth=2)
plt.axvline(p_hat, linestyle="--", label=f"MLE p̂={p_hat:.2f}")
plt.xlabel("p")
plt.ylabel("Relative likelihood")
plt.title(f"Likelihood of p after observing {k_obs} heads out of {n} tosses")
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("figure2_likelihood.png", dpi=150, bbox_inches="tight")
plt.show()

figure2_likelihood.png

この図では、データは固定で、p のほうを動かしています。
山の頂点が p=0.70 付近にあるので、今回の観測結果 14/20 を最もよく説明するのは p=0.70 付近だと分かります。

これが最尤推定です。
今回の例では

$$
\hat{p} = \frac{14}{20} = 0.7
$$

となります。

「同じ式っぽい」のに、なぜ意味が違うのか

ここがいちばん混乱しやすいところです。

確率も尤度も、見た目はほとんど同じ式を使います。

$$
\binom{n}{k} p^k (1-p)^{n-k}
$$

でも、意味は次のように違います。

  • 確率: p を固定して、k がどう動くかを見る
  • 尤度: k を固定して、p がどう動くかを見る

つまり、数式が同じでも、何を変数として見ているかが違うのです。

尤度は「パラメータの確率」ではない

初心者がつまずきやすいのがここです。

p=0.7 の尤度が高いからといって、それは

  • p=0.7 である確率が高い」

という意味ではありません。

尤度は、あくまで観測データに照らしたときの “もっともらしさのスコア” です。

確率分布なら、データ側について全部足すと 1 になります。
でも尤度は、p について足したり積分したりしても 1 になる必要はありません。

尤度は「確率そのもの」ではなく、
観測済みデータに対して、各パラメータを比較するためのものさしです。

ここを押さえると、尤度と確率をかなり区別しやすくなります。

この記事の例で一言で言うと

今回のダミーデータは「20回中14回表」でした。

  • 確率の話では
    p=0.7 のコインを使うと、k=14 回表が出る確率はどれくらいか?
    を考えます。

  • 尤度の話では
    k=14 回表という結果が得られたとき、どの p がもっともらしいか?
    を考えます。

同じ現象を見ていても、問いの向きが逆なのです。

まとめ

  • 確率は、パラメータを固定してデータの起こりやすさを見る
  • 尤度は、データを固定してパラメータのもっともらしさを見る
  • 数式が似ていても、何を固定して何を動かすかが違う
  • 尤度は確率ではなく、パラメータ比較のためのスコア
  • 尤度が最大になるパラメータを選ぶのが最尤推定

統計や機械学習の本で P(data | parameter) のような式が出てきたら、

  • いま固定しているのはどちらか?
  • いま比べたいのはどちらか?

を見ると、確率なのか尤度なのかを見分けやすくなります。

おわりに

今回はコイン投げで説明しましたが、正規分布や回帰モデルでも本質は同じです。
「データを生成する向き」で見るのが確率、
「観測データからパラメータを逆向きに評価する」のが尤度です。

この違いが腑に落ちると、最尤推定、交差エントロピー、ベイズ推定あたりもかなり読みやすくなります。

22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?