貝氏定理 ( Bayes' Rule ) 是讓我們能在很難直接從實驗直接獲得機率值時,用相關的條件機率值來計算出我們想要探索的情況出現的可能性。
如
1. 垃圾郵件中常常會有 money 這樣的字眼,那我們在做垃圾郵件的辨識機制,如果用 mail 中只要有 moeny 就評斷為垃圾郵件,如此正確的機率是多少 ?
2. Covid-19 的檢測出是陽性,能抓出多少比例真正陽性的人?應該做普篩嗎 ?
我們先來看第一個例子
假設我們從某一大時段研究那時段的所有郵件。
其中垃圾郵件( spam )佔 20%
從許多垃圾郵件中,我們觀察到有 8% 會包含 money 這字眼
而非垃圾郵件( han )中出現 money 字眼的有 2%
那我們可以從以上的資訊利用貝氏定理算出如果一個 email 中有 moeny 這字時就說這個 email 是垃圾郵件,這判斷正確的機率是多少。
設定垃圾郵件事件為 A , 有 moeny 字眼出現在 email 的事件為 B
我們現在要求的是 P(A|B) -> 看見 moeny 條件下( B ) 其為垃圾郵件( A )的機率
在上述資料我們有的數據是 P(B|A) -> 在垃圾郵件( A ) 中看到 money 字眼( B )的機率是 8%
以及 P(B| 非 A ) --> 在非垃圾郵件 ( 非 A ) 中看到 money 字眼 ( B ) 的機率是 1%
另外 P(A) 是垃圾郵件出現機率 20%
由以上數據我們可以算出所有郵件會出現 moeny 字眼的機率是
P(A)*P(B|A)+P( 非A)*P(B|非A) = 20%*8%+(1-20%)*1%=2.4%
email 中有 moeny 字眼出現且為垃圾郵件的機率是 P(A) * P(B|A) = 20%*8%=1.6%
P(A|B) =email 中有 moeny 字眼出現且是垃圾郵件的機率 / money出現機率
也就是 P(A)*P(B|A) / [P(A)*P(B|A)+P( 非A)*P(B|非A)]=1.6%/2.4%= 67%
所以對於一家在做 email 伺服器的公司,要認定哪些字眼為 spam 的標準,應該可以用以上這種方式來估算正確率,公司可考慮正確率達到多高的字眼可作為 spam 的清單。 這些字眼是可以有 robot 在動態對客戶 email 伺服器中長期觀察和計算下浮現出來的。
現在來看第二個例子
假設從確認染疫的族群中測出陽性的比率為 95%,從沒有染疫的族群中測試誤判為陽性的機率為 2%
目前全部染疫的人佔總人口 1%,那普篩的話,能篩出真的染疫者的機率是多少 ? 也就是當測試為陽性時真的是染疫的機率是多少?
這裡的事件有 A事件: 確實染疫 B事件: 檢測陽性
我們要求 P(A|B)
而我們有的數據為 P(B|A)=95% P(B|非A)=2% P(A)=1%
整體測出陽性的機率為 P(A)*P(B|A)+P(非A)*P(B|非A)=1%*95%+99%*2%=2.93%
測出陽性且真的染疫的機率為 P(A)*P(B|A) = 1%*95%=0.95%
P(A|B) = 測試出是陽性且真的染疫的機率 / 測出陽性的機率
也就是 P(A)*P(B|A) / [P(A)*P(B|A)+P( 非A)*P(B|非A)]=0.95%/2.93%= 32.4%
看起來測出陽性者中其實只有 32.4% 的人是真的染疫的, 如此作普篩真的是蠻徒勞無功。
且會增加一大堆人很擔心自己染疫了,加重防疫和醫療量能的負擔。
當然如果測試試劑的準確率提高,誤判率降低的話,可能會好些,不過以這個例子裡的數字,跟實際狀況沒有差很多。
由貝氏定理看來台灣在染疫的人還不多的情況下不做普篩,積極採用邊境管制、疫調與個人清潔和隔離的方法是很有效率的政策。
這讓我想到 機率思考 和 快思慢想 這兩本書,我們常常在看到測試劑說有 95% 的準確率,2%誤判好像也蠻低的,就覺得普篩找出染疫者準確率應該很高吧。 但在群體只有 1% 染疫的情況下,用貝氏定理真正算一算機率,測試出為陽性中真正染疫的竟然只有 32.4%,真的出乎我們大腦的直覺判斷外。
以上這些資料是 史丹佛的統計學導論 第二週中包含的內容,這是堂奠定基礎技能,為攻讀統計思維和機器學習方面的更高級主題做好準備的課程。
是否覺得機率統計很有趣了呢 ?