スキップしてメイン コンテンツに移動

Bayes' theorem

Introduction
sorry, this page is Japanese only. 
今回はベイズの定理について書こうと思います。
ベイズの定理とは、イギリスのトーマス・ベイズによって発見された、条件付き確率に関する定理です。現在のベイズ推定で用いられる重要な定理です。どのような定理かを解説していこうと思います。

ベイズの定理
ベイズの定理とは

  • 確率P(B|A):事象Aが起こった後での事象Bの確率(事後確率)
  • 確率P(B):事象Aが起こる前の事象Bの確率(事前確率)
とするとき以下が成り立つことを示しています。

$$P(B|A) = \frac{P(A|B) P(B)}{P(A)}$$


例えば、次のように事象A、事象Bwo定義します。

  • 事象A:あるYoutuberが動画を投稿したとき、再生回数が100万回を超える
  • 事象B:あるYoutuberがお金を50万円以上使う動画を投稿する


この時確率P(A|B)、つまり50万円以上を使った動画が再生回数100万回を超える確率は、youtube内の50万円以上使っている動画を根こそぎ集め、その再生回数を得ることによって推定できそうです。では確率P(A|B)がわかった時、確率P(B|A)もわかる。これがベイズの定理の強みです。(当然確率P(A)とP(B)がわかっている必要はあります。)

確率P(B|A)とはあるYoutuberの動画が再生回数100万回を超えたとき、その同がで50万円以上使っている確率となります。これがわかれば、100万回動画が再生される原因は本当に50万円以上お金を使うことなのかがわかります。

確率P(A|B)が低い時を考えてみましょう。
つまり、50万円以上使った動画は再生回数100万回を超える確率は高い。しかし、100万回再生回数を突破したとき、その動画が50万円以上使っている可能性は低い。この状況はベイズの定理の式を考えいると理解しやすいです。

ベイズの定理の式を見てみると、P(B|A)は低く、P(A|B)が高いということは、確率P(A)が著しく高い。もしくは、P(B)が著しく低い。この二つがあげられます。

つまり、あるYouruberが100万回再生を突破する確率がかなり、高い。もしくは、あるYoutuberが50万円以上使う動画を投稿すr確率がかなり、低い。このどちらかが考えられます。P(A)が高いとき、そのYouruberが単に大人気なのであって、動画の再生回数が100万回を超える原因が50万円以上お金を使ったことにあるとは限りません。また、P(B)が低いとき、つまり、50万円以上お金を使った動画が少ないときは、たまたま、100万円を超えただけで、本当の原因が50万円以上使ったことにあるとは限りません。

このようにベイズの定理では、結果から原因を推定する力があります。

式の導出
最後にベイズの定理の式を導出しようと思います。まず条件付き確率の式を確認します。ある事象Bが起こった時、事象Aが起こっている確率(条件付き確率)は
$$P(A|B) = \frac{P(A,B)}{P(B)}$$
ただし、P(A,B)はAとBの同時確率を表します。
この式をベイズの定理の式の右辺に代入します。
$$\frac{P(A|B)P(B)}{P(A)} = \frac{\frac{(P(A,B)}{P(B)} P(B)}{P(A)} = P(B|A)$$

References
https://ja.wikipedia.org/wiki/ベイズの定理





コメント

このブログの人気の投稿

K-means 理論編

Introduction English ver 今日はK-meansアルゴリズムの理論について書きます。 K-meansアルゴリズムはクラスタリングのためのアルゴリズムです。 K-meansの実装の記事は カーネルK-meansの実装 を御覧ください。 この記事はカーネルK-menasの実装についての記事ですが、通常のK-meansの実装も行っています。カーネルK-meansについてはまた、今度別の記事で紹介したいと思います。 概要 1 of K 符号化法 プロトタイプ 歪み尺度 最適化 1 of K 符号化法 K-meansはK個のクラスについて分類することを考えます。 K-meansでは $x_n$がkのクラスに属していることを次のように表します。 ベクトル$r_n:1 \times K$ を $$r_n := (0,0,..,1,..,0)$$ このベクトルはk番目にのみ1を持ち、それ以外は0を要素に持つようなベクトルです。 こののような表現の仕方を1 of K符号化法と呼びます。 プロトタイプ K-meansではプロトタイプと呼ばれるベクトルを選びます。このベクトルは各クラスに一つあり、そのクラスの代表のようなベクトルです。 K-means ではそのようなベクトルは各クラスの平均ベクトルとなります。これは目的関数から自然と導かれます。 歪み尺度 プロトタイプベクトルを $\mu_i ~\forall k \in K$とします。 この時、k-meansの目的関数は次のようになります。 $$J = \sum_{n=1}^{N} \sum_{k=1}^{K} r_{nk} ||x_n-\mu_k||^2$$ ここで、 $r_{nk}$ は$r_n$のk番目の要素です。 この目的関数について少し説明をします。$r_{n}$は$x_n$が属しているクラスのラベルの場所だけ1で他は0であるので、 $$J = \sum_{n=1}^{N} ||x_n - \mu_{x_n}||$$ ここで、$\mu_{k_n}$は$x_n$が属しているクラスのプロトタイプです。 よって、 $$J = ||x_1 - \mu_{x_1}|| + ||x_2 -\mu_{x_2}|| + ...

ダイクストラ法

Introduction English ver 今日は、ダイクストラ法について書きます。ダイクストラ法とは最短距離を求めるアルゴリズムです。地図はグラフで表されます。もし、まだ this page を見ていない方は先にこちらをご覧ください。今回はこの記事を前提としています。このページでは、グラフの定義と、ヒープ構造について書いています。ダイクストラ法ではヒープ構造を使って、かなりの計算量を落とします。 この スライド はダイクストラ法を説明したスライドです。 Overview アルゴリズム 実装 アルゴリズム このアルゴリズムは スタート始点のノードを決める。そして、それをAと名付ける。 各ノードに$d=\infty$を割り当てる。ただし、スタート地点はd=0 Aの隣接ノードのリストをadj_listと名付ける。  For adj in adj_list:  If d of adj > d of A + weight to adj -> d = A + weight to adj. グラフnetworkからAを取り除く グラフnetworkの中で最初のdを持っているノードをAとし、4に戻る。 となっています。 このアルゴリズムを図を用いて説明します。  このグラフを使って説明します。  初めに、スタート地点を決めます。そして、各ノードに$d=\infty$を割り当てます。  Aから始まります。Aの隣接ノードであるBのdを更新します。もし、現在のBよりもAのdとA->Bへの重みを足したもののほうが小さいならdをその値に更新します。同じようにCnのdを更新します。 次にAを取り除きます。  次はBから始まります。Aと同じことをやります。 このダイクストラ法では今のような操作をグラフの全てのノードに×がつくまで続きます。 実装 このアルゴリズムでは$O(log(|V|^2))$という計算量を持っています。最小のdを持つノードを探すのに時間がかかります。 しかし、ヒープ構造を使えばO((E+V)log(V))に減らせます。ヒープ構造で現時点での...

カーネルK-means 理論編

Introduction English ver 今日は、カーネルK-meansの理論について書きます。カーネルK-meansは通常のK-meansの欠点を補うことができます。通常のK-meansの欠点とカーネルK-meansの強みも説明します。もし、まだ御覧になられていなければ、通常の K-means 理論編 の記事を見ていただけるとよいのではないかと思います。 カーネルK-meansの実装編 も併せてご覧ください。 概要 K-meansの弱点 カーネルトリック カーネルK-means アルゴリズム K-meansの弱点 例えば、次のようなデータを用意します。 このデータはK-meansによってうまく分類することはできません。なぜなら通常のK-meansでは、データとプロトタイプのユークリッド距離に依存しているからです。そのため、このような円状に分布しているデータはうまく分類することができません。 プロトタイプとはそれぞれのクラスにあり、そのクラスを代表するようなもののことです。K-meansでは各クラスの平均ベクトルとなります。それゆえ、以下のような分類になってしまいます。 このようなデータではK-meansはうまくいきません。 K-meansで分類できるデータセットは次のように各クラスで固まっている必要があります。 カーネルK-meansはK-meansの弱点を補います。 カーネルトリック 初めに、カーネルトリックを説明します。 線形分離できないようなデータ$X$を例えば次のように線形分離できるように$\phi(x)$に送る写像$\phi$を考えます。 カーネルは次のように定義されます。 $$K(x,y) = \phi(x)^T \phi(y)$$ $\phi$を具体的に計算することは難しいですが、$K(x,y)$を計算することなら簡単です。 この手法をカーネルトリックと呼ばれます。 カーネルK means K-meansの目的関数を復習しておきます。 $$J = \sum_{n=1}^{N} \sum_{k=1}^{K} r_{nk} ||x_n-\mu_k||^2$$ ここで、 プロトタイプは$\mu_i ~\forall k \in K$としま...