貝氏定理(下) – 99%的準確度

你看到一套防毒軟件,這個軟件聲稱會對你下載的所有檔案都掃描一次,病毒偵測準確度達99%

這個「99%」令你眼前一亮,心想︰「這個軟件看來相當可靠,準確度99%呢﹗﹗」於是你便把它買下,並成功把它安裝了。

安裝了這個軟件一段日子,有一天,這個軟件突然響起警報,這個時候最正常的問題便是「我下載的檔案真的帶有病毒嗎?」又或者說,這個軟件誤鳴的機率有多高?

你認為誤鳴率就是 1- 99% = 1% 嗎?

在探討這個防毒軟件問題前,先回到貝氏定理(上) – Monty Hall 的三扇門中的女生看書例子。還記得那個例子嗎?我們可以用這個表描述該例子的情況:

總和
不喜歡看書 0.2 0.1 0.3
喜歡看書 0.3 0.4 0.7
總和 0.5 0.5

這個表的意思是 (事件A是喜歡看書,not A 是不喜歡看書,B是指女生,not B 是指男生):
有20% 的人既是男生,又不喜歡看書。 (P(not B|not A)*P(not A))
有10% 的人既是女生,又不喜歡看書。(P(B|not A)*P(not A))
有30% 的人既是男生,又喜歡看書。(P(not B|A)*P(A))
有40% 的人既是女生,又喜歡看書。(P(B|A)*P(A))
女生佔50% (0.4+0.1)
男生佔50% (0.3+0.2)
不喜歡看書的人佔 30% (0.2+0.1)
喜歡看書的人佔 70% (0.3+0.4)

所如果現在我隨機選一個人,剛巧選到一個女生,要估計這個女生喜歡看書的機率,用貝氏定理
P(A|B)=P(B|A)*P(A)/P(B)
配合 P(B)=(P(B|A)*P(A)+P(B|not A)*P(not A))

只要把數字代進公式便得到 0.4/0.1+0.4 = 0.8,和上篇得到的答案一樣是80% 。(當然是一樣了,因為是同一個定理,只是從不同角度去看而己)

留意即使你不懂那些煩人的機率公式,這兒也有一個很直觀的理解方法,便是
「女生有兩種,一種是不喜歡看書,佔0.1 ,第二種是喜歡看書,佔0.4,喜歡看書的便是全部女生中的4/5 了,所以當我們剛巧選到一個女生,我們便知道有80% 的機會她是喜歡看書的。」

很多時候,用一個表把機率列出來,是理解機率問題的最佳辦法。

回到一開始的問題。首先,故事裏防毒軟件廣告中的99% 是指,當有病毒入侵時,有99% 會響起警報,而不是響起警報時,有99%機會是真的有病毒,這兩個概念是完全不同的。
如果下載的檔案有0.005 的機會是帶有病毒(這是為了簡化問題,就把它看們是平均每200個下載的檔案中便有一個帶有病毒吧)。上述的情況便可以用以下的表來描述:

警報響起 警報沒響起 總和
有病毒 0.99*(0.005) 0.01*(0.005) 0.005
沒有病毒 0.01*(0.995) 0.99*(0.995) 0.995

有病毒的機率是 (0.005),當中99%警報會響起,所以
「有病毒同時警報響起」的機率便是 0.99*(0.005)=0.00495
同理
「有病毒同時警報沒響起」的機率便是 0.01*(0.005)=0.00005
「沒有病毒同時警報響起」的機率便是 0.01*(0.995)=0.00995
「沒有病毒同時警報沒響起」的機率便是 0.99*(0.995)=0.98505

結果就是

警報響起 警報沒響起 總和
有病毒 0.00495 0.00005 0.005
沒有病毒 0.00995 0.98505 0.995

運用貝氏定理公式,我便知道
P(有病毒|警報響起)= 0.00495/(0.00495+0.00995)=33%
(又或者用文字說,警報響起有兩種情況,一是有病毒,佔0.00495,二是沒有病毒,佔0.00995,有病毒的情況佔總和的33%)

這便是說,即使病毒測試的準確度是99%,當警報響起時,仍然有67%機會是誤鳴。

這個例子告訴我們什麼呢?以下三個結論,是同等重要的。

  1. 軟件在病毒出現時有很大機會響起警報,並不代表軟件響起警報時很大機會是有病毒出現。
  2. 當有病毒時,軟件有大一點的機會響起警報的話,軟件響起警報時,真的是有病毒的機會也會提升。也就是說99%的確不代表「很準確」,但它仍是比80% 的準確度好一些。
  3. 不要單看99%這個數字,便說某個測試是不是「很準確」,我們要看這個測試是要測什麼才下定論。

為什麼我要特別提出這三個結論是同樣重要呢?因為通常人們在分析這種例子時,常常把重點放在第一點來解說。可能因為這是一個較令人驚奇的結論吧,很容易會使人想到「99% 不代表什麼!!原來這個這個機率是騙人的!!我們不要理會它!!」。但不要忘記這是因為故事中病毒出現率是0.005,所以才會造成這樣的效果。如果病毒出現率是5% 或10%,你會發現用這個99%準確的軟件是確實是很準確的。就像以下的例子:

如果病毒出現率是0.1 而不是0.005

警報響起 警報沒響起 總和
有病毒 0.099 0.001 0.1
沒有病毒 0.009 0.891 0.9

這樣P(有病毒|警報響起)= 0.099/(0.099+0.009)=92%

在這個情況下,警報響起時,只有8% 機會是誤鳴,和剛才的67%差很遠。所以這個99%的準確度雖然不代表誤嗚率一定很低,但我們不可以說這個99%是完全沒有意義的。

所以較好的說法是,當我們要測試的事情出現率很低 (好像0.005),這樣一個99% 準確度的測試仍然會造成很高的誤鳴率,但如果要測試的事情出現率較高(好像0.1),這個一個99% 準確度的測試已經很好了。測試的準確度是相對要測試的事情而言的,沒有一個絕對的「準確」和「不準確」的分界。在不知道要測試的事情出現機率下,我們是不能說某個測試的「準確度」是不是很高的。

而在我們選購這些防護軟件時,通常人們都會留意防護軟件的準確度,但其實病毒出現的機率也很重要。例如A 軟件比B 軟件可以測出多20% 種病毒,但其實那20%種病毒都是那些極罕見的病毒,出現率只有0.0000001%,這樣A軟件也不見得比B 軟件好很多。這個情況很常見,因為一般防毒軟件都是先做到可以處理常見的病毒,才處理那些很少出現的病毒的。

換個角度看,我們在判斷防毒軟件是否誤鳴時,不能單靠軟件的準確度,也要配合「病毒出現的機率」這項資訊。簡單來說,如果防毒軟件警報是在平常作業時響起,你可能還會以為它是誤鳴。但如果它在你正在瀏覽某些危險網站時響起,即使我們是在仍用同一個防毒軟件,我們對這個軟件是誤鳴的機率估計也會降低很多。

另外,在選擇防毒軟件時,很多時候我們會傾向選擇多疑一點的。也就是說寧可它誤嗚多一點,但不要在真的病毒時測不出來。這是因為誤嗚對我們造成的不便,遠比電腦中毒來得小。在上面的計算中,我是沒有理會這個分別的(正如在上篇中我也沒有把「主動責任」計算在Monty Hall problem中一樣)。但這涉及到所謂Type 1 error 和Type2 error,另文再說好了。

這兩篇有關貝氏定理的文章我羅列了很多不同的角度去看這個定理,我也不厭其煩地多說一遍,在學習定理時,不要只固守一個方式。有些人愛用數式証明,因為它們嚴謹清晰;有些人愛用直觀解說,因為它能把定理和日常的思考方法連在一起。我則有點偏愛模擬的方法,把統計問題中的情況用電腦甚至是用紙筆模擬運作數百次,讓我可以把結果看清楚。每個人都可以選擇自己喜歡的方式。

但當用自己喜歡的方式學懂了一個概念之後,便要嘗試看看自己是否明白其他角度的想法。畢竟如果我們真的明白一個定理的話,總不會因為它轉換了皮膚不認得它的。最常見的說法便是因為不喜歡用數式便每事都只用文字說過便算,又或是覺得計出了答案之後,便不用管內裏的原理。對我來說,嚴謹的計算和直觀的解說也是同樣重要的。硬要用一個不合自己的方法和定理糾纏,和用懂了一個方法便認為不用理會其他,同樣是對學習有害的。

補充1︰

運用和這篇中的列表方式,我們可以把上篇中的monty hall problem用這個表描述一次,假設你選了一號門

主持人打開2號門 主持人打開3號門 總和
1 號門中有獎金 1/6 1/6 1/3
2 號門中有獎金 0 1/3 1/3
3 號門中有獎金 1/3 0 1/3
總和 1/2 1/2

解說:
「1 號門中有獎金」同時「主持人打開2號門」的機率是 (1/2)(1/3)=(1/6)
「1 號門中有獎金」同時「主持人打開3號門」的機率是 (1/2)(1/3)=(1/6)
「2 號門中有獎金」同時「主持人打開2號門」的機率是 0,因為當2號門有獎金時,主持人便不會選2 號門了。如此類推。

所以,你選了1號門,在主持人打開2 號門之後,1號門有獎金的機率是 (1/6)/((1/6)+1/3))=1/3,而3號門有獎金的機率是 (1/3)/((1/6)+1/3))=2/3,同樣得到轉換結果可以使得獎機率加倍的結果。

和女生看書的例子同一原理,我們也可以把貝氏定理的計算解釋為︰
「主持人打開2號門,有以下兩種可能,第一是「1 號門中有獎金」,機率1/6 ,第二是「3 號門中有獎金」,機率1/3,所以「1 號門中有獎金」便在這兩個可能性中佔了1/3 了」

補充2:

這篇文章中我沒有詳細解釋貝氏定理如何把先驗機率(prior) 轉換成後驗機率(posterior),畢竟一篇文章不可能什麼都寫完,相信在將來的文章中總有機會回到這個主題上的。現在可以說的是,貝氏定理不是憑空把一個機率算出來的,而是一個討論如何把機率估計上調或下調的定理。意思是我們本來對門後有獎金的機率有一個想法,好像1/2 (這便是先驗機率),之後我們用貝氏定理,利用「主持人開門」的資訊把估計上調到2/3,(這便是後驗機率)。又或者是本來我們知道70%的人愛看書(先驗機率),知道那人是女生之後,利用這個資訊我們把估計上調到80%(後驗機率)。而因為貝氏定理只是在說如何把先驗機率變成後驗機率,所以我一直都把先驗機率當成一項已知的資訊,沒有討論它的由來。

另外,由於先驗機率是主觀機率(subjective probability),那麼計出來的後驗機率也是一個主觀機率。統計學中客觀機率(objective probability)是指我們經過反覆試驗得出的機率。當我們在遊戲之中,面對兩個門的選擇,這個情景如果不會重複出現,不能重複試驗,不論你是用貝氏定理把機率計出來,還是憑空亂猜一個機率,那個機率都是主觀機率,使用定理不會使你的機率變「客觀」了啊。(笑)

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!