ベイズの定理を理解する
-
21-09-2019 - |
質問
私は単純ベイズ分類器の実装に取り組んでいます。 集合知のプログラミング この主題は、ベイズの定理を次のように説明することで導入されます。
Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)
文書の分類に関連する具体的な例は次のとおりです。
Pr(Category | Document) = Pr(Document | Category) x Pr(Category) / Pr(Document)
誰かがここで使用されている表記法を説明してくれることを期待していましたが、何を意味しますか Pr(A | B)
そして Pr(A)
平均?ある種の関数のように見えますが、パイプは何をするのでしょうか ("|
") とはどういう意味ですか?
解決
- Pr(A | B) = B がすでに起こった場合に A が起こる確率
- Pr(A) = A が起こる確率
ただし、上記は条件付き確率の計算に関するものです。必要なのは、この原則を使用して、以前の確率に基づいて何かがカテゴリに属するかどうかを決定する分類器です。
見る http://en.wikipedia.org/wiki/Naive_Bayes_classifier 完全な例としては
他のヒント
私は、彼らはあなたが基本的にカバー持っていると思います。
Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)
読み:B指定したAの確率はAの確率はあなたがBの確率を測定することができますし、理解しようとする際に通常使用されるB.それの確率で割っB与えられたA倍の確率と同じですBは、他の言葉で、A.信じる以上に私たちをリードしているかどうかを、私たちは本当にA気に、私たちはBがより直接的なので、我々は測定することができるものから始めましょう測定することができます。
私はあなたにコードを書くために、これは簡単になります1つの導出を挙げてみましょう。これはユダヤパールに由来しています。私はこれで少し苦労しますが、私はパールは私たちがコードに理論を回すことができますどのように実現した後、光が私のためになりました。
前オッズます:
O(H) = P(H) / 1 - P(H)
尤度比ます:
L(e|H) = P(e|H) / P(e|¬H)
後部オッズます:
O(H|e) = L(e|H)O(H)
で英語は、私たちは何かのオッズは、あなたが(仮説のためのH)に興味を持っていると言っているだけで、あなたはそれが真実でないことを見つける倍で割っ真であるために何かを見つけた回数です。だから、1家が10,000のうち、毎日奪われていると言います。あなたが他の証拠が考慮されず、奪われての1 /万のチャンスを持っていることを意味します。
次はあなたが見ている証拠を測定しています。あなたの質問は、あなたの質問が真でない場合、あなたが見ている証拠を見ての確率で真の分割されたときに、あなたが見ている証拠を見ての確率は何ですか。あなたの防犯アラームがオフに行く聞いていると言います。 (風がアラームをオフに設定)オフに行くことになっていないとき対(アラームがオンのときに誰かがウィンドウを開きます)オフに行くことになっていたときは、そのアラームを取得するどのくらいの頻度で行います。あなたは、アラームオフ泥棒設定の95%の確率で、アラームをオフに何か他の設定の1%のチャンスがある場合は、95.0の可能性を持っています。
あなたの全体的な信念は、単に可能性*前オッズです。この場合は、次のとおりです。
((0.95/0.01) * ((10**-4)/(1 - (10**-4))))
# => 0.0095009500950095
これはこれ以上明確にしている場合、私は知りませんが、それは、この情報を結合するためにいくつかの前にオッズを追跡コード、尤度を見て、他のコード、およびコードの1つの以上の部分を持っていることが容易になる傾向がありますます。
私はPythonでそれを実装しています。ベイズのためのすべての式は定理は、別々の機能であるため、それは理解することは非常に簡単です。
#Bayes Theorem
def get_outcomes(sample_space, f_name='', e_name=''):
outcomes = 0
for e_k, e_v in sample_space.items():
if f_name=='' or f_name==e_k:
for se_k, se_v in e_v.items():
if e_name!='' and se_k == e_name:
outcomes+=se_v
elif e_name=='':
outcomes+=se_v
return outcomes
def p(sample_space, f_name):
return get_outcomes(sample_space, f_name) / get_outcomes(sample_space, '', '')
def p_inters(sample_space, f_name, e_name):
return get_outcomes(sample_space, f_name, e_name) / get_outcomes(sample_space, '', '')
def p_conditional(sample_space, f_name, e_name):
return p_inters(sample_space, f_name, e_name) / p(sample_space, f_name)
def bayes(sample_space, f, given_e):
sum = 0;
for e_k, e_v in sample_space.items():
sum+=p(sample_space, e_k) * p_conditional(sample_space, e_k, given_e)
return p(sample_space, f) * p_conditional(sample_space, f, given_e) / sum
sample_space = {'UK':{'Boy':10, 'Girl':20},
'FR':{'Boy':10, 'Girl':10},
'CA':{'Boy':10, 'Girl':30}}
print('Probability of being from FR:', p(sample_space, 'FR'))
print('Probability to be French Boy:', p_inters(sample_space, 'FR', 'Boy'))
print('Probability of being a Boy given a person is from FR:', p_conditional(sample_space, 'FR', 'Boy'))
print('Probability to be from France given person is Boy:', bayes(sample_space, 'FR', 'Boy'))
sample_space = {'Grow' :{'Up':160, 'Down':40},
'Slows':{'Up':30, 'Down':70}}
print('Probability economy is growing when stock is Up:', bayes(sample_space, 'Grow', 'Up'))
のPr(A | B):Aの条件付き確率:私たちが知っているすべては、B
であることを考えるとAの、すなわち確率は、PR(A):Aの事前確率
Prは確率、PR(A | B)は条件付き確率である
。パイプ(|)の手段は、 "与えられました"。 A所与Bの確率はA X PR(A)/ PR(B)指定されたBの確率に等しい
私は強くあなたが最初に確率論上のいくつかの学部の本を読む必要があることを助言することができます。これがなければ、あなたはナイーブベイズ分類器であなたのタスクに適切に進めなくなります。
私はあなたにこの本を推薦する http://www.athenasc.com/probbook.html>や MITオープンコースウェアするます。
を見てパイプは条件付き確率を表すために使用されます。 PR(A | B)= A所与Bの確率
例: あなたがよく感じていないと言うと、あなたが症状のためのWebをサーフィンしてみましょう。そして、インターネットは、あなたがこれらの症状を持っているならば、あなたはXYZの病気を持っていることを示しています。
この場合: PR(A | B)は、あなたがある、見つけるためにしようとしているものです。 あなたが特定の症状を持っていることを考えると、あなたはXYZを有する確率ます。
PR(A)は、疾患を有する確率であるXYZ
PR(B)は、これらの症状を有する確率である
のPr(B | A)は、あなたがしている、インターネットから見つけることです: あなたが病気を持っていることを考えると、症状を有する確率。