統計機器學習-貝葉斯公式

概率論的兩大基本規則:
加法規則:P(X)=YP(X,Y)P(X)=\sum_Y P(X,Y)
乘法規則:P(X,Y)=P(Y)P(XY)=P(X)P(YX)P(X,Y)=P(Y)P(X|Y)=P(X)P(Y|X)

演化得:
貝葉斯公式:
P(YX)=P(XY)P(Y)P(X)P(Y|X)=\frac {P(X|Y)P(Y)}{P(X)}
P(XY)似然函數:P(X|Y)
P(Y)先驗分佈:P(Y)
配分函數:( P(X)對所有的Y展開 )P(X)=YP(XY)P(Y)P(X)=\sum_{Y} P(X|Y)P(Y)
所以貝葉斯公式也可以寫爲:
P(YX)=P(XY)P(Y)YP(XY)P(Y)P(Y|X)=\frac{P(X|Y)P(Y)}{\sum_{Y} P(X|Y)P(Y)}
還可以寫爲:
P(YiX)=P(XYi)P(Yi)jP(XYj)P(Yj)P(Y_i|X)=\frac{P(X|Y_i)P(Y_i)}{\sum_{j} P(X|Y_j)P(Y_j)}

貝葉斯公式的應用:

血友病是X隱性遺傳病
 
一個正常婦女,哥哥患血友病
 
假設 θ=1\theta=1爲攜帶致病基因,θ=0\theta=0爲不攜帶致病基因
 
那麼對這個婦女來講,
p(θ=1)=P(θ=0)=12p(\theta=1)=P(\theta=0)=\frac{1}{2}
這個婦女生了兩個兒子,如果這兩個兒子均正常:
P(y1=0,y2=0θ=0)=1×1P(y_1=0,y_2=0|\theta=0)=1×1
P(y1=0,y2=0θ=1)=12×12P(y_1=0,y_2=0|\theta=1)=\frac{1}{2}×\frac{1}{2}
我們反推這個婦女的患病概率:
P(θ=1y1=0,y2=0)=P(y1=0,y2=0θ=1)P(θ=1)P(y1=0,y2=0)P(\theta=1|y_1=0,y_2=0)=\frac{P(y_1=0,y_2=0|\theta=1)P(\theta=1)}{P(y_1=0,y_2=0)}
由配分函數
P(X)=YP(XY)P(Y)P(X)=\sum_{Y} P(X|Y)P(Y)
可知:
P(y)=θP(yθ)P(θ)P(y)=\sum_{\theta}P(y|\theta)P(\theta)

P(y1=0,y2=0)=P(y1=0,y2=0)P(θ=1)+P(y1=0,y2=0)P(θ=0)P(y_1=0,y_2=0)=P(y_1=0,y_2=0)P(\theta=1)+P(y_1=0,y_2=0)P(\theta=0)
所以這個婦女的患病概率公式就變成了:
P(θ=1y1=0,y2=0)=P(y1=0,y2=0θ=1)P(θ=1)P(y1=0,y2=0θ=1)P(θ=1)+P(y1=0,y2=0θ=0)P(θ=0)P(\theta=1|y_1=0,y_2=0)=\frac{P(y_1=0,y_2=0|\theta=1)P(\theta=1)}{P(y_1=0,y_2=0|\theta=1)P(\theta=1)+P(y_1=0,y_2=0|\theta=0)P(\theta=0)}
算出來該婦女在生了兩個健康的孩子的條件下的患病概率:
P(θ=1y1=0,y2=0)=12×12×1212×12×121×1×12=1858=15P(\theta=1|y_1=0,y_2=0)=\frac{\frac{1}{2}×\frac{1}{2}×\frac{1}{2}}{\frac{1}{2}×\frac{1}{2}×\frac{1}{2}+1×1×\frac{1}{2}}=\frac{\frac{1}{8}}{\frac{5}{8}}=\frac{1}{5}


如果該婦女生了3個健康的兒子
由於這裏的孩子都是沒病的,我們簡化書寫:
P(y1=0,y2=0,y3=0)=P(y)=P(y1=0,y2=0,...,yn=0)P(y_1=0,y_2=0,y_3=0)=P(y)=P(y_1=0,y_2=0,...,y_n=0)
則:
P(y1=0,y2=0y3=0θ=0)=P(yθ=0)=1×1×1P(y_1=0,y_2=0,y_3=0|\theta=0)=P(y|\theta=0)=1×1×1
P(y1=0,y2=0y3=0θ=1)=P(yθ=1)=12×12×12P(y_1=0,y_2=0,y_3=0|\theta=1)=P(y|\theta=1)=\frac{1}{2}×\frac{1}{2}×\frac{1}{2}
反推這個婦女的患病概率:

P(θ=1y)=P(yθ=1)P(θ=1)p(y)=P(yθ=1)P(θ=1)P(yθ=0)P(θ=0)+P(yθ=1)P(θ=1)P(\theta=1|y)=\frac{P(y|\theta=1)P(\theta=1)}{p(y)}=\frac{P(y|\theta=1)P(\theta=1)}{P(y|\theta=0)P(\theta=0)+P(y|\theta=1)P(\theta=1)}
=(12×12×12)×121×1×1×12+(12×12×12)×12=116916=190.111111=\frac{(\frac{1}{2}×\frac{1}{2}×\frac{1}{2})×\frac{1}{2}}{1×1×1×\frac{1}{2}+(\frac{1}{2}×\frac{1}{2}×\frac{1}{2})×\frac{1}{2}}=\frac{\frac{1}{16}}{\frac{9}{16}}=\frac{1}{9}≈0.111111


繼續推廣,假設這個婦女生了n個健康的兒子:
P(yθ=0)=1nP(y|\theta=0)=1^n
P(yθ=1)=(12)nP(y|\theta=1)=(\frac{1}{2})^n
那麼這個婦女的患病概率爲:
P(θ=1y)=P(yθ=1)P(θ=1)P(y)=P(yθ=1)P(θ=1)P(yθ=0)P(θ=0)+P(yθ=1)P(θ=1)=(12)n+11n×12+(12)n+1P(\theta=1|y)=\frac{P(y|\theta=1)P(\theta=1)}{P(y)}=\frac{P(y|\theta=1)P(\theta=1)}{P(y|\theta=0)P(\theta=0)+P(y|\theta=1)P(\theta=1)}=\frac{(\frac{1}{2})^{n+1}}{1^n×\frac{1}{2}+(\frac{1}{2})^{n+1}}
由此可以看出,當 nn\to∞ ,這名婦女患病的概率就成了 0

事實上,當n爲10時,這名婦女的患病概率就已經非常小了(0.001949317738791423,幾近於0),不信我們用matplotlib模擬一下看看:

import numpy as np
from matplotlib import pyplot as plt

plt.xlim((0,10))
plt.ylim((0,0.5))
x = np.arange(0, 11)
y = (0.5**(x+1))/((0.5**(x+1))+0.5)
plt.title("Bayes")
plt.xlabel("該婦女所生孩子個數")
plt.ylabel("該婦女攜帶致病基因概率")
plt.plot(x, y,color='red')
plt.show()

在這裏插入圖片描述
如果我把x區間修改爲20:
在這裏插入圖片描述
所以可以驗證上面:n爲10的時候就已經可以認爲這名婦女不攜帶致病基因了


類似的圖還可以用pyecharts畫出來:

from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from pyecharts.globals import ThemeType

list_x = [x for x in range(0, 11)]
list_y = []
for x in range(0, 11):
    list_y.append((0.5 ** (x + 1)) / ((0.5 ** (x + 1)) + 0.5))

line = (
    Line(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))
        .add_xaxis(list_x)
        .add_yaxis("", list_y, is_smooth=True)
        .set_global_opts(title_opts=opts.TitleOpts(title="Bayes", pos_left='center',),
                         yaxis_opts=opts.AxisOpts(name="該婦女攜帶致病基因概率"),
                         xaxis_opts=opts.AxisOpts(name="該婦女所生孩子個數"))
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
)

make_snapshot(snapshot, line.render(), "Bayes.png")

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章