【資料分析】簡單高效的機器學習模型 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
7會員
21內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
JayRay 的沙龍 的其他內容
數據洩漏是在機器學習和數據分析中,因不當使用資料而造成的模型性能評估錯誤。這篇文章探討數據洩漏的常見形式及其對模型可靠性的影響,並提供防範措施,如嚴格劃分數據集、僅對訓練集進行預處理和使用交叉驗證。瞭解這些概念有助於構建更穩健的數據驅動模型。
本文探討四個關鍵的分類模型評估指標:準確率、精確率、召回率與 F1-Score。這些指標各自從不同角度反映模型的預測性能,理解它們的定義、計算方式和適用情境,能夠幫助您在數據分析和機器學習項目中做出更優的決策。
本文探討了聚類算法中常用的效果評估指標,包括內部和外部指標,並詳細介紹了輪廓係數、群集內距離平方和(WCSS)及Davies-Bouldin指數三種主要指標的計算方法、優缺點與應用場景。這些指標各有特點,適用於不同的聚類場景,有助於有效評估聚類質量,提升無監督學習的效能。
這篇文章深入探討了數據科學與機器學習中的主要聚類算法,包括 K-means、DBSCAN 和層次聚類。介紹了每種算法的工作原理、優缺點及其適用場景,幫助讀者理解何時選擇何種聚類技術。本文還提供了相關的程式碼範例,方便讀者進一步學習與實踐。
虛擬變數陷阱(Dummy Variable Trap)是指在進行One-Hot Encoding時,生成的虛擬變數之間存在完全多重共線性,影響回歸模型的準確性。透過具體的例子,本文探討瞭如何避免這個陷阱,以提升機器學習模型的效果與穩定性。
XGBoost(eXtreme Gradient Boosting)是一種基於梯度提升框架的機器學習算法,專注於高效的分類與迴歸問題。它廣泛應用於數據分析和競賽中,因其出色的模型訓練能力。本文探討 XGBoost 實際中的實作,適合希望掌握此技術的讀者,並對模型調參提供有價值的技巧與建議。
數據洩漏是在機器學習和數據分析中,因不當使用資料而造成的模型性能評估錯誤。這篇文章探討數據洩漏的常見形式及其對模型可靠性的影響,並提供防範措施,如嚴格劃分數據集、僅對訓練集進行預處理和使用交叉驗證。瞭解這些概念有助於構建更穩健的數據驅動模型。
本文探討四個關鍵的分類模型評估指標:準確率、精確率、召回率與 F1-Score。這些指標各自從不同角度反映模型的預測性能,理解它們的定義、計算方式和適用情境,能夠幫助您在數據分析和機器學習項目中做出更優的決策。
本文探討了聚類算法中常用的效果評估指標,包括內部和外部指標,並詳細介紹了輪廓係數、群集內距離平方和(WCSS)及Davies-Bouldin指數三種主要指標的計算方法、優缺點與應用場景。這些指標各有特點,適用於不同的聚類場景,有助於有效評估聚類質量,提升無監督學習的效能。
這篇文章深入探討了數據科學與機器學習中的主要聚類算法,包括 K-means、DBSCAN 和層次聚類。介紹了每種算法的工作原理、優缺點及其適用場景,幫助讀者理解何時選擇何種聚類技術。本文還提供了相關的程式碼範例,方便讀者進一步學習與實踐。
虛擬變數陷阱(Dummy Variable Trap)是指在進行One-Hot Encoding時,生成的虛擬變數之間存在完全多重共線性,影響回歸模型的準確性。透過具體的例子,本文探討瞭如何避免這個陷阱,以提升機器學習模型的效果與穩定性。
XGBoost(eXtreme Gradient Boosting)是一種基於梯度提升框架的機器學習算法,專注於高效的分類與迴歸問題。它廣泛應用於數據分析和競賽中,因其出色的模型訓練能力。本文探討 XGBoost 實際中的實作,適合希望掌握此技術的讀者,並對模型調參提供有價值的技巧與建議。
你可能也想看
Google News 追蹤
Thumbnail
數據分析與解讀 隨著數據的爆炸式增長,能夠分析、解讀和應用數據的能力變得至關重要。這包括熟悉數據分析工具和技術,如統計學、數據挖掘、機器學習等。然而,僅靠短時間的數據分析並不足以提供深入見解。 要熟悉數據分析工具和技術,如統計學、數據挖掘和機器學習,可以從以下幾個方面入手: 基礎知識的學習
Thumbnail
本文要探討AI的任務與實戰場景。AI技術已深入生活各層面,從違約預測到都市交通管理。AI任務主要有三類:數值型資料處理、自然語言處理(NLP)和電腦影像辨識。時間序列資料和強化學習方法(如AlphaGo)也引起廣泛關注。AI演算法和方法因應不同學派和技術發展而多樣化,了解這些基礎有助選擇適合研究方向
Thumbnail
自動化思考(Automatic Thinking)是心理學中的一個概念,它指的是人們在日常生活中進行的快速、無意識和自動的「思路-反應」捷徑。
Thumbnail
最新的AI趨勢讓人眼花撩亂,不知要如何開始學習?本文介紹了作者對AI的使用和體驗,以及各類AI工具以及推薦的選擇。最後強調了AI是一個很好用的工具,可以幫助人們節省時間並提高效率。鼓勵人們保持好奇心,不停止學習,並提出了對健康生活和開心生活的祝福。
Thumbnail
本篇文章分享了對創意和靈感來源的深入思考,以及如何將其轉化為實際的成果或解決方案的過程。透過學習、資料收集、練習、創新等方法,提出了將創意落實的思路和技巧。同時介紹了AI在外顯知識的自動化應用,以及對其潛在發展方向的討論。最後探討了傳統機器學習技術在模擬中的應用案例和對AI世界的影響。
大語言模型能夠生成文本,因此被認為是生成式人工智慧的一種形式。 人工智慧的學科任務,是製作機器,使其能執行需要人類智慧才能執行的任務,例如理解語言,便是模式,做出決策。 除了大語言模型,人工智慧也包含了深度學習以及機器學習。 機器學習的學科任務,是透過演算法來實踐AI。 特別
Thumbnail
這陣子使用AI模型,還有參考國內外一些喜歡玩語言模型的同好發文,一個很有趣的結論就是,有時候把大型語言模型(尤其ChatGPT)當作一個人來溝通,會得到比較好的結果,這的確是非常反直覺的,也就是說很多時候ChatGPT耍懶不肯工作的時候,你用加油打氣,或是情緒勒索的方法,確實是可以得到比較好的結果。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
數據分析與解讀 隨著數據的爆炸式增長,能夠分析、解讀和應用數據的能力變得至關重要。這包括熟悉數據分析工具和技術,如統計學、數據挖掘、機器學習等。然而,僅靠短時間的數據分析並不足以提供深入見解。 要熟悉數據分析工具和技術,如統計學、數據挖掘和機器學習,可以從以下幾個方面入手: 基礎知識的學習
Thumbnail
本文要探討AI的任務與實戰場景。AI技術已深入生活各層面,從違約預測到都市交通管理。AI任務主要有三類:數值型資料處理、自然語言處理(NLP)和電腦影像辨識。時間序列資料和強化學習方法(如AlphaGo)也引起廣泛關注。AI演算法和方法因應不同學派和技術發展而多樣化,了解這些基礎有助選擇適合研究方向
Thumbnail
自動化思考(Automatic Thinking)是心理學中的一個概念,它指的是人們在日常生活中進行的快速、無意識和自動的「思路-反應」捷徑。
Thumbnail
最新的AI趨勢讓人眼花撩亂,不知要如何開始學習?本文介紹了作者對AI的使用和體驗,以及各類AI工具以及推薦的選擇。最後強調了AI是一個很好用的工具,可以幫助人們節省時間並提高效率。鼓勵人們保持好奇心,不停止學習,並提出了對健康生活和開心生活的祝福。
Thumbnail
本篇文章分享了對創意和靈感來源的深入思考,以及如何將其轉化為實際的成果或解決方案的過程。透過學習、資料收集、練習、創新等方法,提出了將創意落實的思路和技巧。同時介紹了AI在外顯知識的自動化應用,以及對其潛在發展方向的討論。最後探討了傳統機器學習技術在模擬中的應用案例和對AI世界的影響。
大語言模型能夠生成文本,因此被認為是生成式人工智慧的一種形式。 人工智慧的學科任務,是製作機器,使其能執行需要人類智慧才能執行的任務,例如理解語言,便是模式,做出決策。 除了大語言模型,人工智慧也包含了深度學習以及機器學習。 機器學習的學科任務,是透過演算法來實踐AI。 特別
Thumbnail
這陣子使用AI模型,還有參考國內外一些喜歡玩語言模型的同好發文,一個很有趣的結論就是,有時候把大型語言模型(尤其ChatGPT)當作一個人來溝通,會得到比較好的結果,這的確是非常反直覺的,也就是說很多時候ChatGPT耍懶不肯工作的時候,你用加油打氣,或是情緒勒索的方法,確實是可以得到比較好的結果。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。