04.12 程序員、碼農必知——強大到無所不能的貝葉斯算法!

關於貝葉斯算法,我想作為碼農一定大家都不陌生了,畢竟有句話說的好:不認識貝葉斯的碼農不是一個好碼農!


程序員、碼農必知——強大到無所不能的貝葉斯算法!

但是你對貝葉斯算法究竟又瞭解多少呢?今天,小編和大家分享一些貝葉斯算法的知識,希望可以幫到大家也希望大家多多提出意見改進!

程序員、碼農必知——強大到無所不能的貝葉斯算法!

貝葉斯定理:也稱貝葉斯推理,是關於隨機事件A和B的條件概率(或邊緣概率)的一則定理。其中P(A|B)是在B發生的情況下A發生的可能性。早在18世紀,英國學者貝葉斯(1702~1763)曾提出計算條件概率的核心公式如下圖:

程序員、碼農必知——強大到無所不能的貝葉斯算法!

程序員、碼農必知——強大到無所不能的貝葉斯算法!

光是看圖你可能就會覺得頭大,搞不清楚所以然,但是我們把它簡單翻譯一下她就變得很簡單啦

  • P(A丨B)表達為:B這樣的情況,A的可能性

  • P(B丨A)同理:A這樣的情況,B的可能性

  • P(A)是A發生的可能性

  • P(B)是B發生的可能性,其中P(B)=P(B丨A)P(A)+P(B丨A')P(A')......這個叫做全概率公式

  • 用數學語言翻譯就是:後驗概率=先驗概率*調整因子

公式中對應的代表含義如上,這樣對應計算是不是就會變得容易一些呢?

程序員、碼農必知——強大到無所不能的貝葉斯算法!

應用實例:

  • 投資決策

貝葉斯定理用於投資決策分析是在已知相關項目B的資料,而缺乏論證項目A的直接資料時,通過對B項目的有關狀態及發生概率分析推導A項目的狀態及發生概率。如果我們用數學語言描繪,即當已知事件Bi的概率P(Bi)和事件Bi已發生條件下事件A的概率P(A│Bi),則可運用貝葉斯定理計算出在事件A發生條件下事件Bi的概率P(Bi│A)。按貝葉斯定理進行投資決策的基本步驟是:

1 列出在已知項目B條件下項目A的發生概率,即將P(A│B)轉換為 P(B│A);

2 繪製樹型圖;

3 求各狀態結點的期望收益值,並將結果填入樹型圖;

4 根據對樹型圖的分析,進行投資項目決策。

程序員、碼農必知——強大到無所不能的貝葉斯算法!

  • 吸毒者檢測

貝葉斯定理在檢測吸毒者時很有用。假設一個常規的檢測結果的敏感度與可靠度均為99%,也就是說,當被檢者吸毒時,每次檢測呈陽性(+)的概率為99%。而被檢者不吸毒時,每次檢測呈陰性(-)的概率為99%。從檢測結果的概率來看,檢測結果是比較準確的,但是貝葉斯定理卻可以揭示一個潛在的問題。假設某公司將對其全體僱員進行一次鴉片吸食情況的檢測,已知0.5%的僱員吸毒。我們想知道,每位醫學檢測呈陽性的僱員吸毒的概率有多高?令“D”為僱員吸毒事件,“N”為僱員不吸毒事件,“+”為檢測呈陽性事件。可得

  • P(D)代表僱員吸毒的概率,不考慮其他情況,該值為0.005。因為公司的預先統計表明該公司的僱員中有0.5%的人吸食毒品,所以這個值就是D的先驗概率。

  • P(N)代表僱員不吸毒的概率,顯然,該值為0.995,也就是1-P(D)。

  • P(+|D)代表吸毒者陽性檢出率,這是一個條件概率,由於陽性檢測準確性是99%,因此該值為0.99。

  • P(+|N)代表不吸毒者陽性檢出率,也就是出錯檢測的概率,該值為0.01,因為對於不吸毒者,其檢測為陰性的概率為99%,因此,其被誤檢測成陽性的概率為1-99%。

  • P(+)代表不考慮其他因素的影響的陽性檢出率。該值為0.0149或者1.49%。我們可以通過全概率公式計算得到:此概率 = 吸毒者陽性檢出率(0.5% x 99% = 0.00495)+ 不吸毒者陽性檢出率(99.5% x 1% = 0.00995)。P(+)=0.0149是檢測呈陽性的先驗概率。用數學公式描述為:

程序員、碼農必知——強大到無所不能的貝葉斯算法!

  • 根據上述描述,我們可以計算某人檢測呈陽性時確實吸毒的條件概率P(D|+):

P(D|+) = P(+|D)P(D)/(P(+|D)P(D)+P(+|N)P(N))=0.99 *0.005/0.0149=0.332215

儘管我們的檢測結果可靠性很高,但是隻能得出如下結論:如果某人檢測呈陽性,那麼此人是吸毒的概率只有大 約33%,也就是說此人不吸毒的可能性比較大。我們測試的條件(本例中指D,僱員吸毒)越難發生,發生誤判的可能性越大。

但如果讓此人再次複檢(相當於P(D)=33.2215%,為吸毒者概率,替換了原先的0.5%),再使用貝葉斯定理計算,將會得到此人吸毒的概率為98.01%。但這還不是貝葉斯定理最強的地方,如果讓此人再次複檢,再重複使用貝葉斯定理計算,會得到此人吸毒的概率為99.8%(99.9794951%)已經超過了檢測的可靠度。

程序員、碼農必知——強大到無所不能的貝葉斯算法!

  • 其他應用

程序員、碼農必知——強大到無所不能的貝葉斯算法!


分享到:


相關文章: