【資料分析】簡單高效的機器學習模型 Naive Bayes

更新 發佈閱讀 11 分鐘
raw-image

Naive Bayes(中譯為樸素貝葉斯、簡單貝葉斯或是簡單貝氏模型等)是一種基於貝葉斯定理的機器學習分類演算法,廣泛應用於文本分類、垃圾郵件檢測、情感分析等任務。它被稱為「Naive」(樸素),因為它假設所有特徵之間是相互獨立的,這在現實情況下很少成立,但這種簡化使模型計算更高效,並且在實踐中往往效果良好。

Naive Bayes 可以同時接受離散型變數和連續型變數。透過計算,我們可以知道在已知的資料下哪個目標的發生機率最大,由此去做分類。


# 可使用目錄功能快速確認要閱覽的主題


Naive Bayes 的優勢與劣勢


Naive Bayes 的優勢

  1. 計算高效
  • Naive Bayes 的核心是基於貝葉斯定理和特徵條件獨立性假設。
  • 在訓練過程中,只需計算每個特徵與標籤的條件概率,這大大降低了計算複雜度。
  • 即使在高維度數據下(例如文本分類中的詞頻矩陣),Naive Bayes 也能快速完成訓練和預測。
  1. 小數據集也能穩定運作
  • 許多機器學習模型在數據不足時會過度擬合或無法有效訓練。
  • Naive Bayes 由於其簡單的概率計算,即使在小樣本下,也能獲得穩定的結果。
  1. 適合高維度特徵空間
  • 在文本分類等場景中,數據特徵(如詞彙量)可能非常高維,但 Naive Bayes 能很好地處理這種情況,因為每個特徵被獨立考慮。
  1. 易於實現與解釋
  • 演算法簡單,易於實現。
  • 結果可以被清晰解釋,尤其在概率輸出上直觀易懂。


Naive Bayes 的劣勢


1. 特徵條件獨立性假設

  • Naive Bayes 假設所有特徵在給定標籤的條件下都是相互獨立的。
  • 在現實數據中,特徵往往存在相關性(例如:在信用卡欺詐檢測中,「交易金額」與「交易頻率」可能密切相關)。
  • 當特徵之間存在高度相關性時,Naive Bayes 的預測結果可能會偏差,導致準確性下降。


2. 無法捕捉複雜的非線性關係

  • Naive Bayes 模型是基於簡單的概率計算,無法捕捉特徵與標籤之間的非線性關係。
  • 例如,在複雜的圖片分類或語音識別任務中,Naive Bayes 的表現遠不如深度學習模型。
  1. 機率估計不準確
  • 當某些類別或特徵組合在訓練數據中很少出現時,Naive Bayes 可能無法給出準確的概率估計(稱為零概率問題,可以使用拉普拉斯平滑來解決)。


4. 特徵數據類型限制

  • Naive Bayes 在處理數值型特徵時,通常需要將它們轉換為離散化或假設它們符合某種分佈(如高斯分佈)。
  • 如果數據不符合這些分佈假設,預測效果將會降低。


Naive Bayes vs 其它模型快速比較

raw-image



Naive Bayes 的核心運作邏輯

1. 核心理論基礎:貝葉斯定理

貝葉斯定理描述了給定某些證據下,一個事件發生的條件機率,公式如下:

raw-image
  • P(Y|X):在已知證據 X 下,事件 Y 發生的機率(後驗機率)
  • P(X|Y):在 Y 發生的情況下,證據 X 出現的機率(似然機率)
  • P(Y):事件 Y 發生的先驗機率
  • P(X):證據 X 出現的機率(標準化常數)


2. 條件獨立性假設

Naive Bayes 的「Naive」(天真)指的是它假設所有特徵是條件獨立的,即在給定標籤 Y 的條件下,各個特徵 X1 , X2 , ... , Xn 之間互相獨立:

raw-image

這個假設簡化了計算,使得模型在處理高維度數據時能夠保持高效。


3. 計算後驗機率並分類

目標是計算每個類別 Y 的後驗機率 P(Y|X),並選擇機率最大的類別作為預測結果:

raw-image
  • P(Y):每個類別的先驗機率,可以從訓練數據中計算。
  • P(X_i | Y):在每個類別 Y 下,每個特徵 Xi 的條件機率。

最終步驟:選擇後驗機率最高的類別作為預測結果。


4. 三種常見 Naive Bayes 模型

4-1 Gaussian Naive Bayes(高斯 Naive Bayes)

  • 適合連續數值特徵,假設特徵符合高斯分佈。


4-2 Multinomial Naive Bayes(多項式 Naive Bayes)

  • 適合文本分類,例如垃圾郵件檢測。


4-3 Bernoulli Naive Bayes(伯努利 Naive Bayes)

  • 適合二元特徵,例如詞語是否出現(0/1 表示)。


5. 範例

假設我們要根據天氣和溫度預測是否適合外出。

raw-image

步驟:

  1. 計算先驗機率:
  • P(適合外出 = 是) = 2/3
  • P(適合外出 = 否) = 1/3


  1. 計算條件機率:
  • P(天氣 = 晴天|適合外出 = 是) = 1
  • P(天氣 = 雨天|適合外出 = 是) = 0
  • P(溫度 = 熱|適合外出 = 是) = 0.5


  1. 使用貝葉斯定理預測新數據(例如:天氣 = 晴天,溫度 = 冷)
  • P(適合外出 = 是|天氣 = 晴天,溫度 = 冷) = P(晴天|是) • P(冷|是) • P(是)

比較不同類別的後驗機率,選擇最大者作為預測結果。



Naive Bayes 的實際應用範例

範例一:垃圾郵件分類(文本分類問題)

目標:使用 Naive Bayes 分類器區分垃圾郵件和正常郵件。

步驟:

  1. 導入必要的函式庫
  2. 加載範例數據
  3. 特徵提取(CountVectorizer / TfidfVectorizer)
  4. 使用 Naive Bayes 訓練模型
  5. 評估模型性能

程式碼:

# 1. 導入所需函式庫
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report

# 2. 範例數據集
emails = [
'Win a free iPhone now', # 垃圾郵件
'Limited offer! Claim your prize', # 垃圾郵件
'Meeting scheduled for tomorrow', # 正常郵件
'Project deadline is next week', # 正常郵件
'Congratulations! You won a lottery' # 垃圾郵件
]
labels = [1, 1, 0, 0, 1] # 1: 垃圾郵件, 0: 正常郵件

# 3. 特徵提取
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)
y = labels

# 4. 切分數據集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 5. 訓練 Naive Bayes 模型
model = MultinomialNB()
model.fit(X_train, y_train)

# 6. 預測
y_pred = model.predict(X_test)

# 7. 評估模型
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))


解釋:

  • CountVectorizer:將文本轉換為詞頻矩陣。
  • MultinomialNB:適合用於文本分類問題。
  • 評估結果:透過準確率和分類報告檢查模型表現。


範例二:鳶尾花分類(Iris Dataset - 數值型特徵)

目標:使用 Gaussian Naive Bayes 將鳶尾花分類為三種不同的花種。


步驟:

  1. 導入資料集
  2. 數據切分
  3. 模型訓練
  4. 模型預測與評估


程式碼:

# 1. 導入所需函式庫
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, confusion_matrix

# 2. 載入鳶尾花資料集
data = load_iris()
X = data.data
y = data.target

# 3. 分割訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 4. 訓練 Gaussian Naive Bayes 模型
model = GaussianNB()
model.fit(X_train, y_train)

# 5. 預測
y_pred = model.predict(X_test)

# 6. 評估
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))


解釋:

  • GaussianNB:適用於連續數據,假設特徵符合高斯分佈。
  • 準確率 (Accuracy):衡量模型預測的準確性。
  • 混淆矩陣 (Confusion Matrix):檢查分類結果的錯誤類型。
留言
avatar-img
JayRay 的沙龍
21會員
23內容數
JayRay 的沙龍的其他內容
2025/01/21
本文章提供深度學習(Deep Learning)、深度神經網絡(DNN)、卷積神經網絡(CNN)和遞歸神經網絡(RNN)的簡介,並包含它們的定義、應用場景、基本結構、工作原理、優缺點和Python範例。
Thumbnail
2025/01/21
本文章提供深度學習(Deep Learning)、深度神經網絡(DNN)、卷積神經網絡(CNN)和遞歸神經網絡(RNN)的簡介,並包含它們的定義、應用場景、基本結構、工作原理、優缺點和Python範例。
Thumbnail
2025/01/05
本篇文章提供描述性統計的完整指南,涵蓋集中趨勢、離散趨勢和數據分佈等重要概念,並附上豐富的實務應用案例與 Python 資料視覺化參考連結,協助讀者快速瞭解數據分析的基礎知識。
Thumbnail
2025/01/05
本篇文章提供描述性統計的完整指南,涵蓋集中趨勢、離散趨勢和數據分佈等重要概念,並附上豐富的實務應用案例與 Python 資料視覺化參考連結,協助讀者快速瞭解數據分析的基礎知識。
Thumbnail
2024/11/29
數據洩漏是在機器學習和數據分析中,因不當使用資料而造成的模型性能評估錯誤。這篇文章探討數據洩漏的常見形式及其對模型可靠性的影響,並提供防範措施,如嚴格劃分數據集、僅對訓練集進行預處理和使用交叉驗證。瞭解這些概念有助於構建更穩健的數據驅動模型。
Thumbnail
2024/11/29
數據洩漏是在機器學習和數據分析中,因不當使用資料而造成的模型性能評估錯誤。這篇文章探討數據洩漏的常見形式及其對模型可靠性的影響,並提供防範措施,如嚴格劃分數據集、僅對訓練集進行預處理和使用交叉驗證。瞭解這些概念有助於構建更穩健的數據驅動模型。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
本文深入探討鑑別式AI的基本原理、運用技術、目的和特性,並與生成式AI進行比較,旨在幫助讀者理解其優勢和侷限性,以利於在實際應用中做出更佳的模型選擇。文章包含詳細的技術解說、應用場景分析及多個可靠來源的佐證,提供全面且深入的鑑別式AI知識。
Thumbnail
本文深入探討鑑別式AI的基本原理、運用技術、目的和特性,並與生成式AI進行比較,旨在幫助讀者理解其優勢和侷限性,以利於在實際應用中做出更佳的模型選擇。文章包含詳細的技術解說、應用場景分析及多個可靠來源的佐證,提供全面且深入的鑑別式AI知識。
Thumbnail
本文探討機器學習的基本原理及其應用目的。機器學習的基本原理包括數據預處理、模型選擇、訓練、評估和持續學習,以及特徵工程和超參數調優。機器學習可用於預測、分類、聚類、異常檢測等多種目的,應用範圍涵蓋金融、醫療、電商等領域。
Thumbnail
本文探討機器學習的基本原理及其應用目的。機器學習的基本原理包括數據預處理、模型選擇、訓練、評估和持續學習,以及特徵工程和超參數調優。機器學習可用於預測、分類、聚類、異常檢測等多種目的,應用範圍涵蓋金融、醫療、電商等領域。
Thumbnail
簡短介紹常見的機器學習模型如邏輯迴歸、隨機森林、K-Means、Q-Learning、CNN等
Thumbnail
簡短介紹常見的機器學習模型如邏輯迴歸、隨機森林、K-Means、Q-Learning、CNN等
Thumbnail
本文探討AI寫作背後的核心技術,包含機器學習、自然語言處理和生成式AI,並以淺顯易懂的比喻和實際應用案例說明其運作原理。
Thumbnail
本文探討AI寫作背後的核心技術,包含機器學習、自然語言處理和生成式AI,並以淺顯易懂的比喻和實際應用案例說明其運作原理。
Thumbnail
這篇文章提供機器學習和人工智慧的基礎概念,包含監督式學習、非監督式學習、強化學習,以及模型訓練、優化和評估等重要環節。文中也涵蓋了特徵工程、特徵縮放、維度詛咒等關鍵概念,並簡要介紹了正規化、K折交叉驗證等進階技術。
Thumbnail
這篇文章提供機器學習和人工智慧的基礎概念,包含監督式學習、非監督式學習、強化學習,以及模型訓練、優化和評估等重要環節。文中也涵蓋了特徵工程、特徵縮放、維度詛咒等關鍵概念,並簡要介紹了正規化、K折交叉驗證等進階技術。
Thumbnail
Naive Bayes是一種基於貝葉斯定理的機器學習分類演算法,適用於文本分類、垃圾郵件檢測及情感分析等任務。雖然假設特徵之間相互獨立,這在現實中不常成立,但其高效計算與穩定性使得在小數據集及高維度特徵空間中表現良好。
Thumbnail
Naive Bayes是一種基於貝葉斯定理的機器學習分類演算法,適用於文本分類、垃圾郵件檢測及情感分析等任務。雖然假設特徵之間相互獨立,這在現實中不常成立,但其高效計算與穩定性使得在小數據集及高維度特徵空間中表現良好。
Thumbnail
Autoencoder 是一種無監督學習的神經網絡,分為編碼器(將數據壓縮為隱藏表示)和解碼器(將隱藏表示重建為原始數據)。其目標是最小化輸入和重建數據之間的誤差,廣泛應用於數據降維、特徵提取、去噪和生成模型(如變分自編碼器 VAE)。優點包括無需標籤學習和自動學習特徵,但也容易過擬合,需要大量數據
Thumbnail
Autoencoder 是一種無監督學習的神經網絡,分為編碼器(將數據壓縮為隱藏表示)和解碼器(將隱藏表示重建為原始數據)。其目標是最小化輸入和重建數據之間的誤差,廣泛應用於數據降維、特徵提取、去噪和生成模型(如變分自編碼器 VAE)。優點包括無需標籤學習和自動學習特徵,但也容易過擬合,需要大量數據
Thumbnail
上一节中,我们介绍了大型语言模型的接口非常简单,仅提供了Complete和Embedding两个接口。但这样看似简单的接口,实际上可以解决很多自然语言处理问题。例如,情感分析、文本分类、文章聚类、摘要生成、搜索等问题,都可以使用大型语言模型解决。接下来的几节课中,我们将介绍如何使用这两个简单的API
Thumbnail
上一节中,我们介绍了大型语言模型的接口非常简单,仅提供了Complete和Embedding两个接口。但这样看似简单的接口,实际上可以解决很多自然语言处理问题。例如,情感分析、文本分类、文章聚类、摘要生成、搜索等问题,都可以使用大型语言模型解决。接下来的几节课中,我们将介绍如何使用这两个简单的API
Thumbnail
在這個AI已經發展的時代,我們有沒有可能使用現有數據判斷未知的材料性質? 以下為實際做過的案例,因為不確定是否已經公開,因此只會展現結果,而不會去討論那些元素的比例構成。 首先AI的訓練在這案例中使用了好幾種手法,只會介紹結果最好的,我參考了其他實驗室的結果,也是採這方法預測力最佳。 在測試中
Thumbnail
在這個AI已經發展的時代,我們有沒有可能使用現有數據判斷未知的材料性質? 以下為實際做過的案例,因為不確定是否已經公開,因此只會展現結果,而不會去討論那些元素的比例構成。 首先AI的訓練在這案例中使用了好幾種手法,只會介紹結果最好的,我參考了其他實驗室的結果,也是採這方法預測力最佳。 在測試中
Thumbnail
貝氏推論(Bayesian Inference)是一種著名的推論方式。 貓貓在此稍作介紹。
Thumbnail
貝氏推論(Bayesian Inference)是一種著名的推論方式。 貓貓在此稍作介紹。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News