你看到一套防毒軟件,這個軟件聲稱會對你下載的所有檔案都掃描一次,病毒偵測準確度達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)是指我們經過反覆試驗得出的機率。當我們在遊戲之中,面對兩個門的選擇,這個情景如果不會重複出現,不能重複試驗,不論你是用貝氏定理把機率計出來,還是憑空亂猜一個機率,那個機率都是主觀機率,使用定理不會使你的機率變「客觀」了啊。(笑)

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


  • Calvin

    Good article, learn a lot from posts u wrote….thanks a lot

  • Calvin

    Good article, learn a lot from posts u wrote….thanks a lot

  • http://mmdays.com Mr. Monday

    老實說, 我發現 Mr. Tomorrow 的文章一篇比一篇還精采,還犀利,真是棒啊!

  • http://mmdays.com Mr. Monday

    老實說, 我發現 Mr. Tomorrow 的文章一篇比一篇還精采,還犀利,真是棒啊!

  • chan

    很喜歡你對貝氏定理精彩的解說。
    然而對上文我有一點不太理解,還希望你的指教。

    檔案有病毒的機率的 0.005
    有病毒時,警報響起的機率是 0.99
    如此,「有病毒同時警報響起」的機率可以計算是沒問題的。

    但只知道「有病毒時,警報響起的機率是 0.99」
    如何得知「沒有病毒時,警報響起的機率是 0.01」??
    是 1 – 0.99 = 0.01 得到的嗎??
    這點我有點困惑。

    因此不太理解文中 第二個表格(警報有無響起/檔案有無病毒) 的計算過程。

  • chan

    很喜歡你對貝氏定理精彩的解說。
    然而對上文我有一點不太理解,還希望你的指教。

    檔案有病毒的機率的 0.005
    有病毒時,警報響起的機率是 0.99
    如此,「有病毒同時警報響起」的機率可以計算是沒問題的。

    但只知道「有病毒時,警報響起的機率是 0.99」
    如何得知「沒有病毒時,警報響起的機率是 0.01」??
    是 1 – 0.99 = 0.01 得到的嗎??
    這點我有點困惑。

    因此不太理解文中 第二個表格(警報有無響起/檔案有無病毒) 的計算過程。

  • Mr. Tomorrow

    謝謝大家。

    chan: 你感到困惑是很正常的,因為………是我沒有寫清楚。
    文中的「99% 準確度」是指「99% 給出正確的提示」。所以已包含了「在有病毒時,99% 機會會響起警報」和「在沒有病毒時,99% 機會不會響起警報」這兩項資訊了,因為在沒有病毒時,「不響起驚報」便是「正確的提示」。
    謝謝你指出這一點,這是應該說清楚的。

    收集一下大家的意見: 我有構思過的題目有 t-test,Wilcoxon test, 回歸分析,anova,Granger causality,移動平均線和bollinger(有買股票的人該有聽過吧),又或者是介紹一些好像熱門文章中 「M型你個大頭」那篇文章中指出的一些統計學欺騙手段,overgeneralization之類。這麼多topic是不可能通通都寫的,如果讀者們在這堆題材中有哪個特別喜歡的可以告訴我啊。

  • http://csie-tw.blogspot.com/ tommy

    誤鳴=flase alert

  • http://csie-tw.blogspot.com/ tommy

    誤鳴=flase alert

  • bruse

    我在猜 下一次 Mr. Tomorrow會不會寫 矩陣

  • bruse

    我在猜 下一次 Mr. Tomorrow會不會寫 矩陣

  • http://mmdays.com Mr. Saturday

    我一直認為:
    把困難的東西講到沒有人聽得懂,是任何人都辦得到的事情;能用任何外行人都能夠清楚瞭解的文字來解釋困難的概念,才算得上是真功夫。Mr. Tomorrow 的文章真是令人激賞,佩服佩服。:D

  • http://mmdays.com Mr. Saturday

    我一直認為:
    把困難的東西講到沒有人聽得懂,是任何人都辦得到的事情;能用任何外行人都能夠清楚瞭解的文字來解釋困難的概念,才算得上是真功夫。Mr. Tomorrow 的文章真是令人激賞,佩服佩服。:D

  • idreamer

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

    這便是說,即使病毒測試的準確度是99%,當警報響起時,仍然有77% 機會是誤鳴。
    ==
    33% + 77% != 100% 啊 … =p

  • idreamer

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

    這便是說,即使病毒測試的準確度是99%,當警報響起時,仍然有77% 機會是誤鳴。
    ==
    33% + 77% != 100% 啊 … =p

  • Mr. Tomorrow

    idreamer: 那是typo(…..其實這個不算是typo,是計錯了減數=p)….對不起……應是67% 才對,謝謝你的指正。

  • http://fcamel.twbbs.org fcamel

    真棒的介紹,清楚又有深度!

    謝謝分享心得

  • http://fcamel.twbbs.org fcamel

    真棒的介紹,清楚又有深度!

    謝謝分享心得

  • iguest

    男生女生那邊看的好想睡,病毒那邊就有趣多了!

  • iguest

    男生女生那邊看的好想睡,病毒那邊就有趣多了!

  • Steven

    一個從一本很棒的書”隱藏的邏輯”這本書p87裏看到的一個問題, 書中的答案令人吃驚但書裏解釋相當簡化, 能否請Tomorrow大大幫忙解答.

    …現在對愛滋病毒(HIV)的血液篩檢已經相當準確; 如果一個人本身就是愛滋病患者, 檢驗結果(即HIV呈陽性反應)的準確度是99.9%. 而如果某人並沒有感染愛滋病, 檢驗結果(HIV呈陰性反應)的準確度更高達99.99%.
    現在, 若在街頭上隨便找個人, 為他做HIV篩檢, 如果得到的結果是陽性反應, 那麼他真的是愛滋病帶原者的機率有多大?

  • Steven

    一個從一本很棒的書”隱藏的邏輯”這本書p87裏看到的一個問題, 書中的答案令人吃驚但書裏解釋相當簡化, 能否請Tomorrow大大幫忙解答.

    …現在對愛滋病毒(HIV)的血液篩檢已經相當準確; 如果一個人本身就是愛滋病患者, 檢驗結果(即HIV呈陽性反應)的準確度是99.9%. 而如果某人並沒有感染愛滋病, 檢驗結果(HIV呈陰性反應)的準確度更高達99.99%.
    現在, 若在街頭上隨便找個人, 為他做HIV篩檢, 如果得到的結果是陽性反應, 那麼他真的是愛滋病帶原者的機率有多大?

  • Mr. Tomorrow

    steven: 這本書說的例子和我的電腦病毒例子差不多一模一樣。

    你試試用上面有病毒/無病毒 和 警報響起/警報沒響起 那個表。只要把數字擺進去便會得到結果啊。

    但這本書有沒有告訴你愛滋病的prior 呢,就是說在街頭上隨便找個人,不做任何檢驗,他是愛滋病者的機率。如果沒有這個機率便不能完成計算。

    我沒有仔細的計,但如果這個機率是在0.01% 以下,這樣你便會得到和文中一樣的結果,就是說「即使測試準確度這麼高,他真的是愛滋病的機率仍是低於50%。」

  • stevenlin

    花了很久時間看完這貝式定理兩篇,然後看到回應的時候嚇了一跳,
    原來在這裡叫steven的不只我一個XD

  • stevenlin

    花了很久時間看完這貝式定理兩篇,然後看到回應的時候嚇了一跳,
    原來在這裡叫steven的不只我一個XD

  • joehwu

    Steven!我確定書裡面對於這個問題已經有詳細的解說和答案了,而且解法就和Mr. Tomorrow一模一樣,你是故意拿來考他的嗎?XD,另外,書裡面有提到「路上隨便找一個人,他有得到愛滋的機率薇0.01%」,因此這個問題的答案就是Mr. Tomorrow說得50%!

  • joehwu

    Steven!我確定書裡面對於這個問題已經有詳細的解說和答案了,而且解法就和Mr. Tomorrow一模一樣,你是故意拿來考他的嗎?XD,另外,書裡面有提到「路上隨便找一個人,他有得到愛滋的機率薇0.01%」,因此這個問題的答案就是Mr. Tomorrow說得50%!

  • http://sierrawu.blogspot.com Sierra

    所以實際醫療上不會無故在路上抓一個人,就驗AIDS,為了經濟效益,檢測前會利用條件篩選出較高危險的族群,如此可以增加真正AIDS的出現率。花在比如驗妓女、嫖妓者,比驗沒性行為(或者性伴侶固定,當然性伴侶的性伴侶也要固定)的一般人,好太多了。
    防毒軟體就沒差了,速度夠快,檔案有限,只要肯多付出時間掃一些正常檔案,來抓出少,但危害大的病毒。
    檢驗陽性,而真正有病的機率,就是陽性預測值 (PPV, Positive predictive value),也是”臨床上”直接最關心的。為何說是”直接”,因為沒有好的檢驗方法,和相對較高的盛行率,也沒有好的PPV。

  • http://sierrawu.blogspot.com Sierra

    所以實際醫療上不會無故在路上抓一個人,就驗AIDS,為了經濟效益,檢測前會利用條件篩選出較高危險的族群,如此可以增加真正AIDS的出現率。花在比如驗妓女、嫖妓者,比驗沒性行為(或者性伴侶固定,當然性伴侶的性伴侶也要固定)的一般人,好太多了。
    防毒軟體就沒差了,速度夠快,檔案有限,只要肯多付出時間掃一些正常檔案,來抓出少,但危害大的病毒。
    檢驗陽性,而真正有病的機率,就是陽性預測值 (PPV, Positive predictive value),也是”臨床上”直接最關心的。為何說是”直接”,因為沒有好的檢驗方法,和相對較高的盛行率,也沒有好的PPV。

  • Mr. Tomorrow

    Sierra 說得很對!!!

    雖然有些軟體會有”smart scan” 之類的選項,只檢測.exe .dll 等高危檔案。但相對aids 病毒檢測而言,電腦病毒測試對經濟效益的考量沒有那麼重要,分別也沒有那麼明顯。

  • bbn019

    感謝版主的兩篇文章,淺顯易懂,對我幫助很大

    不過我覺得文章中對”病毒偵測準確度達99%”的定義不明
    準確度99%也可以解釋成剩餘的1%包含所有的不準確(當然也包含沒偵測到病毒跟誤判這兩種情形)
    如此得到的結果會大不相同
    我覺得十分有必要在計算之前,先了解資料來源的99%是如何計算出來,以及剩於1%包含什麼

    樓上愛滋病的問題,我也一樣認為應該優先搞清楚HIV檢驗的方法是什麼? 這些機率是怎麼求得的? 不準確的0.1%或0.01%是什麼?

  • bbn019

    感謝版主的兩篇文章,淺顯易懂,對我幫助很大

    不過我覺得文章中對”病毒偵測準確度達99%”的定義不明
    準確度99%也可以解釋成剩餘的1%包含所有的不準確(當然也包含沒偵測到病毒跟誤判這兩種情形)
    如此得到的結果會大不相同
    我覺得十分有必要在計算之前,先了解資料來源的99%是如何計算出來,以及剩於1%包含什麼

    樓上愛滋病的問題,我也一樣認為應該優先搞清楚HIV檢驗的方法是什麼? 這些機率是怎麼求得的? 不準確的0.1%或0.01%是什麼?

blog comments powered by Disqus