JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

全機率定律

當你無法正面算出一個機率時,就把整個世界切成幾個乾淨的情況,算出每個情況裡的機率,再用加權平均把它們縫回去。這個縫合的動作就是全機率定律——而它正是下一篇貝氏定理背後的引擎。

問題:一個你無法直接看見的機率

在上一篇指南裡,你認識了條件機率,以及條件會縮小樣本空間這個想法:一旦你知道 B 發生了,你就丟掉 B 以外的每個結果,再把剩下的重新放大。當有人把條件直接交到你手上時,這是個極好用的工具。但真實的問題常常是反過來跑的。你可以輕易說出在*每一種*情境裡某件事有多可能發生,然而情境本身卻是不確定的,而你真正想要的,是橫跨所有情境、樸素的、沒有附帶條件的機率。

想像一個具體的例子。一間工廠用兩台機器製造燈泡。A 機台生產 70% 的燈泡,其中 2% 是瑕疵品;B 機台生產另外 30%,其中 5% 是瑕疵品。你從當天的產出中隨機拿起一顆燈泡。它是瑕疵品的機率是多少?你並不知道它是哪台機器做的——這正是不確定之處。你只知道在*已知*是哪台機器的條件下的瑕疵率。所以你無法從任何單獨一行讀出 P(瑕疵);你必須把兩個故事結合起來。

訣竅是把那個不確定的情境想成*第一件*發生的隨機事——也就是燈泡是哪台機器做的——而把你關心的事想成*第二件*。我們已經懂得如何用乘法法則來處理兩階段的隨機性:P(A 且 B) = P(A) * P(B 在 A 之下)。全機率定律不過就是把乘法法則套用到每一條分枝上,再把它們加起來。

首先你需要一個乾淨的劃分

整個方法的根基,在於用正確的方式把樣本空間切成幾塊。一個劃分是一組事件 B_1, B_2, ..., B_k,它們彼此互斥(沒有任何兩個能同時發生)且互盡(它們合起來涵蓋了一切,所以其中之一必定發生)。把它想成切一塊披薩:每片不重疊,而且整塊披薩沒有一絲一毫沒被蓋到。在工廠裡,「A 製造」和「B 製造」構成了一個樣本空間的劃分——每顆燈泡都恰好由兩台機器中的一台製造。

為什麼這兩個條件都重要?互斥意味著等我們稍後把各塊相加時,不會有任何東西被重複計算——沒有哪顆燈泡會被算到兩台機器頭上。互盡意味著等我們相加時,不會有任何東西被遺漏——每顆燈泡都在某處被算到了。最簡單的劃分,就是一個事件和它的補集,A 與非 A,也就是兩片而已。大多數真實的劃分都是這種寥寥幾片的;你很少需要花俏的劃分。

定律本身:條件機率的加權平均

現在來看陳述。設 B_1, ..., B_k 是一個劃分,而 A 是你關心的任意事件。全機率定律說:P(A) = P(A 且 B_1) + P(A 且 B_2) + ... + P(A 且 B_k)。這個邏輯簡單到幾乎不可思議。各個 B_i 鋪滿了整個空間,所以事件 A 被切成了「A 且 B_1」、「A 且 B_2」等等這些碎片;這些碎片不重疊(因為各 B_i 不重疊),所以它們的機率直接相加,就湊回完整的 A。

但我們很少直接知道 P(A 且 B_i);我們知道的是條件機率。所以用乘法法則把每個聯合碎片展開,P(A 且 B_i) = P(B_i) * P(A 在 B_i 之下),你就得到了你真正會用的形式:P(A) = 對所有 i 求和的 P(B_i) * P(A 在 B_i 之下)。把它大聲念出來,你就聽見了它的意思:P(A) 是各條件機率 P(A 在 B_i 之下) 的加權平均,而每個權重就是那條分枝有多可能發生,也就是 P(B_i)。可能的分枝佔的份量大;罕見的分枝佔的份量小;而這些權重 P(B_i) 的總和是 1,因為這個劃分是互盡的。

P(A) = P(B_1) * P(A given B_1)
     + P(B_2) * P(A given B_2)
     + ... + P(B_k) * P(A given B_k)

        weights P(B_i) sum to 1
        each P(A given B_i) is the chance of A inside branch i
實用的形式:用每條分枝發生的機率 P(B_i) 當權重,再求和。

把工廠的例子從頭算到尾

設 A 為「燈泡是瑕疵品」,並對機器做劃分。題目給了我們權重 P(A 機台) = 0.70 與 P(B 機台) = 0.30,以及條件機率 P(瑕疵 在 A 機台之下) = 0.02 與 P(瑕疵 在 B 機台之下) = 0.05。直接代入定律。一個有幫助的畫面:想像有 1000 顆燈泡流過。大約 700 顆來自 A 機台、300 顆來自 B 機台;那 700 顆裡,大約 2% = 14 顆是瑕疵品;那 300 顆裡,大約 5% = 15 顆是瑕疵品。也就是 1000 顆裡有 29 顆瑕疵品,即 0.029——而公式會給出恰好相同的數。

  1. 為目標事件 A 命名(「瑕疵」),並選定劃分(哪台機器:A 機台、B 機台)。
  2. 寫下每條分枝的權重:P(A 機台) = 0.70、P(B 機台) = 0.30。檢查它們的總和是 1。
  3. 寫下每個條件機率:P(A 在 A 機台之下) = 0.02、P(A 在 B 機台之下) = 0.05。
  4. 在每條分枝內部相乘,再相加:0.70 * 0.02 + 0.30 * 0.05 = 0.014 + 0.015 = 0.029。
  5. 用 1000 顆燈泡的畫面驗算:14 + 15 = 29,共 1000 顆——吻合。

注意答案 0.029 落在哪裡:在兩個瑕疵率 0.02 與 0.05 之間,而且更靠近 0.02,因為 A 機台主導了產量。這正是加權平均的標誌,也是一個免費的錯誤檢查。如果你算出的全機率竟落在各分枝條件機率的範圍之外——例如這裡算出 0.06——那你一定是哪裡算錯了,因為平均值絕不可能超過它最大的成分,也不可能低於它最小的成分。

為什麼這是通往貝氏的門

全機率定律是向前跑的:從原因(哪台機器)到結果(瑕疵)。它回答「在這個設定下,症狀有多可能出現?」緊接著的下一篇指南會把箭頭反過來。你觀察到一顆瑕疵燈泡,然後問:「它是 B 機台做的機率有多大?」——從結果回推原因。這個反轉就是貝氏定理,而它正是直接架在你剛剛做的事情之上:貝氏定理裡的分母,恰恰就是你在這裡算出的全機率 P(A)。

所以這番功夫不只是為了得到一個數字。藉由把 P(A) 算成在一個劃分上的加權平均,你其實已經建好了每一次貝氏計算裡比較難的那一半。等你學到貝氏時,你只要把其中一條分枝的貢獻 P(B_i) * P(A 在 B_i 之下),除以總和 P(A)——就把一個向前的權重,變成了一個向後的、更新過的信念。現在就把「劃分再求和」這個動作練到精熟,貝氏就會像一句順手補上的後話那麼簡單。