機器學習中的樸素貝葉斯(Naive Bayes)模型

1. 用實例來理解樸素貝葉斯

下面用具體的數據來演示垃圾郵件 vs 正常郵件的概率計算


假設我們有一個小型郵件數據集

郵件內容類別(垃圾/正常)
“免費 贏取 大獎”垃圾
“免費 參加會議”正常
“中獎 點擊 鏈接”垃圾
“明天 開會”正常
“贏取 免費 禮品”垃圾

Step 1: 統計基礎概率

  • 總郵件數:5 封
    • 垃圾郵件:3 封 → P(垃圾) = 3/5 = 0.6
    • 正常郵件:2 封 → P(正常) = 2/5 = 0.4

Step 2: 統計每個詞的條件概率

計算每個詞在垃圾郵件正常郵件中出現的概率:
(例如:P("免費"|垃圾) = 垃圾郵件中出現“免費”的概率)

單詞在垃圾郵件中出現的次數P(單詞|垃圾)在正常郵件中出現的次數P(單詞|正常)
免費3 封(所有垃圾郵件)3/3 = ?1.0?1 封(“免費 參加會議”)1/2 = ?0.5?
中獎1 封1/3 ≈ ?0.33?0 封0/2 = ?0.0?
贏取2 封2/3 ≈ ?0.67?0 封0/2 = ?0.0?
會議0 封0/3 = ?0.0?1 封1/2 = ?0.5?
明天0 封0/3 = ?0.0?1 封1/2 = ?0.5?

:如果某個詞在某一類中未出現(概率=0),會導致整個乘積為0。實際中會使用拉普拉斯平滑(+1)避免此問題,這里暫不展開。


Step 3: 對新郵件進行分類

假設新郵件內容是:“免費 中獎”,判斷它是垃圾還是正常郵件。

計算垃圾郵件概率

P(垃圾∣"免費?中獎")∝P(垃圾)×P("免費"∣垃圾)×P("中獎"∣垃圾)=0.6×1.0×0.33≈0.198 P(垃圾|\text{"免費 中獎"}) \propto P(垃圾) \times P(\text{"免費"}|垃圾) \times P(\text{"中獎"}|垃圾) \\ = 0.6 \times 1.0 \times 0.33 \approx \mathbf{0.198} P(垃圾"免費?中獎")P(垃圾)×P("免費"垃圾)×P("中獎"垃圾)=0.6×1.0×0.330.198

計算正常郵件概率

P(正常∣"免費?中獎")∝P(正常)×P("免費"∣正常)×P("中獎"∣正常)=0.4×0.5×0.0=0.0 P(正常|\text{"免費 中獎"}) \propto P(正常) \times P(\text{"免費"}|正常) \times P(\text{"中獎"}|正常) \\ = 0.4 \times 0.5 \times 0.0 = \mathbf{0.0} P(正常"免費?中獎")P(正常)×P("免費"正常)×P("中獎"正常)=0.4×0.5×0.0=0.0

問題:正常郵件概率=0,因為“中獎”從未在正常郵件中出現過。實際中會調整概率(見后文修正)。

結論
  • 垃圾郵件概率:0.198
  • 正常郵件概率:0.0
    → 判定為垃圾郵件

修正:拉普拉斯平滑(避免概率=0)

對未出現的詞,給所有計數+1(避免零概率):

  • 修正后 P("中獎"|正常) = (0+1)/(2+總唯一詞數)
    (假設總唯一詞數=5,則 P("中獎"|正常) = 1/7 ≈ 0.14

修正后的正常郵件概率:
P(正常∣"免費?中獎")∝0.4×0.5×0.14≈0.028P(正常|\text{"免費 中獎"})\propto 0.4 \times 0.5 \times 0.14 \approx \mathbf{0.028}P(正常"免費?中獎")0.4×0.5×0.140.028
此時垃圾郵件概率(0.198)仍大于正常郵件概率(0.028),依然判定為垃圾郵件。


關鍵點總結

  1. P(類別):類別的初始概率(如垃圾郵件占60%)。
  2. P(單詞|類別):某類郵件中某個單詞出現的概率。
  3. 連乘:假設所有詞獨立,概率相乘得到聯合概率。
  4. 平滑處理:避免未出現的詞導致概率歸零。

這樣計算后,選擇概率更大的類別作為預測結果!

2.用樸素貝葉斯解釋下面的問題

假設有一種病叫做“貝葉死”,它的發病率是萬分之一,即10000 人中會有1個人得病。現有一種測試可以檢驗一個人是否得病的準確率是99.9%,誤報率(假陽)是0.1% 那么,如果一個人被查出來患有“葉貝死”,實際上患有的可能性有多大?

問題重述(“貝葉死”檢測問題)

  • 發病率(先驗概率)
    P(病)=110000=0.0001P(\text{病}) = \frac{1}{10000} = 0.0001P()=100001?=0.0001
    P(健康)=1?P(病)=0.9999P(\text{健康}) = 1 - P(\text{病}) = 0.9999P(健康)=1?P()=0.9999

  • 檢測準確率

    • 真陽性(True Positive):已知患病時,檢測為陽性的概率:99.9% → P(陽性∣病)=0.999P(\text{陽性}|\text{病}) = 0.999P(陽性)=0.999
    • 假陽性(False Positive):已知健康時,檢測為陽性的概率:0.1% → P(陽性∣健康)=0.001P(\text{陽性}|\text{健康}) = 0.001P(陽性健康)=0.001
  • 問題
    如果一個人檢測結果為陽性,實際患病的概率是多少?即求 P(病∣陽性)P(\text{病}|\text{陽性})P(陽性)


用樸素貝葉斯推導

根據貝葉斯定理:
P(病∣陽性)=P(陽性∣病)?P(病)P(陽性) P(\text{病}|\text{陽性}) = \frac{P(\text{陽性}|\text{病}) \cdot P(\text{病})}{P(\text{陽性})} P(陽性)=P(陽性)P(陽性)?P()?
其中,P(陽性)P(\text{陽性})P(陽性)是檢測為陽性的總概率,包括真陽性假陽性
P(陽性)=P(陽性∣病)?P(病)+P(陽性∣健康)?P(健康) P(\text{陽性}) = P(\text{陽性}|\text{病}) \cdot P(\text{病}) + P(\text{陽性}|\text{健康}) \cdot P(\text{健康}) P(陽性)=P(陽性)?P()+P(陽性健康)?P(健康)


具體計算

  1. 計算分子(真陽性部分):
    P(陽性∣病)?P(病)=0.999×0.0001=0.0000999 P(\text{陽性}|\text{病}) \cdot P(\text{病}) = 0.999 \times 0.0001 = 0.0000999 P(陽性)?P()=0.999×0.0001=0.0000999

  2. 計算分母(所有陽性情況):
    P(陽性)=0.999×0.0001+0.001×0.9999=0.0000999+0.0009999=0.0010998 P(\text{陽性}) = 0.999 \times 0.0001 + 0.001 \times 0.9999 = 0.0000999 + 0.0009999 = 0.0010998 P(陽性)=0.999×0.0001+0.001×0.9999=0.0000999+0.0009999=0.0010998

  3. 最終概率
    P(病∣陽性)=0.00009990.0010998≈0.0908(約9.08%) P(\text{病}|\text{陽性}) = \frac{0.0000999}{0.0010998} \approx 0.0908 \quad \text{(約9.08\%)} P(陽性)=0.00109980.0000999?0.0908(約9.08%


直觀解釋

  • 在10000人中

    • 1人患病,且檢測為陽性的概率:1×0.999≈11 \times 0.999 \approx 11×0.9991 人(真陽性)。
    • 9999人健康,但檢測為陽性的概率:9999×0.001≈109999 \times 0.001 \approx 109999×0.00110 人(假陽性)。
  • 所有陽性結果:共 1+10=111 + 10 = 111+10=11 人。

  • 其中真正患病:僅1人。

因此,檢測為陽性時,實際患病的概率是:
111≈9.09%(與公式結果一致) \frac{1}{11} \approx 9.09\% \quad \text{(與公式結果一致)} 111?9.09%(與公式結果一致)


結論

即使檢測準確率高達99.9%,由于發病率極低(萬分之一),假陽性人數遠多于真陽性
最終:
P(病∣陽性)≈9.1% P(\text{病}|\text{陽性}) \approx \mathbf{9.1\%} P(陽性)9.1%
這意味著,檢測為陽性的人中,超過90%是誤診!


背后的貝葉斯思想

  1. 先驗概率很重要:發病率低時,即使檢測準確率高,誤診仍可能主導結果。
  2. 不要忽略基礎比率(Base Rate Neglect):人們常忽視先驗概率,只關注檢測的“準確性”。
  3. 實際應用:對罕見病的篩查,需結合多次檢測或更高特異性的方法降低誤診率。

這就是貝葉斯定理的經典案例——“陽性結果≠患病”

3.樸素貝葉斯公式總結

1. 公式分解

貝葉斯定理的完整形式是:
P(y∣X)=P(y)∏P(xi∣y)P(X) P(y|X) = \frac{P(y) \prod P(x_i|y)}{P(X)} P(yX)=P(X)P(y)P(xi?y)?
但 $ P(X) $ 對所有類別 $ y $ 都相同,因此比較時只需計算分子:
P(y∣X)∝P(y)∏P(xi∣y) P(y|X) \propto P(y) \prod P(x_i|y) P(yX)P(y)P(xi?y)

  • P(y∣X)P(y|X)P(yX):在已知特征 X=(x1,x2,...,xn)X = (x_1, x_2, ..., x_n)X=(x1?,x2?,...,xn?) 的情況下,樣本屬于類別 yyy 的概率(后驗概率)。
  • P(y)P(y)P(y):類別 yyy先驗概率(即數據中類別 yyy 出現的概率)。
  • P(xi∣y)P(x_i|y)P(xi?y):在類別 yyy 下,特征 xix_ixi? 出現的概率(似然概率)。
  • ∝\propto:表示“正比于”,即我們可以忽略分母 P(X)P(X)P(X)(因為對所有類別 yyy 都一樣,不影響比較)。

2. 直觀理解

假設我們要判斷一封郵件是不是垃圾郵件(y=垃圾郵件y = \text{垃圾郵件}y=垃圾郵件y=正常郵件y = \text{正常郵件}y=正常郵件),郵件的特征 XXX 是其中的單詞(如“免費”“中獎”等)。

樸素貝葉斯的計算邏輯是:

  1. 先看數據中垃圾郵件的比例P(y)P(y)P(y))。
  2. 再看垃圾郵件中每個單詞出現的概率P(xi∣y)P(x_i|y)P(xi?y))。
  3. 假設所有單詞相互獨立(“樸素”假設),計算它們的聯合概率(即乘積)。
  4. 比較不同類別的概率,選擇概率最大的作為預測結果。

3. 具體例子

數據示例
郵件內容類別(垃圾/正常)
“免費 贏取 大獎”垃圾
“免費 參加會議”正常
“中獎 點擊 鏈接”垃圾
“明天 開會”正常
“贏取 免費 禮品”垃圾
計算概率
  • 先驗概率

    • P(垃圾)=35=0.6P(\text{垃圾}) = \frac{3}{5} = 0.6P(垃圾)=53?=0.6
    • P(正常)=25=0.4P(\text{正常}) = \frac{2}{5} = 0.4P(正常)=52?=0.4
  • 條件概率(單詞在垃圾郵件中的概率):

    • P(免費∣垃圾)=33=1.0P(\text{免費}|\text{垃圾}) = \frac{3}{3} = 1.0P(免費垃圾)=33?=1.0
    • P(中獎∣垃圾)=13≈0.33P(\text{中獎}|\text{垃圾}) = \frac{1}{3} \approx 0.33P(中獎垃圾)=31?0.33
    • P(贏取∣垃圾)=23≈0.67P(\text{贏取}|\text{垃圾}) = \frac{2}{3} \approx 0.67P(贏取垃圾)=32?0.67
預測新郵件

假設新郵件內容是 “免費 中獎”,判斷它是垃圾郵件還是正常郵件。

垃圾郵件的概率

P(垃圾∣免費,?中獎)∝P(垃圾)×P(免費∣垃圾)×P(中獎∣垃圾)=0.6×1.0×0.33≈0.198 P(\text{垃圾}|\text{免費, 中獎}) \propto P(\text{垃圾}) \times P(\text{免費}|\text{垃圾}) \times P(\text{中獎}|\text{垃圾}) \\ = 0.6 \times 1.0 \times 0.33 \approx 0.198 P(垃圾免費,?中獎)P(垃圾)×P(免費垃圾)×P(中獎垃圾)=0.6×1.0×0.330.198

正常郵件的概率

P(正常∣免費,?中獎)∝P(正常)×P(免費∣正常)×P(中獎∣正常)=0.4×0.5×0.0=0.0(需拉普拉斯平滑調整) P(\text{正常}|\text{免費, 中獎}) \propto P(\text{正常}) \times P(\text{免費}|\text{正常}) \times P(\text{中獎}|\text{正常}) \\ = 0.4 \times 0.5 \times 0.0 = 0.0 \quad \text{(需拉普拉斯平滑調整)} P(正常免費,?中獎)P(正常)×P(免費正常)×P(中獎正常)=0.4×0.5×0.0=0.0(需拉普拉斯平滑調整)

結論

垃圾郵件的概率(0.198) > 正常郵件的概率(0.0),因此判定為垃圾郵件


4. 關鍵點總結

  1. 樸素貝葉斯假設:所有特征 xix_ixi? 相互獨立(“樸素”)。
  2. 計算方式
    • 先計算類別的先驗概率 P(y)P(y)P(y)
    • 再計算每個特征在類別下的條件概率 P(xi∣y)P(x_i|y)P(xi?y)
    • 聯合概率 = 先驗概率 × 所有特征的條件概率。
  3. 預測:選擇使 P(y∣X)P(y|X)P(yX) 最大的類別 yyy

5. 應用場景

  • 文本分類(垃圾郵件、情感分析)
  • 醫學診斷(疾病預測)
  • 推薦系統(用戶興趣分類)

這個公式雖然簡單,但在實際應用中非常強大! 🚀

4.樸素貝葉斯分類器

  • 常用于文本分類,文本過濾、情感預測、推薦系統等,尤其是對于英文等語言來說,分類效果很好

  • 準備階段,需要確定特征屬性,屬性值以及label => 訓練集

  • 訓練階段,輸入是特征屬性和訓練樣本,輸出是分類器,主要工作是計算每個類別在訓練樣本中的出現頻率及每個特征屬性劃分對每個類別的條件概率

  • 應用階段,使用分類器對新數據進行分類

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91053.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91053.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91053.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

document.documentElement詳解

核心概念定義 它始終指向當前文檔的根元素&#xff0c;在 HTML 文檔中對應 <html> 標簽。與 document.body&#xff08;對應 <body>&#xff09;和 document.head&#xff08;對應 <head>&#xff09;形成層級關系。與 document.body 的區別 <html> &l…

c#進階之數據結構(動態數組篇)----Queue

1、簡介這個是c#封裝的隊列類型&#xff0c;同棧相反&#xff0c;這個是先進先出&#xff0c;一般用于事件注冊&#xff0c;或者數據的按順序處理&#xff0c;理解為需要排隊處理的可以用隊列來處理。注意&#xff0c;隊列一定是有順序的&#xff0c;先進確實是會先出&#xff…

使用 keytool 在服務器上導入證書操作指南(SSL 證書驗證錯誤處理)

使用 keytool 在服務器上導入證書操作指南(SSL 證書驗證錯誤處理) 一、概述 本文檔用于指導如何在運行 Java 應用程序的服務器上,通過keytool工具將證書導入 Java 信任庫,解決因證書未被信任導致的 SSL/TLS 通信問題(如PKIX path building failed錯誤)。 二、操作步驟…

VUE export import

目錄 命名導出 導出變量 導出函數 總結 默認導出 導出變量 導出函數 總結 因為總是搞不懂export和Import什么時候需要加{}&#xff0c;什么時候不用&#xff0c;所以自己測試了一下&#xff0c;以下是總結。 需不需要加{}取決于命名導出還是默認導出&#xff0c;命名導…

端側寵物識別+拍攝控制智能化:解決設備識別頻次識別率雙低問題

隨著寵物成為家庭重要成員&#xff0c;寵物影像創作需求激增&#xff0c;傳統相機系統 “人臉優先” 的調度邏輯已難以應對寵物拍攝的復雜場景。毛發邊緣模糊、動態姿態多變、光照反差劇烈等問題&#xff0c;推動著智能拍攝技術向 “寵物優先” 范式轉型。本文基于端側 AI 部署…

Popover API 實戰指南:前端彈層體驗的原生重構

&#x1fa84; Popover API 實戰指南&#xff1a;前端彈層體驗的原生重構 還在用 position: absolute JS 定位做 tooltip&#xff1f;還在引入大型 UI 庫只為做個浮層&#xff1f;現在瀏覽器已經支持了真正原生的「彈出層 API」&#xff0c;一行 HTMLCSS 就能構建可交互、無障…

CCS-MSPM0G3507-6-模塊篇-OLED的移植

前言基礎篇結束&#xff0c;接下來我們來開始進行模塊驅動如果懂把江科大的OLED移植成HAL庫&#xff0c;那其實也沒什么難首先配置OLED的引腳這里我配置PA16和17為推挽輸出&#xff0c;PA0和1不要用&#xff0c;因為只有那兩個引腳能使用MPU6050 根據配置出來的引腳&#xff0c…

意識邊界的算法戰爭—腦機接口技術重構人類認知的顛覆性挑戰

一、神經解碼的技術奇點當癱瘓患者通過腦電波操控機械臂飲水&#xff0c;當失語者借由皮層電極合成語音&#xff0c;腦機接口&#xff08;BCI&#xff09;正從醫療輔助工具演變為認知增強的潘多拉魔盒。這場革命的核心突破在于神經信號解析精度的指數躍遷&#xff1a;傳統腦電圖…

詳解彩信 SMIL規范

以下內容將系統地講解彩信 MMS&#xff08;Multimedia Messaging Service&#xff09;中使用的 SMIL&#xff08;Synchronized Multimedia Integration Language&#xff09;規范&#xff0c;涵蓋歷史、語法結構、在彩信中的裁剪與擴展、常見實現細節以及最佳實踐。末尾附示例代…

《紅藍攻防:構建實戰化網絡安全防御體系》

《紅藍攻防&#xff1a;構建實戰化網絡安全防御體系》文章目錄第一部分&#xff1a;網絡安全的攻防全景 1、攻防演練的基礎——紅隊、藍隊、紫隊 1.1 紅隊&#xff08;攻擊方&#xff09; 1.2 藍隊&#xff08;防守方&#xff09; 1.3 紫隊&#xff08;協調方&#xff09; 2、5…

MFC UI大小改變與自適應

文章目錄窗口最大化庫EasySize控件自適應大小窗口最大化 資源視圖中開放最大化按鈕&#xff0c;添加窗口樣式WS_MAXIMIZEBOX。發送大小改變消息ON_WM_SIZE()。響應大小改變。 void CDlg::OnSize(UINT nType, int cx, int cy) {CDialog::OnSize(nType, cx, cy);//獲取改變后窗…

【Linux網絡】:HTTP(應用層協議)

目錄 一、HTTP 1、URL 2、協議格式 3、請求方法 4、狀態碼 5、Header信息 6、會話保持Cookie 7、長連接 8、簡易版HTTP服務器代碼 一、HTTP 我們在編寫網絡通信代碼時&#xff0c;我們可以自己進行協議的定制&#xff0c;但實際有很多優秀的工程師早就寫出了許多非常…

C++-linux 7.文件IO(三)文件元數據與 C 標準庫文件操作

文件 IO 進階&#xff1a;文件元數據與 C 標準庫文件操作 在 Linux 系統中&#xff0c;文件操作不僅涉及數據的讀寫&#xff0c;還包括對文件元數據的管理和高層庫函數的使用。本文將從文件系統的底層存儲機制&#xff08;inode 與 dentry&#xff09;講起&#xff0c;詳細解析…

WordPress Ads Pro Plugin本地文件包含漏洞(CVE-2025-4380)

免責聲明 本文檔所述漏洞詳情及復現方法僅限用于合法授權的安全研究和學術教育用途。任何個人或組織不得利用本文內容從事未經許可的滲透測試、網絡攻擊或其他違法行為。 前言:我們建立了一個更多,更全的知識庫。每日追蹤最新的安全漏洞,追中25HW情報。 更多詳情: http…

從爆紅到跑路:AI明星Manus為何僅用四個月就“拋棄”了中國?

目錄 前言 一、資本的“無形之手”&#xff1a;7500萬美元融資背后的“投名狀” 二、技術的雙重困境&#xff1a;算力封鎖與“應用層”的原罪 三、戰略的錯判&#xff1a;一場與中國市場的“雙向奔赴”失敗 四、事件的啟示&#xff1a;當“出海”變成“出走” &#x1f3a…

CCF-GESP 等級考試 2025年6月認證Python三級真題解析

1 單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;第1題 2025年4月19日在北京舉行了一場頗為矚目的人形機器人半程馬拉松賽。比賽期間&#xff0c;跑動著的機器人會利用 身上安裝的多個傳感器所反饋的數據來調整姿態、保持平衡等&#xff0c;那么這類傳感器類似于…

16.使用ResNet網絡進行Fashion-Mnist分類

16.1 ResNet網絡結構設計################################################################################################################ #ResNet ################################################################################################################…

C# 結構體 和 類 的區別

? 結構體&#xff08;struct&#xff09;是值類型&#xff08;Value Type&#xff09;和類&#xff08;class&#xff09;不同&#xff0c;結構體在賦值和傳參時是復制值本身&#xff0c;而不是引用地址。? 一、結構體的基本使用示例&#xff1a;using System;struct Point {…

MacBook Air M4 安裝 VMware Fusion Pro

VMware Fusion Pro已經對消費者免費了&#xff0c;在Windows系統上的安裝和使用教程比較多&#xff0c;Mac上竟然沒多少&#xff0c;還充斥著大量的廣告以及付費軟件&#xff0c;所以趁著今天要安裝虛擬機&#xff0c;記錄一下完整過程。 1&#xff0c;注冊博通賬號與登錄 首…