本文爲閱讀Data Science from Scratch之筆記,文中案例、公式分析皆來自此書測試
讓咱們先來看看生活中的一個小例子。假設有某種疾病D,在10000人中會有1人患此病;又假設對患此病的人進行測試,測試爲陽性的比例達到99%,也就是說100名患者中,有99名患者檢測結果皆爲陽性(positive)。問題:code
在檢測爲陽性的狀況下,某一我的肯定患該病的機率是多少?
不用仔細思考,先用本身的直覺判斷,機率高仍是低?再結合數據認真思考,你獲得的機率值會是多少呢?我想,或許絕大部分人的第一反應是:在檢測爲陽性的狀況下,基本就能夠確診身患D病了。再結合前面給出的數據進行運算,會很是容易地獲得答案爲99%。這是顯而易見的吧,100名患者99名都檢測爲陽性,那麼,——不是反之亦然麼?事件
顯然,直覺欺騙了咱們。上述數據營造了一種假象,讓咱們忽略了未患D病的人檢測爲陽性所佔的比例。ci
讓咱們把數據增大,假設有一百萬人。在這個基數下,患D病的人有100人。在這100人中,檢測爲陽性的人爲99人。如今考慮未患D病的人數,一百萬減去一百,獲得的人數爲999900。根據檢測陽性的比例,檢測這些人時,會有1%的概率會檢測爲陽性,人數爲999900*1%等於9999人。因而,咱們能夠計算出患D病且檢測爲陽性的人在全部檢測爲陽性的人中所佔的比例爲:99/99+9999,結果纔不到1%。rem
這樣結果然讓人莫名驚詫了。換言之,咱們能夠下結論說:當某我的檢測爲陽性時,判定他(她)患D病的概率僅僅爲0.98%。那麼說,這樣的檢測給醫生的參考依據幾乎能夠忽略不計啊!爲何會這樣?——從機率學的角度講,這實際上是貝葉斯定理(Bayes's Theorem)的體現。get
首先咱們將患病的事件記作D,檢測爲陽性的事件記作T。若是患病的事件沒有發生,則稱爲「Not D」,符號記爲:¬D。同理,檢測不爲陽性的事件能夠記爲¬T。it
若是記D、T都發生的機率爲P(D,T),則有公式:io
P(D,T) = P(D|T)/P(T)
其中P(D|T)爲當T發生時,D發生的機率,這一律率被稱之爲事件D關於事件T的條件機率(Conditional probability)。因爲P(D,T) = P(T,D) = P(T|D)/P(D)
,於是條件機率的公式能夠記爲:數據
P(D|T) = P(D,T)/P(T) = P(T|D)P(D)/P(T)
咱們再將事件D拆分爲D和¬D,則P(T)能夠記爲:di
P(T) = P(T,D) + P(T,¬D)
這個公式是一個公理,由於在具備D、T兩個事件的狀況下,P(T)必然只存在兩種狀況,要麼在T發生時,D也發生;要麼在T發生時,D沒有發生。那麼貝葉斯定理就能夠記爲:
P(D|T) = P(T|D)P(D)/[P(T|D)P(D) + P(T|¬D)(P¬D)]
如今咱們能夠計算P(D|T),即測試爲陽性時,患D病的機率值了。咱們已知:
P(T|D):當患D病時,檢測爲陽性的機率爲0.99; P(D):10000我的有1我的患D病,則機率爲1/10000=0.0001; P(T|¬D):沒有患D病時,檢測爲陽性的機率爲1-0.99=0.01; P(¬D):沒有患D病的機率爲1-0.0001=0.9999。
計算上面的公式,P(D|T)等於0.98%。符合咱們前面的分析。然而咱們的直覺呢?簡直潰敗而不成軍了。
注:上面所述D與T之間關係乃理想狀態,判斷一我的是否生病,檢測是否陽性、陰性僅僅爲其中一個要素。例如當咱們再增長一個症狀事件S後,同時知足T與S的前提,則D發生的機率值就會顯著增長。