近年來,在大數據分析領域,機器學習領域,概率論大放異彩,尤其是貝葉斯分析,更是所有算法中不可不知的一個重點算法。
回到基礎,很多人儘管學過,並沒有真正理解貝葉斯概率的本質,所以應用的時候,看不出實際中哪些問題能歸納成貝葉斯概率問題,就失去了解決問題的能力。
我一直覺得,再難的數學題也怕舉個例子。今天我們看圖說話,可以更加直觀的理解貝葉斯概率,把問題模型在腦子裡樹立起來,就算是透徹理解了。
我們通過一個故事引出貝葉斯公式:
小明去醫院做常規體檢,在小護士的忽悠下,增加了一項罕見的病的檢查。結果,非常的不行,三天後小明被告知檢查結果呈陽性。小明悲痛欲絕,覺得自己下半生沒了希望,非常痛苦的發了朋友圈。
幸好,對門的老張是個教概率論的老師,他看到朋友圈嚇了一跳,立刻找到小明瞭解情況。待小明將情況說出後,老張立刻告訴他,情況沒那麼糟糕。
小明問道:“檢查結果呈陽性了,難道還不能說明問題?”
老張回答說:“問題就在這裡,他醫院的機子就不會檢查出錯嗎?”
小明說:“人家說了,這是最新德國進口的機器,檢查出錯的概率是千分之一,基本上沒錯的。”
老張笑了一下說:“千分之一就說明還是有錯的嘛,還不能下結論。”
小明說:“都千分之一了,也就是說我得病的可能性是百分之九十九點九。”
老張說:“你的病的可能性並不是百分之九十九點九。”
小明立刻來了精神,問道:“難道還有別的可能?”
老張說:“當然了,要知道你真的得這種病的可能性,還需要知道人群中患有這個疾病的概率”。
小明說:“我查過了,是萬分之五,這是一種罕見的病。”
老張又說:“還有件事情必須搞清楚,就是所有人中,不管得病的不得病的,檢查結果呈陽性的是多少啊?”
小明說:“什麼意思?”
老張解釋說:“這很簡單,這個機器既有可能把好人檢測呈陽性,也有可能把病人檢測成陰性,對吧?雖然可能性很低,但是有可能的。”
小明點點頭:“這跟我有什麼關係?我已經是陽性了。機器那麼準,難道我還能是那千分之一嗎?”
老張立刻說:“問題就在這裡,你這種情況不是千分之一。”
小明聽完給醫院打了個電話,醫生告訴他,人群中呈陽性的人數佔所有檢查過的總人數的比值是千分之一,老張聽後哈哈大笑,這機子太破了,你八成沒事兒。
小明睜大眼睛問到:“真的嗎?”
老張嚴肅地說:“你聽說過貝葉斯公式嗎?下面我給你來分析一下,像 你這個情況就是檢查結果呈陽性,但是不知道是不是真得了這個病,對吧?”
小明點點頭。
老張接著說:“現在情況是這樣,檢查結果陽性,這是前提條件,我們需要知道的是在陽性的條件下,真正的的病概率,就是 P(病|陽),後面表示已經發生的條件(呈陽性),豎槓前面表示在陽性前提下,得病的概率。其實我們真正關心的是有沒有得病,而不是結果是不是陽性,對吧?”
小明表示聽懂了,點頭示意老張繼續說。
老張接著說:“要知道這個概率,我們需要知道人群中所有檢查呈陽性的概率,也就是P(陽),剛才你問過了是千分之一,也就是 P(陽)=0.001;然後呢,你還查過這個病在人群中發病的概率為萬分之五,也就是P(病)=0.0005; 對吧?
再根據你的說的這機器的準確度,它把患病的人檢測成為陽性的概率是百分之0.999, 請注意,這又是一個條件概率(見後注附加閱讀),條件就是確認患病的情況下,結果呈陽性的概率;換句話說就是有一千個確實得了病的,跑來讓這個機子來查,它會測出999個陽性,還有一個陰性,這就是你覺得機器很準的原因。
我們把這個條件概率記為:P(陽|病)=0.999,那麼我們要知道的是P(病|陽),也就是你的情況,我肯定告訴你,P(病|陽)絕對不等於P(陽|病),我給你畫個圖你就明白了。”
接著,老張就花了下面這張圖,小明一看就明白了:
“所以呢,你做為檢測結果呈陽性裡的一員,也就是所有紅框內的2000人,真實發病的只有999人,好人1001個,你得病的概率連一半都不到。”老張指著圖說。
小明大鬆一口氣,:“這個破機器這麼不準啊,那為什麼他告訴我準確率是99.9%,這不是騙人嗎?“
老張說:"倒也不能說是騙人,他們只是沒告訴你前提條件,前提條件是你真要是得病了,檢測結果呈陽性的幾率是99.9%,這還算可以啦。"
小明說:”我都快被嚇死了,多虧你來幫我分析。你怎麼這麼聰明啊,這麼難轉的彎兒都能繞明白,不愧是大學老師啊。“
老張說:”其實這是概率論裡的一個著名公式,就是貝葉斯公式。但我直接給你說公式怕講不明白,但我只要一畫圖你就明白了,下面就是這個公式。你看看。“
小明看了半天,又回去對著圖看,才明白。”這公式真夠彆扭的。“
老張說:”沒錯,很多學生理解不了,就是因為這公式表達的不夠直觀。所以我推薦畫圖來說話:
第一步:畫出一個長方形黑色方框代表總的人群數,取個好算的數字,這裡取200萬,後面你會明白。
第二步:在黑色長方形裡面,分成兩部分:綠色代表健康人,橘色代表發病的人。這是真實的統計概率,是再次驗證過真的得病的那些人。在這裡,P(病)=0.0005,1000人,而健康人是199000,這的確是個比較低的概率了。
第三步:在橘色框內,畫一個紅色的框,代表檢測呈陽性的那些人,這裡是99.9%,也就是999人,含義是:有一千個病人,送到機器前檢查,機器會告訴你999個陽性,一個陰性。它搞錯了1個。
第四步:很重要,別漏了!在綠色框內畫一個紅框,代表在健康人裡面檢測結果呈陽性的人,這一部分和剛才橘色內部的紅框內的
人數總和 代表在200萬人中,所有的檢測結果呈陽性的人。這個數據就是P(陽)=0.001,即2000人。剛才說了,這裡面真正有病的才999人,這個機器它把1001誤診了,給出了陽性的結果。所以,這個機器最大的問題不是在於有病的人檢測不出來,而是會把許多健康的人檢測成陽性。
第五步:特別簡單了,所有的陽性為2000人,有病的才999人,那麼你得病的概率是P(病|陽)=999/2000*100%=49.5%,還不到一半呢。
這也就是從所有呈陽性的結果裡挑出得病的那些,道理其實特別簡單的。其實找出所有呈陽性的人才是這個問題背後隱藏的真正信息。”
老張說完,小明就徹底明白了:“我要立刻去另一家醫院再查一遍,這機器太不靠譜了。“
”對的,應該複查一下!即使在最壞的情況下,也不要輕易下悲觀結論,概率問題隱藏著許多的貓膩,一不小心就會被他騙了。這裡最重要的就是一定要搞清楚一件事情發生的前提條件才行。“老張最後又強調了一下。
結尾:小明又去醫院複查了一次,他這次結果是陰性,那麼最後的問題是:
檢測結果為隱性的人,患病的概率多大呢?P(病|陰)結果就在圖裡哦!
算對的回覆一下哈,證明你學會了。
再來個例題:
設某公路經過的貨車與客車的數量之比為1:2,貨車中途停車修車的概率為0.02,客車為0.01,今有一輛汽車中途停車修理,則該車是貨車的概率是多少?
歡迎關注我,一起討論!
附加閱讀:
條件概率:
設A, B是兩個事件,且P(B)>0, 則在事件B發生的條件下,事件A發生的條件概率(conditional probability)為:
P(A|B)=P(AB)/P(B)
P(AB) = P(B)·P(A|B) = P(A)·P(B|A)
全概率公式(formula of total probability)
將事件A分解成若干個小事件,通過求每個小事件的概率,然後相加從而求得事件A的概率。
這個A也就是貝葉斯公式後面隱藏的全部信息了。