📨 機率式分類器 · iPAS 常考

樸素貝氏:用機率判斷「最可能是哪一類」

它是垃圾郵件過濾的經典演算法。核心很單純:用貝氏定理算「看到這些特徵,最可能屬於哪一類」,選機率最高的那個。它「天真」地假設特徵彼此獨立,因此超快、又省資料,文字分類特別好用。

貝氏定理先驗×概似→後驗為何「樸素」零機率/平滑三種變體垃圾信過濾

🤔 一、它怎麼判斷一封信是不是垃圾?

先用最經典的例子,把「貝氏定理」的直覺建起來。

💡 白話定義

樸素貝氏(Naive Bayes)是一個機率式分類器:看到一筆資料的特徵,它去算「這筆資料屬於各個類別的機率」,然後選機率最大的那一類當答案。算機率的工具,就是貝氏定理

📨 垃圾信例子

想判斷一封含「免費、中獎」的信是不是垃圾。貝氏定理說:
P(垃圾 | 出現「免費、中獎」)P(「免費、中獎」 | 垃圾) × P(垃圾) 模型從訓練信件學到:垃圾信裡「免費、中獎」很常見、正常信很少見。所以這封信算出來「是垃圾」的機率遠高於「正常」→ 判為垃圾

三個關鍵名詞(一定要分清)

先驗 PriorP(類別)還沒看資料前,這類本來的比例(例:垃圾信佔 20%)。
概似 LikelihoodP(特徵 | 類別)在某類裡,看到這些特徵的機率(垃圾信裡出現「免費」的機率)。
後驗 PosteriorP(類別 | 特徵)看到特徵後,屬於某類的機率——這就是我們要的答案。

一句話:後驗 ∝ 概似 × 先驗。比較各類的後驗,挑最大的。

😇 二、為什麼叫「樸素(Naive)」?

問題來了:要算 P(「免費」和「中獎」一起出現 | 垃圾) 很難。樸素貝氏用一個大膽的偷懶解決它。

🧩 天真假設:特徵彼此獨立

天真地假設每個特徵互不相干,於是「一起出現的機率」就可以拆開、各算各的、再相乘P(免費, 中獎 | 垃圾) ≈ P(免費 | 垃圾) × P(中獎 | 垃圾) 這樣只要分別數「免費在垃圾信的機率」「中獎在垃圾信的機率」就好,計算超快、需要的資料也少

⚠️ 這假設其實常常不成立

現實中特徵常相關(「免費」和「中獎」在垃圾信裡常一起出現;「身高」和「體重」也相關)。所以這假設很「天真」。但神奇的是——即使假設不完全對,樸素貝氏在很多任務(尤其文字)還是表現得意外地好,因為分類只要「哪類機率比較大」對就行,不需要機率算得完全精準。

⚙️ 三、運作三步驟

1
算先驗 P(類別)
數一下訓練資料中各類的比例。例如垃圾信 20%、正常信 80%。
2
算概似並相乘
對每個特徵算 P(特徵 | 類別),然後全部相乘(這裡就用到「樸素獨立」假設)。連續數值(如身高)則用高斯分布算機率——就是下面 demo 邊緣那條鐘形曲線。
3
比後驗,選最大
每類算出「概似 × 先驗」,哪一類大就判哪一類。(要變成百分比,再各除以總和正規化即可。)

🎮 四、動手玩:移動滑鼠看它怎麼算

這個 demo 用「連續數值」版(高斯樸素貝氏)。先看圖例,再把滑鼠移到圖上不同位置。

🗺️ 怎麼看這張圖

藍點 / 紅點 = 兩個類別的訓練資料。
邊緣的鐘形曲線 = 各類在 X、Y 上的高斯分布(模型學到每類的「長相」:中心 μ、寬度 σ)。
移動滑鼠到任一點 → 右邊面板算這點在各類下的 P(x|類)、P(y|類)(有多「像」該類),相乘得 Score,正規化成後驗百分比條,大的就是預測。

試試:把滑鼠移到藍群中心(P(A) 接近 100%)、移到兩群中間(接近 50:50)。按「重新生成」換一批資料。

游標位置機率計算

類別 A(藍色)

P(x|A) [水平]: 0.00
P(y|A) [垂直]: 0.00
Score ~ P(x|A)×P(y|A): 0.00

類別 B(紅色)

P(x|B) [水平]: 0.00
P(y|B) [垂直]: 0.00
Score ~ P(x|B)×P(y|B): 0.00

最終後驗機率 (Posterior)

P(A | data) 50%
P(B | data) 50%
移動滑鼠以預測

0️⃣ 五、連乘的陷阱:零機率問題

這是樸素貝氏(尤其文字版)很常考、也很實務的一個坑。

💥 一個 0 就毀掉全部

因為概似是連乘,只要其中一項 P(特徵 | 類別) = 0,整串相乘就變 0。例如某個詞在「正常信」的訓練資料裡剛好從沒出現過,模型就會算出 P(該詞 | 正常)=0,於是不管其他證據多強,這封信都不可能被判成正常信——太武斷了。

✅ 解法:拉普拉斯平滑(加一平滑)

給每個詞的計數都先加 1(Laplace / add-one smoothing),讓「沒見過的詞」也有一點點小機率、不會是 0。這樣就不會因為一個沒見過的詞而整個歸零。這是樸素貝氏的標準配備。

🧬 六、三種常見變體

差別只在「概似 P(特徵|類別) 用什麼機率模型」。

高斯 NB(Gaussian)特徵是連續數值(身高、體重),假設高斯分布——本頁 demo 用的就是它。
多項式 NB(Multinomial)特徵是計數(每個詞出現幾次),文字分類最常用
伯努利 NB(Bernoulli)特徵是二元(某詞有沒有出現),適合短文本。

⚖️ 七、優缺點與應用

✅ 快又省資料訓練/預測都很快,需要的資料不多,常拿來當強基準。
✅ 擅長高維文字對高維稀疏資料穩健 → 垃圾信過濾、情感分析。
⚠️ 獨立假設常不成立相關特徵會被「重複計算」,機率未必校準準。
⚠️ 只輸出相對大小可靠分類對就好;當「機率值」直接用要小心。
🔬 進階:數學式(高斯樸素貝氏,想深入再點)
貝氏定理: $$ P(C \mid D) = \frac{P(D \mid C)\,P(C)}{P(D)} $$
樸素獨立假設: $$ P(x, y \mid C) \approx P(x \mid C)\cdot P(y \mid C) $$
高斯機率密度(邊緣那條鐘形曲線): $$ P(x \mid c) = \frac{1}{\sqrt{2\pi\sigma_c^2}}\exp\!\left(-\frac{(x-\mu_c)^2}{2\sigma_c^2}\right) $$ $\mu_c$ 是平均(中心)、$\sigma_c$ 是標準差(寬度)。分母 $P(D)$ 對各類都一樣,比大小時可省略。

🧪 八、觀念自我檢測

先想再點開。

Q1. 「樸素(naive)」是指什麼假設?

特徵在給定類別下互相獨立(條件獨立)。因為這個假設,聯合概似才能拆開成各特徵機率直接相乘,計算大幅簡化。

Q2. 為什麼樸素貝氏很適合文字分類?

文字特徵維度高、樸素貝氏訓練快、省資料、對高維稀疏資料穩健,所以垃圾信過濾、情感分析常用它。

Q3. 什麼是零機率問題?怎麼解?

某特徵在某類訓練資料從沒出現 → P(特徵|類)=0 → 連乘整個歸零。用拉普拉斯(加一)平滑,讓每個計數先加 1,避免 0。

Q4. 樸素貝氏和邏輯迴歸都做分類,差在哪?

樸素貝氏是生成式(學各類的特徵分布、再用貝氏定理回推);邏輯迴歸是判別式(直接學決策邊界)。NB 更快更省資料;LR 不假設獨立、通常分類更準。

✅ 九、30 秒重點整理

用貝氏定理選最大後驗後驗 ∝ 概似 × 先驗,挑機率最高的類。
「樸素」=特徵條件獨立所以概似可以直接相乘,超快。
假設常不成立卻很有效尤其文字分類,只要比大小對就行。
零機率 → 拉普拉斯平滑加一避免連乘歸零。
三變體高斯(連續)/ 多項式(詞頻)/ 伯努利(有無)。
主場垃圾信過濾、情感分析、快速基準模型。

📝 iPAS 考點提醒

樸素貝氏基於貝氏定理加特徵條件獨立假設,iPAS 中級科目三考點。重點:計算各類的後驗機率選最大者,簡單、快、適合高維(尤其文字分類、垃圾郵件)。易混點:樸素指假設特徵互相獨立(現實常不成立),但即使假設不完全成立實務上仍常出乎意料地有效;與邏輯迴歸都做分類但原理不同。情境:文字分類、即時、資料量大的場景。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

樸素貝氏的原理是什麼?

以貝氏定理計算「在已知特徵下屬於某類」的後驗機率,選機率最大的類別;並樸素地假設各特徵在給定類別下彼此獨立以簡化計算。

「樸素(naive)」指的是什麼?

指那個強假設——特徵條件獨立。現實中特徵常相關,但即使假設不完全成立,模型在許多任務(尤其文字)仍表現得意外地好。

為什麼常用於文字分類?

文字特徵維度高、樸素貝氏訓練快、需要的資料不多、對高維稀疏資料穩健,故常用於垃圾郵件過濾、情感分類。

什麼是零機率問題、怎麼解決?

若某詞在訓練中沒和某類別共同出現,機率為 0 會讓整體連乘歸零;用拉普拉斯平滑(加一)等平滑法避免。

樸素貝氏的優缺點?

優點:快、省資料、可當強基準、能輸出機率。缺點:特徵獨立假設常不成立、相關特徵會被重複計算、機率校準未必準。

🧭 相關主題

← 返回 AI 學習與考證地圖