common.title
Cloud support

Nobisuke

Dekisugi

RAG


autoQAOA
RAG for dev
Fortune telling app
Annealing

Community

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

ベイズ推定を簡単に勉強してみる(よくわかりませんでしたが、、、)

Yuichiro Minato

2024/09/27 12:16

今回もほとんどChatGPT先生に聞きますが、前回はベイズの定理を学びました。
聞いたことはあっても計算はしたことなかったのですが、バラバラに丁寧に確率を求めて掛け算したりしたら
それっぽくなりました。

おじさんが頑張ってベイズの定理を学ぶ
https://blueqat.com/yuichiro_minato2/1204f7ab-e751-412c-906a-51889981909a

今回学ぶベイズ推定とは、観測データと事前知識(事前分布)を組み合わせて、確率的に不確実なパラメータを推定するための手法です。これはベイズの定理に基づいており、観測されたデータに基づいてパラメータの事後分布を更新します。頻度主義的な統計手法とは異なり、ベイズ推定ではパラメータを固定値と見なすのではなく、確率分布で表現し、データによってその分布を更新することが特徴です。

ベイズ推定の基本構造

ベイズ推定では、次のようにベイズの定理を用いてパラメータの事後分布を求めます:

P(\theta | X) = \frac{P(X | \theta) P(\theta)}{P(X)}

ここで:

  • P(\theta | X): 事後確率、観測データ X を基にしたパラメータ \theta の確率分布
  • P(X | \theta): 尤度、パラメータ \theta が与えられたときにデータ X が得られる確率
  • P(\theta): 事前確率、パラメータ \theta に対する事前の確率分布
  • P(X): 周辺尤度、データ X 全体の確率

この式を使うことで、観測データによって事前分布 P(\theta) を更新し、事後分布 P(\theta | X) を得ることができます。

いきなりパラメータとか出てきて意味がわかりませんが、進めたいと思います。

ベイズ推定の流れ

  1. 事前分布の設定
    ベイズ推定では、推定対象となるパラメータ \theta に対する事前の知識を確率分布として表します。これが事前分布です。事前知識がない場合、均等な確率(例: 一様分布)を選ぶことが一般的です。

  2. 尤度関数の設定
    次に、観測データ X を基にパラメータ \theta をどのように推定するか、データ生成過程をモデル化します。このモデルは尤度関数として表現されます。例えば、データが正規分布に従う場合は、正規分布の確率密度関数を用います。

  3. 事後分布の計算
    観測データが得られた後、ベイズの定理を使って事後分布を計算します。事後分布は、データから得られる情報と事前知識を組み合わせた、最も信頼性の高いパラメータ分布です。

  4. パラメータ推定
    事後分布から、平均値や最頻値(モード)を計算してパラメータを推定します。場合によっては、分布の不確実性を考慮して信頼区間を導出することもあります。

ベイズ推定の特徴

  • 事前知識の活用:ベイズ推定は、データが少ない場合でも事前知識をモデルに組み込むことができ、特に過去のデータや経験に基づいた推定が重要な場合に有用です。

  • 不確実性の考慮:パラメータを単一の値ではなく、確率分布として扱うため、推定結果の不確実性や変動を評価できます。

  • モデルの更新が可能:新しいデータが得られるたびに、ベイズ推定では事後分布を次の事前分布として更新し、継続的にモデルを改良できます。

簡単な例:コインの表が出る確率の推定

コインの表が出る確率をベイズ推定で算出する例題をいろいろ探してみましたが、思ったよりも難しそうでした。ベイズ推定では事前分布を仮定しておくようで、その辺りがよくわかりませんでしたが、例題を無理やりやってみようと思います。

コイン投げの例を用いて、どのようにベイズ推定が行われるか、具体的に詳しく説明してもらいます(ChatGPTに)。

1. 問題設定

コインを投げたときに表が出る確率を \theta とします。例えば、コインを10回投げて7回表が出たとします。このとき、表が出る確率 \theta をベイズ推定によって求めたいとします。

  • n = 10: コインを投げた回数
  • k = 7: 表が出た回数

この状況で、コインが表を出す確率 \theta をベイズ推定でどのように推定するか、以下の手順に従って説明します。

2. ベイズ推定の流れ

1. 事前分布の設定

ベイズ推定では、まず \theta に対して事前分布を設定します。事前分布とは、データを観測する前に持っている \theta に関する知識を表す確率分布です。

コインの表が出る確率 \theta について特に事前の情報がないと仮定すると、\theta0 から 1 の間で均等に分布していると考えることができます。この場合、事前分布として一様分布を使います。一様分布は、\theta の全ての値が等しくあり得ると仮定するもので、以下のように書けます:

P(\theta) = 1 \quad (\theta \in [0, 1])

一様分布は、特に情報がない場合に使われる典型的な事前分布です。

事前分布としては、ベータ分布(Beta(\alpha, \beta))を使うのが一般的です。一様分布はベータ分布 Beta(1, 1) に相当します。

ベイズ推定において、事前分布にベータ分布を使い、尤度関数に二項分布を使う理由は、主に次の2つのポイントに集約されます。

ベータ分布と二項分布が共役関係にある

ベイズ推定では、事前分布と尤度関数の組み合わせを選ぶ際に、計算の容易さを考慮して共役分布を使うことが一般的です。共役分布とは、事前分布と尤度関数が特定の関係にあるとき、事後分布も同じ種類の分布になるという特性を持つ分布です。

  • ベータ分布は、二項分布に対して共役事前分布です。つまり、二項分布を尤度関数に使用し、事前分布をベータ分布とすると、事後分布もベータ分布の形を維持します。

この共役関係のおかげで、計算がシンプルになります。具体的には、事後分布の形がベータ分布のままであるため、パラメータ更新が簡単になります。事後分布のパラメータも単純な和で更新されます。

例: ベータ分布と二項分布の共役関係
  • 事前分布: ベータ分布 Beta(\alpha, \beta)

    P(\theta) = \theta^{\alpha - 1} (1 - \theta)^{\beta - 1}
  • 尤度関数: 二項分布(観測データが n 回の試行で k 回成功した場合)

    P(k | \theta) = \binom{n}{k} \theta^k (1 - \theta)^{n - k}
  • 事後分布: ベイズの定理を適用すると、事後分布もベータ分布の形を維持します。

    P(\theta | k) = Beta(\alpha + k, \beta + n - k)

このように、共役事前分布を使うと、事後分布の形がベータ分布のままで計算が容易になります。

二項分布とベータ分布の用途の違い
二項分布の役割: 尤度関数

二項分布は、離散的なデータ(成功・失敗など)に対する観測モデルを表します。つまり、観測データに基づいて、あるパラメータ(この場合、表が出る確率 \theta)のもとで成功回数がどれくらいの確率で得られるかをモデル化します。コイントスのような成功・失敗を扱う試行に対して自然に適用できるため、尤度関数として二項分布が使われます。

  • 二項分布は、n 回の試行に対して k 回成功する確率を与えます。
    • P(k | \theta) は、「表が k 回出た」というデータの尤度(そのデータがどれくらい起こりやすいか)を表します。
ベータ分布の役割: 事前分布

ベータ分布は、連続的なパラメータ(成功確率 \theta)の不確実性を表現するのに適した分布です。コイントスの成功確率 \theta0 から 1 の連続値を取り得るため、そのような範囲を持つ分布が必要です。ベータ分布はこの範囲を表現するのに適しており、形状を柔軟に調整できるため、さまざまな事前情報に対応できます。

  • ベータ分布は、確率 \theta がどの値をとるかに関する事前の不確実性をモデル化します。
    • 例えば、ベータ分布 Beta(1, 1) は、一様分布で「事前に何の情報もない」という仮定に基づきますが、過去のデータに応じて、事前分布の形状を調整することも可能です。
ベイズ推定の流れにおける役割分担

ベイズ推定では、観測データを用いてパラメータの事前分布を更新し、事後分布を求めます。この流れの中で、二項分布とベータ分布がそれぞれ異なる役割を果たしています。

  • 事前分布(ベータ分布): パラメータ \theta に対する事前の信念を表現します。
  • 尤度関数(二項分布): 観測データに基づき、特定のパラメータ \theta のもとでデータが得られる確率を表します。
  • 事後分布(ベータ分布): 観測データを反映して更新された \theta の分布です。

2. 尤度関数の設定

次に、データ(表が出た回数)に基づいて尤度関数を設定します。ここでは、コイン投げの成功(表が出る)が二項分布に従うと仮定します。尤度関数は、コインを10回投げて7回表が出る確率を、コインが表を出す確率 \theta を使って表します。

コイン投げが二項分布に従うことを仮定すると、成功回数 k(表が出る回数)が以下の式で表されます。

P(k | \theta) = \binom{n}{k} \theta^k (1 - \theta)^{n - k}

ここで:

  • n = 10: コインを投げた回数
  • k = 7: 表が出た回数
  • \theta: 表が出る確率

この式が尤度関数であり、データが観測されたときにどれくらいの確率でそのデータが得られるかを表しています。

3. 事後分布の計算

次に、ベイズの定理を使って事後分布を計算します。ベイズの定理は以下のように表されます:

P(\theta | k) = \frac{P(k | \theta) P(\theta)}{P(k)}

ここで:

  • P(\theta | k): 事後分布(観測データ k を基にした \theta の分布)
  • P(k | \theta): 尤度関数
  • P(\theta): 事前分布
  • P(k): 観測データ k が得られる全体の確率(周辺尤度)

事前分布 P(\theta)Beta(1, 1)(一様分布)と仮定しました。尤度関数は上記の二項分布で与えられています。周辺尤度 P(k) は、\theta の全ての値についての積分で計算できますが、通常この部分は定数として扱われます。

事前分布がベータ分布、尤度が二項分布の場合、事後分布はベータ分布の形になります。この場合、事後分布は次のようになります:

P(\theta | k) = Beta(\alpha + k, \beta + n - k)

ここで \alpha = 1, \beta = 1 であり、データに基づいて更新されるので、事後分布は次のようになります:

P(\theta | k) = Beta(1 + 7, 1 + 10 - 7) = Beta(8, 4)

つまり、観測データ(7回の表と3回の裏)を反映して、事後分布は Beta(8, 4) となります。

4. パラメータ推定

最後に、この事後分布から \theta の推定値を求めます。ベータ分布の平均は次の式で計算できます:

E[\theta] = \frac{\alpha}{\alpha + \beta}

これを使って、Beta(8, 4) の平均を計算すると:

E[\theta] = \frac{8}{8 + 4} = \frac{8}{12} = \frac{2}{3} \approx 0.67

つまり、コインを10回投げて7回表が出た場合、ベイズ推定では表が出る確率 \theta の推定値は約0.67となります。


3. ベイズ推定の特徴と利点

  • 事前分布の影響:ベイズ推定では、事前にどのような分布を設定するかによって結果が変わる場合があります。事前知識を反映したい場合には、適切な事前分布を選ぶことが重要です。例えば、過去に似た実験があり、その結果を反映したい場合、そのデータに基づいて事前分布を設定できます。

  • データに応じた更新:ベイズ推定では、観測データが追加されるごとに、事後分布を次の事前分布として利用して推定を更新していくことができます。これにより、データが少ない段階でも推定が可能で、データが増えるにつれて精度が向上します。

  • 不確実性の扱い:ベイズ推定は、パラメータを確率分布で表すため、不確実性を考慮に入れた推定が可能です。観測データが少ない場合には、事後分布が広くなるため、パラメータの不確実性が高いことを反映しています。


このように、ベイズ推定では事前分布、尤度関数、そして観測データを組み合わせて、コインの表が出る確率を確率分布として推定します。

難しいですね。。。
上記の計算では規格化定数を計算しなくてもいいのが楽なのでしょうか。
二項分布とベータ分布を仮定することで、事後分布を出せるのはわかりました。
勉強不足で苦労しそうです。

© 2024, blueqat Inc. All rights reserved