大家好,我是一名Python數據分析師,我想把自己轉行成功之路上的經驗分享給大家,由此就有了我的人工智慧四部曲:《15天學會Python編程》、《每天10分鐘,用Python學數據分析》、《Python數據可視化實戰》、《33天搞定機器學習》。本文《33天搞定機器學習》之Day23上半部分的內容,我們徹徹底底搞懂樸素貝葉斯定理。
樸素貝葉斯是經典的機器學習算法之一,它是基於概率論的分類算法。樸素貝葉斯原理簡單,也很容易實現,多用於文本分類,比如垃圾郵件過濾。作為樸素貝葉斯算法的核心,貝葉斯定理十分重要,有必要單獨拿出一章的篇幅來研究。
本章內容為純統計學知識,我儘可能用簡潔、通俗易懂的方式來講述,請放心學習。
貝葉斯老先生
託馬斯·貝葉斯(Thomas Bayes,1702-1761),18世紀英國神學家、數學家、數理統計學家和哲學家,概率論理論創始人,貝葉斯統計的創立者。 貝葉斯曾是對概率論與統計的早期發展有重大影響的兩位人物(另一位是布萊斯·帕斯卡Blaise Pascal)之一。他將歸納推理法用於概率論基礎理論,並創立了貝葉斯統計理論,對於統計決策函數、統計推斷、統計的估算等做出了貢獻。
貝葉斯解決了什麼問題?
以疫情舉例,我們知道新冠肺炎的發病率,現在有試劑可以檢測患者是否被感染,但是檢測準確率並非100%,而且還會有一定的誤報(沒有被感染,但是檢測結果是陽性),那麼問題來了:現有一個病人的檢驗結果為陽性,請問他確實得病的可能性有多大? 這個問題就需要貝葉斯來解答了,這裡涉及到很多新的概念,我們講解清楚之後再來解上面這道題。
貝葉斯定理
貝葉斯定理的概率表達相對清晰,理解起來會相對容易。回憶一下我們學過的概率論,聯合概率是滿足交換律的,即:
P(A and B) = P (B and A)
對聯合概率以條件概率展開:
P(A and B ) = P(A) P(B|A)
P(B and A ) = P(B) P(A|B)
從而得到:
P(B|A)=P(A|B)P(B) / P(A)
大功告成,這就是神奇的貝葉斯定理。
其中: P(A) 為A的先驗概率,它不考慮任何 B 方面的因素。 P(B) 為B的先驗概率,它不考慮任何 A 方面的因素; P(B|A) 為後驗概率,是已知 B 發生後 A 的條件概率; P(A|B) 為後驗概率,是已知 A 發生後 B 的條件概率;
{!-- PGC_COLUMN --}
在計算P(A)的時候,可以用加法定理表示:
P(A) = P(A and B) + P(A and B_) = P(A|B)P(B)+ P(A|B_) P(B_)
將公式擴展至多維,就是更常見的公式了
下面我們用貝葉斯公式來計算剛才提出的問題
貝葉斯定理的應用
已知新冠肺炎的發病率是0.001,即1000人中會有1個人得病。現有一種試劑可以檢驗患者是否得病,它的準確率是0.99,即在患者確實得病的情況下,它有99%的可能呈現陽性。它的誤報率是5%,即在患者沒有得病的情況下,它有5%的可能呈現陽性。現有一個病人的檢驗結果為陽性,請問他確實得病的可能性有多大?
假定A事件表示得病,那麼P(A)為0.001。這就是"先驗概率",即沒有做試驗之前,我們預計的發病率。再假定B事件表示陽性,那麼要計算的就是P(A|B)。這就是"後驗概率",即做了試驗以後,對發病率的估計。
根據條件概率公式
用全概率公式改寫分母
將數字代入
我們得到了一個驚人的結果,P(A|B)約等於0.019。也就是說,即使檢驗呈現陽性,病人得病的概率,也只有2%左右。這就是所謂的"假陽性",即陽性結果完全不足以說明病人得病。為保障準確性,就可以對已檢測出陽性的「患者」進行第二次核酸檢測,正常人連續檢測兩次都出現誤診的概率極低,這時檢測出真正的患者的概率就很高了。
預告
本章下半部分,我們學習樸素貝葉斯分類器,動手實現一個分類模型,歡迎訂閱。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.