貝葉斯公式由淺入深大講解—AI基礎算法入門

1 貝葉斯方法html

    長久以來,人們對一件事情發生或不發生的機率,只有固定的0和1,即要麼發生,要麼不發生,歷來不會去考慮某件事情發生的機率有多大,不發生的機率又是多大。並且機率雖然未知,但最起碼是一個肯定的值。好比若是問那時的人們一個問題:「有一個袋子,裏面裝着若干個白球和黑球,請問從袋子中取得白球的機率是多少?」他們會想都不用想,會立馬告訴你,取出白球的機率就是1/2,要麼取到白球,要麼取不到白球,即θ只能有一個值,並且不論你取了多少次,取得白球的機率θ始終都是1/2,即不隨觀察結果X 的變化而變化。算法

    這種頻率派的觀點長期統治着人們的觀念,可是:網絡

v2-75b7149ad3a020edcc0b0f3c5aa64de7_b.png

假設咱們有以下的7個球在A,B兩個框中,若是咱們隨便取一個球,已知取到的球來自B框中,那麼這個球是白球的機率是多少呢?或者問去除的球是白色,那麼取自B框的機率是多少呢?這個問題不是很好解決,直到後來一個名叫Thomas Bayes的人物出現。機器學習

1.1 貝葉斯方法的提出ide

    托馬斯·貝葉斯Thomas Bayes(1702-1763)在世時,並不爲當時的人們所熟知,不多發表論文或出版著做,與當時學術界的人溝通交流也不多,用如今的話來講,貝葉斯就是活生生一民間學術「屌絲」,可這個「屌絲」最終發表了一篇名爲「An essay towards solving a problem in the doctrine of chances」,翻譯過來則是:機遇理論中一個問題的解。你可能以爲我要說:這篇論文的發表隨機產生轟動效應,從而奠基貝葉斯在學術史上的地位。函數

20141110191248285 (1).jpg

事實上,上篇論文發表後,在當時並未產生多少影響,在20世紀後,這篇論文才逐漸被人們所重視。對此,與梵高何其相似,畫的畫生前一文不值,死後價值連城。post

    回到上面的例子:「有一個袋子,裏面裝着若干個白球和黑球,請問從袋子中取得白球的機率θ是多少?」貝葉斯認爲取得白球的機率是個不肯定的值,由於其中含有機遇的成分。好比,一個朋友創業,你明明知道創業的結果就兩種,即要麼成功要麼失敗,但你依然會忍不住去估計他創業成功的概率有多大?你若是對他爲人比較瞭解,並且有方法、思路清晰、有毅力、且能團結周圍的人,你會情不自禁的估計他創業成功的概率可能在80%以上。這種不一樣於最開始的「非黑即白、非0即1」的思考方式,即是貝葉斯式的思考方式。學習

    繼續深刻講解貝葉斯方法以前,先簡單總結下頻率派與貝葉斯派各自不一樣的思考方式:網站

 

  • 頻率派把須要推斷的參數θ看作是固定的未知常數,即機率θ雖然是未知的,但最起碼是肯定的一個值,同時,樣本X 是隨機的,因此頻率派重點研究樣本空間,大部分的機率計算都是針對樣本X 的分佈;.net

  • 而貝葉斯派的觀點則截然相反,他們認爲參數θ是隨機變量,而樣本X 是固定的,因爲樣本是固定的,因此他們重點研究的是參數θ的分佈。

 

    相對來講,頻率派的觀點容易理解,因此下文重點闡述貝葉斯派的觀點。

    貝葉斯派既然把θ看作是一個隨機變量,因此要計算θ的分佈,便得事先知道θ的無條件分佈,即在有樣本以前(或觀察到X以前),θ有着怎樣的分佈呢?

    好比往檯球桌上扔一個球,這個球落會落在何處呢?若是是不偏不倚的把球拋出去,那麼此球落在臺球桌上的任一位置都有着相同的機會,即球落在臺球桌上某一位置的機率服從均勻分佈。這種在實驗以前定下的屬於基本前提性質的分佈稱爲先驗分佈,或的無條件分佈。

    至此,貝葉斯及貝葉斯派提出了一個思考問題的固定模式:

            先驗分佈 π(θ)+ 樣本信息χ⇒  後驗分佈π(θ|x)

上述思考模式意味着,新觀察到的樣本信息將修正人們之前對事物的認知。換言之,在獲得新的樣本信息以前,人們對的認知是先驗分佈 π(θ),在獲得新的樣本信息後χ,人們對θ的認知爲π(θ|x)

然後驗分佈π(θ|x)通常也認爲是在給定樣本χ的狀況下θ的條件分佈,而使達到最大的值稱爲最大後θMD驗估計,相似於經典統計學中的極大似然估計。

    綜合起來看,則比如是人類剛開始時對大天然只有少得可憐的先驗知識,但隨着不斷是觀察、實驗得到更多的樣本、結果,使得人們對天然界的規律摸得愈來愈透徹。因此,貝葉斯方法既符合人們平常生活的思考方式,也符合人們認識天然的規律,通過不斷的發展,最終佔據統計學領域的半壁江山,與經典統計學平起平坐。

    此外,貝葉斯除了提出上述思考模式以外,還特別提出了聞名中外的貝葉斯定理。

1.2 貝葉斯定理

  在引出貝葉斯定理以前,先學習幾個定義:

  • 邊緣機率(又稱先驗機率):某個事件發生的機率。邊緣機率是這樣獲得的:在聯合機率中,把最終結果中那些不須要的事件經過合併成它們的全機率,而消去它們(對離散隨機變量用求和得全機率,對連續隨機變量用積分得全機率),這稱爲邊緣化(marginalization),好比A的邊緣機率表示爲P(A),B的邊緣機率表示爲P(B)。 

  • 聯合機率表示兩個事件共同發生的機率。A與B的聯合機率表示爲P(A∩B)或者P(A,B)。

  • 條件機率又稱後驗機率:事件A在另一個事件B已經發生條件下的發生機率。條件機率表示爲P(A|B),讀做「在B條件下A的機率」,。

  接着,考慮一個問題:P(A|B)是在B發生的狀況下A發生的可能性。

  • 首先,事件B發生以前,咱們對事件A的發生有一個基本的機率判斷,稱爲A的先驗機率,用P(A)表示;

  • 其次,事件B發生以後,咱們對事件A的發生機率從新評估,稱爲A的後驗機率,用P(A|B)表示;

  • 相似的,事件A發生以前,咱們對事件B的發生有一個基本的機率判斷,稱爲B的先驗機率,用P(B)表示;

  • 一樣,事件A發生以後,咱們對事件B的發生機率從新評估,稱爲B的後驗機率,用P(B|A)表示。

貝葉斯定理即是基於下述貝葉斯公式:

u=239894515,405307697&fm=58.jpeg

P(A|B)=P(B|A)P(A)/P(B)

上述公式的推導其實很是簡單,就是從條件機率推出。

 根據條件機率的定義,在事件B發生的條件下事件A發生的機率是

P(A|B)=P(A∩B)/P(B)

一樣地,在事件A發生的條件下事件B發生的機率

P(B|A)=P(A∩B)/P(A)

 

整理與合併上述兩個方程式,即可以獲得:

P(A|B)P(B)=P(A∩B)=P(B|A)P(A)

    接着,上式兩邊同除以P(B),若P(B)是非零的,咱們即可以獲得貝葉斯定理的公式表達式:

P(A|B)=P(B|A)*P(A)/P(B)

 

筆者在看《從貝葉斯方法談到貝葉斯網絡》的時候,看到這裏,其實已經暈暈的了。

P(A|B) 和 P(B|A) 之類的常常讓人混淆,@待字閨中的陳老師給出了理解的一個關鍵點,區分出規律和現象,就是將A當作「規律」,B當作「現象」,那麼貝葉斯公式當作:

陳老師在《這的理解貝葉斯公式嗎》和《又一個生活中的貝葉斯應用》給出了幾個通俗易懂的例子,這裏再也不贅述。

貝葉斯推斷的含義

 

 

而後搜下,發現其實還有更好闡釋,好比

對條件機率公式進行變形,能夠獲得以下形式:

 

咱們把P(A)稱爲"先驗機率"(Prior probability),即在B事件發生以前,咱們對A事件機率的一個判斷。P(A|B)稱爲"後驗機率"(Posterior probability),即在B事件發生以後,咱們對A事件機率的從新評估。P(B|A)/P(B)稱爲"可能性函數"(Likelyhood),這是一個調整因子,使得預估機率更接近真實機率。

因此,條件機率能夠理解成下面的式子:

後驗機率 = 先驗機率 x 調整因子

這就是貝葉斯推斷的含義。咱們先預估一個"先驗機率",而後加入實驗結果,看這個實驗究竟是加強仍是削弱了"先驗機率",由此獲得更接近事實的"後驗機率"。

在這裏,若是"可能性函數"P(B|A)/P(B)>1,意味着"先驗機率"被加強,事件A的發生的可能性變大;若是"可能性函數"=1,意味着B事件無助於判斷事件A的可能性;若是"可能性函數"<1,意味着"先驗機率"被削弱,事件A的可能性變小。

 

貝葉斯定理應用示例:

已知某種疾病的發病率是0.001,即1000人中會有1我的得病。現有一種試劑能夠檢驗患者是否得病,它的準確率是0.99,即在患者確實得病的狀況下,它有99%的可能呈現陽性。它的誤報率是5%,即在患者沒有得病的狀況下,它有5%的可能呈現陽性。現有一個病人的檢驗結果爲陽性,請問他確實得病的可能性有多大?

假定A事件表示得病,那麼P(A)爲0.001。這就是"先驗機率",即沒有作試驗以前,咱們預計的發病率。再假定B事件表示陽性,那麼要計算的就是P(A|B)。這就是"後驗機率",即作了試驗之後,對發病率的估計。

根據條件機率公式,1.png

用全機率公式改寫分母,

 

 

將數字代入,

咱們獲得了一個驚人的結果,P(A|B)約等於0.019。也就是說,即便檢驗呈現陽性,病人得病的機率,也只是從0.1%增長到了2%左右。這就是所謂的"假陽性",即陽性結果徹底不足以說明病人得病。

或許換成這個公式 P(A|B)=P(A∩B)/B,看起來更加直白寫:

闡釋:

若是沒有誤報,那麼得病率:.001*.99

若是是誤報,那麼得病率爲:.05*(1-.0001),

因此:

p(A|B)=.001*.99/[.99*.001+.05*(1-.0001)]=.019

爲何會這樣?爲何這種檢驗的準確率高達99%,可是可信度卻不到2%?答案是與它的誤報率過高有關。

(【習題】若是誤報率從5%降爲1%,請問病人得病的機率會變成多少?)

有興趣的朋友,還能夠算一下"假陰性"問題,即檢驗結果爲陰性,可是病人確實得病的機率有多大。而後問本身,"假陽性"和"假陰性",哪個纔是醫學檢驗的主要風險?

 

再來一個相似案例:https://www.zhihu.com/question/21134457/answer/169523403

一種癌症,得了這個癌症的人被檢測出爲陽性的概率爲90%,未得這種癌症的人被檢測出陰性的概率爲90%,而人羣中得這種癌症的概率爲1%,一我的被檢測出陽性,問這我的得癌症的概率爲多少? 

猛地一看,被檢查出陽性,並且得癌症的話陽性的機率是90%,那想必這我的應該是難以倖免了。那咱們接下來就算算看。

咱們用 A 表示事件 「測出爲陽性」, 用 B1 表示「得癌症」, B2表示「未得癌症」。根據題目,咱們知道以下信息:

P(B1)=.01

P(B2)=.99

P(A|B1)=.9

P(A|B2)=.1

那麼咱們如今想獲得的是陽性的狀況下,得癌症的概率

 P(B1,A)=P(B1)*P(A|B1)=.01*.09=0.009;

這裏P(B1,A)表示的是聯合機率,得癌症且檢測出陽性的機率是人羣中得癌症的機率乘上得癌症時測出是陽性的概率,是0.009。同理可得得癌症且檢測出陽性的機率:

P(B2,A)=P(B2)*P(A|B2)=.99*.1=.099;

這個機率是什麼意思呢?實際上是指若是人羣中有1000我的,檢測出陽性而且得癌症的人有9個,檢測出陽性但未得癌症的人有99個。能夠看出,檢測出陽性並不可怕,不得癌症的是絕大多數的,這跟咱們一開始的直覺判斷是不一樣的!可直到如今,咱們並無獲得所謂的「在檢測出陽性的前提下得癌症的 機率 」,怎麼獲得呢?很簡單,就是看被測出爲陽性的這108(9+99)人裏,9人和99人分別佔的比例就是咱們要的,也就是說咱們只須要添加一個歸一化因子(normalization)就能夠了。

因此陽性得癌症的機率 P(B1|A)= .009/(.099+.009).083, 

陽性未得癌症的機率     P(B2|A)= .099/(.099+.009).917 。

 這裏 P(B1|A),P(B2|A)中間多了這一豎線 | 成爲了條件機率,而這個機率就是貝葉斯統計中的 後驗機率!而人羣中患癌症與否的機率 P(B1),P(B2) 就是 先驗機率!咱們知道了先驗機率,根據觀測值(observation),也可稱爲test evidence:是否爲陽性,來判斷得癌症的後驗機率,這就是基本的貝葉斯思想,咱們如今就能得出本題的後驗機率的公式爲:


後驗機率的公式.png

由此就能獲得以下的貝葉斯公式的通常形式。

咱們把上面例題中的  A  變成樣本(sample)  x  , 把 B 變成參數(parameter)  \theta , 咱們便獲得咱們的貝葉斯公式: 

 

Screen Shot 2017-09-13 at 21.28.30.png

能夠看出上面這個例子中,B 事件的分佈是離散的,因此在分母用的是求和符號 Σ 。那若是咱們的參數θ的分佈是連續的呢?沒錯,那就要用積分,因而咱們終於獲得了真正的 貝葉斯公式 :

Screen Shot 2017-09-13 at 21.32.17.png

其中π指的是參數的機率分佈,π(θ)指的是先驗機率,π(θ|x)指的是後驗機率,  指的是咱們觀測到的樣本的分佈,也就是似然函數(likelihood),記住豎線 | 左邊的纔是咱們須要的。其中積分求的區間Θ指的是參數  θ  全部可能取到的值的域,因此能夠看出後驗機率π(θ|x)   是在知道 X的前提下在  Θ域內的一個關於 θ 的機率密度分佈,每個θ都有一個對應的可能性(也就是機率)。

 

做者:徐炎琨

連接:https://www.zhihu.com/question/21134457/answer/169523403

來源:知乎

著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

一個更好理解的例子:

連接:https://www.zhihu.com/question/51448623/answer/175907274

假設你是一個領導者,或者說,山寨的頭目好了。

你是遠近聞名的土匪頭子。哈哈

聽聞最近官兵換統領了,可能要來剿匪了。這裏駐紮的軍兵每5年都會換一屆統領,新官上任三把火,都想拿大家來開刀。不過每次,你都帶領兄弟們打退了官兵的圍剿。

此次不一樣了,據說換的是個厲害的角色。所以,你讓二頭領派人下山去打探消息,看看是否是要來攻山。

打探的人回來了,支支吾吾地說:官兵不會來,由於新來統領他媽生病了,回家探病去了。

你這個時候,信不信他的話?

你看這個回報的人,變毛變色的,說話吞吞吐吐。可是,他也有多是由於沒見過你大頭領,回話的時候,有些緊張懼怕。

你做爲一個受太高等教育的人(學過幾率論,貝葉斯定理的人),心理開始盤算:

1. 官兵每5年來一次,那麼今年來的機率就是

1/5=20%

2. 派出去打探的這小子,說官兵不會來,那麼今年來的機率是:

0

3. 嗯?派出去這小子,是否是可靠,不會說的是假話吧?

因而,你向旁人瞭解了一下:

1. 三頭領勸你好好考慮下,說這個小子雖然人機靈,可是常常是十句話裏面有七八句是假的,嘴裏沒實話。

因而你心理又開始盤算:

1. 十之七八都假話?能嗎?

2.姑且認爲三當家的話是真的。

3.那麼派出去這小子,說假話的機率就是 70%~80%:

就按75%算把,

說真話的機率就是25%

4.那麼若是他說的真話:

他說官兵不來,官兵就不來的機率是:25%*80%=20%

 他說官兵來   , 官兵就來的機率是    :25%*20%=5%

5. 若是他說的假話:

他說官兵不來,官兵   來的機率是:75%*20%=15%

  他說官兵來    ,官兵不來的機率是:75%*80%=60%

6. 那麼他此次口口聲聲說了:官兵不來

那麼根據5.的結果:

官兵來的機率是  15%

官兵不來的機率是  20%

比率是:  來/不來=15/20=3/4

也就是說,來的機率是3/7 =42.86% 不來的機率是4/7=57.14%

【注意】:貝葉斯定律是直接將 15%+20%作分母,兩個機率作分子,分別從新計算其條件機率。

對你一個決策者來講,這樣的比率,過高,顯然沒有什麼意義:

因而你決定再派一個本身的親信兄弟下去打探:

三天後回來,回報結果還和剛纔結果同樣:官兵不會來,統領回家了。

此次是你的親信。應該將機率一會兒修正爲:

官兵來:0 官兵不來 100%

可是,這個親信,雖然忠誠,明顯不夠機靈。他在打探時,可能被欺騙。他雖然不會騙你,但難保他被別人騙。所以,他的話只能作參考,也不可徹底相信:

0.參照以前那個兄弟的結果:

3/7來,4/7不來

1.考慮你的親信被欺騙的機率爲 30%

2.那麼一樣:

他被騙:

他說官兵不來,官兵不來的機率是:3/7*30%=12.86%(實際官兵會來)

     他說官兵來,     官兵來的機率是    :4/7*30%=17.14%

他沒被騙:

他說官兵不來,官兵不來的機率是:4/7*70%=40%(實際官兵不會來)

他說官兵來,    官兵來的機率是    :3/7*70%=30%

3. 因而他向你報告官兵不來,那麼:

來/不來=12.86/40

因而官兵來的機率就是

12.86/(12.86+40)=20.46%

看到20.46%?這個機率仍是太大,你仍是不放心,決定帶上二當家,本身親自下山一趟。

因而你門分頭走街串巷,茶館酒肆裏轉悠,四處打探。

最後,仍是得出相同的結果。

因而你將結果修正爲:

官兵來的機率:0,不來的機率:100%

最後你和二當家在一家酒館碰頭:

你說,官兵不來

二當家說:我看不必定,我摸到了官兵駐紮的地方,看到了官兵在演習調動。

聽了這個消息,你大驚失色。你感受本身可能也被騙了,可是憑本身的經驗,被騙的可能性很小隻有5%的可能性。

因而,你和二當家,約定今晚,趁着月色又摸來了一趟軍營。發現確實在調動軍隊。

你內心想:個人乖乖,幸好過來看了看,不然都沒準備,就被官兵包餃子了。

你一會兒,又將機率修正爲:

官兵來:100%,官兵不來:0

仔細觀察了一下動靜,聽了聽。軍營裏有人小聲說話,你和二當家趴在外面聽:

士兵甲:哎?老四,你知道這回我們要調哪裏去?

士兵乙:那我哪裏知道,那是上頭的事情。

士兵甲:嘿!我勸你,把你那點銀子趁早寄回家去吧。再晚,怕是沒機會了。

士兵乙:老三,你瞎說啥,你知道啥,又要打清風寨?

士兵甲:嘿,打啥清風寨啊。要打打仗了。

你內心想,不打大家山寨?打什麼打仗?最近有啥大事?因而你又將那個心理的機率修正爲:

官兵來:0%,官兵不來:100%

這個時候,你忽然意識到,本身的思惟好像不太對。這後面幾回,信息全是壓倒性的修正,一次一次,不是0%就是100%,徹底不像一個受太高等教育的山寨頭領。

因而,你默默地多計算了兩步。假設這個士兵說真話的機率爲50%,那麼他說官兵不去,

那麼,結合剛剛的機率(來的機率:20.46%,不來的機率:79.54%)

1. 他說真話 :

他說官兵不來,官兵不來的機率是:79.54%*50%=39.77%(實際官兵會來)

     他說官兵來,     官兵來的機率是    :20.46%*50%=10.23%

2.他說假話:

他說官兵來,官兵不來的機率是:20.46*50%=10.23%(實際官兵不會來)

     他說官兵不來,官兵來的機率是 :79.54%*50%=39.77%

3.最終算出來,官兵來的機率是:

20.46%

你發現,機率竟然沒變?你明白了,你假設說真話的機率爲50%,那至關於沒有任何信息量,等於他什麼也沒說。媽*的!你做爲受太高等教育的土匪頭子,仍是不由自主地罵了一句。

因而你接着聽

士兵甲接着說:嘿嘿,皇帝老子要打臺灣了。收拾了三藩,接下來收拾臺灣了,咱們都歸施琅統領。

士兵乙:真的假的,這你清楚?瞎掰吧?

士兵甲:嗨,我騙你作啥?今天我聽李二嘎子說的,他說他二叔在施琅手下,他二叔告訴他的。

士兵乙:呵呵,李二嘎子的話你也信,那傢伙,十句有兩句是假話,你信他?

.....

你聽到這裏,已經敏銳的覺察到事情的原理了,朝着二當家使了個眼色,大家悄悄撤了。

爲何?由於你算了一下,李二嘎子的話可信嗎?根據士兵乙的估計這我的,話裏80%真話,20%假話,因而你開始計算了:

1.李二嘎子說真話:

他說官兵要打臺灣不來,那麼官兵真不來: 80%*79.54%=63.63%

  他說官兵不打臺灣要來,那麼官兵要來     :80%*20.46%=16.37%

2.李二嘎子說假話

他說官兵要打臺灣不來,那麼官兵要來    :  20%*20.46%=4.09%

  他說官兵不打臺灣要來,那麼官兵不來    :20%*79.54%=15.91%

3.綜合下來,官兵要來的機率是

4.09%/(4.09%+63.63%)=6.04%

看樣子,官兵不來的機率很大。可是也不能掉以輕心。因此,你決定,回去以後,沒必要過份緊張,但要提升警惕,並不斷派兄弟下來打探狀況。

這樣看來,應該是能夠決策了把。。。

 

而作決策,就是根據貝葉斯定律,不斷用後驗機率來修正先驗機率的吧。

 轉載請註明來處,文章首發:

貝葉斯公式由淺入深大講解-AI基礎算法入門 - math,數學專欄 - 周陸軍的我的網站

https://www.zhoulujun.cn/html/theory/math/2017_0913_8050.html

 

參考文章:

從貝葉斯方法談到貝葉斯網絡

Chapter 1 貝葉斯推斷的思想

全棧必備 貝葉斯方法

真的理解貝葉斯公式嗎?

全概公式和貝葉斯公式的理解

貝葉斯推斷及其互聯網應用(一):定理簡介

機器學習(一) —— 淺談貝葉斯和MCMC(推薦閱讀)

相關文章
相關標籤/搜索