，在機器學習中是一系列以假設特徵之間強（樸素）獨立下運用貝葉斯定理為基礎的簡單。 單純貝氏自 1950 年代已廣泛研究，在 1960 年代初就以另外一個名稱引入到文字資訊檢索界中， 並仍然是文字分類的一種熱門（基準）方法，文字分類是以詞頻為特徵判斷檔案所屬類別或其他（如垃圾郵件、合法性、體育或政治等等）的問題。透過適當的預處理，它可以與這個領域更先進的方法（包括支援向量機）相競爭。 它在自動醫療診斷中也有應用。 單純貝氏分類器是高度可擴充套件的，因此需要數量與學習問題中的變數（特徵 預測器）成線性關係的引數。最大似然訓練可以透過評估一個封閉形式的表示式來完成， 只需花費線性時間，而不需要其他很多型別的分類器所使用的費時的迭代逼近。 在統計學和計算機科學文獻中，單純貝氏模型有各種名稱，包括簡單貝葉斯和獨立貝葉斯。 所有這些名稱都參考了貝葉斯定理在該分類器的決策規則中的使用，但單純貝氏不（一定）用到貝葉斯方法； 《》提到 『單純貝氏』有時被稱為貝葉斯分類器，這個馬虎的使用促使真正的貝葉斯論者稱之為傻瓜貝葉斯模型。 簡介 單純貝氏是一種建分類器的簡單方法。該分類器模型會給問題例項分配用特徵值表示的類標籤，類標籤取自有限集合。它不是訓練這種分類器的單一演算法，而是一系列基於相同原理的演算法：所有單純貝氏分類器都假定樣本每個特徵與其他特徵都不相關。舉個例子，如果一種水果其具有紅，圓，直徑大概 3 英寸等特徵，該水果可以被判定為是蘋果。儘管這些特徵相互依賴或者有些特徵由其他特徵決定，然而單純貝氏分類器認為這些屬性在判定該水果是否為蘋果的機率分佈上獨立的。 對於某些型別的機率模型，在監督式學習的樣本集中能獲取得非常好的分類效果。在許多實際應用中，單純貝氏模型引數估計使用最大似然估計方法；換而言之，在不用到貝葉斯機率或者任何貝葉斯模型的情況下，單純貝氏模型也能奏效。 儘管是帶著這些樸素思想和過於簡單化的假設，但單純貝氏分類器在很多複雜的現實情形中仍能夠取得相當好的效果。2004 年，一篇分析貝葉斯分類器問題的文章揭示了單純貝氏分類器取得看上去不可思議的分類效果的若干理論上的原因。Harry Zhang The Optimality of Naive Bayes FLAIRS2004 conference available online PDF 儘管如此，2006 年有一篇文章詳細比較了各種分類方法，發現更新的方法（如和隨機森林）的效能超過了貝葉斯分類器。Caruana R and NiculescuMizil A An empirical comparison of supervised learning algorithms Proceedings of the 23rd international conference on Machine learning 2006 available online 單純貝氏分類器的一個優勢在於只需要根據少量的訓練資料估計出必要的引數（變數的均值和方差）。由於變數獨立假設，只需要估計各個變數的方法，而不需要確定整個協方差矩陣。 單純貝氏機率模型 理論上，機率模型分類器是一個條件機率模型。 p C vert F_1dotsF_n 獨立的類別變數 C 有若干類別，條件依賴於若干特徵變數 F_1F_2F_n。但問題在於如果特徵數量 n 較大或者每個特徵能取大量值時，基於機率模型列出機率表變得不現實。所以我們修改這個模型使之變得可行。 貝葉斯定理有以下式子： p C vert F_1dotsF_n frac p C p F_1dotsF_nvert Cp F_1dotsF_n 用樸素的語言可以表達為： mbox posterior frac mbox prior times mbox likelihoodmbox evidence 實際中，我們只關心分式中的分子部分，因為分母不依賴於 C 而且特徵 F_i 的值是給定的，於是分母可以認為是一個常數。這樣分子就等價於聯合分佈模型。 p C F_1 dots F_n 重複使用鏈式法則，可將該式寫成條件機率的形式，如下所示： p C F_1 dots F_n varpropto p C p F_1dotsF_nvert C varpropto p C p F_1vert C p F_2dotsF_nvert C F_1 varpropto p C p F_1vert C p F_2vert C F_1 p F_3dotsF_nvert C F_1 F_2 varpropto p C p F_1vert C p F_2vert C F_1 p F_3vert C F_1 F_2 p F_4dotsF_nvert C F_1 F_2 F_3 varpropto p C p F_1vert C p F_2vert C F_1 p F_3vert C F_1 F_2 dots p F_nvert C F_1 F_2 F_3dotsF_n1 現在 樸素 的條件獨立假設開始發揮作用：假設每個特徵 F_i 對於其他特徵 F_jjneq i 在給定類別 C 下是條件獨立的。這就意味著 p F_i vert C F_j p F_i vert C 對於 ine j，所以聯合分佈模型可以表達為 begin align p C vert F_1 dots F_n varpropto p C F_1 dots F_n varpropto p C p F_1vert C p F_2vert C p F_3vert C cdots varpropto p C prod_i1n p F_i vert Cend align 這意味著上述假設下，類變數 C 的條件分佈可以表達為： p C vert F_1dotsF_n frac 1Z p C prod_i1n p F_i vert C 其中 Z（證據因子）是一個只依賴與 F_1dotsF_n 等的縮放因子，當特徵變數的值已知時是一個常數。 由於分解成所謂的類先驗機率 p C 和獨立機率分佈 p F_ivert C，上述機率模型的可掌控性得到很大的提高。如果這是一個 k 分類問題，且每個 p F_ivert Cc 可以表達為 r 個引數，於是相應的單純貝氏模型有 k 1 n r k 個引數。實際應用中，通常取 k2（二分類問題），r1（伯努利分佈作為特徵），因此模型的引數個數為 2n1，其中 n 是二值分類特徵的個數。 從機率模型中構造分類器 討論至此為止我們匯出了獨立分佈特徵模型，也就是單純貝氏機率模型。單純貝氏分類器包括了這種模型和相應的決策規則。一個普通的規則就是選出最有可能的那個：這就是大家熟知的最大後驗機率（MAP）決策準則。相應的分類器便是如下定義的 mathrm classify 公式： mathrm classifyf_1dotsf_n underset coperatorname argmax p Cc displaystyleprod_i1n p F_if_ivert Cc 引數估計 所有的模型引數都可以透過訓練集的相關頻率來估計。常用方法是機率的最大似然估計。類的先驗機率可以透過假設各類等機率來計算（先驗機率 1 類的數量），或者透過訓練集的各類樣本出現的次數來估計（A 類先驗機率 （A 類樣本的數量）樣本總數）。為了估計特徵的分佈引數，我們要先假設訓練集資料滿足某種分佈或者非引數模型。George H John and Pat Langley 1995 Estimating Continuous Distributions in Bayesian Classifiers Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence pp 338345 Morgan Kaufmann San Mateo 高斯單純貝氏 如果要處理的是連續資料一種通常的假設是這些連續數值為高斯分佈。 例如，假設訓練集中有一個連續屬性，x。我們首先對資料根據類別分類，然後計算每個類別中 x 的均值和方差。令 mu_c 表示為 x 在 c 類上的均值，令 sigma2_c 為 x 在 c 類上的方差。在給定類中某個值的機率，P xvc，可以透過將 v 表示為均值為 mu_c 方差為 sigma2_c 正態分佈計算出來。如下， P xvctfrac 1sqrt 2pisigma2_cefrac vmu_c22sigma2_c 處理連續數值問題的另一種常用的技術是透過離散化連續數值的方法。通常，當訓練樣本數量較少或者是精確的分佈已知時，透過機率分佈的方法是一種更好的選擇。在大量樣本的情形下離散化的方法表現更優，因為大量的樣本可以學習到資料的分佈。由於單純貝氏是一種典型的用到大量樣本的方法（越大計算量的模型可以產生越高的分類精確度），所以單純貝氏方法都用到離散化方法，而不是機率分佈估計的方法。 樣本修正 如果一個給定的類和特徵值在訓練集中沒有一起出現過，那麼基於頻率的估計下該機率將為 0。這將是一個問題。因為與其他機率相乘時將會把其他機率的資訊統統去除。所以常常要求要對每個小類樣本的機率估計進行修正，以保證不會出現有為 0 的機率出現。 討論 儘管實際上獨立假設常常是不準確的，但單純貝氏分類器的若干特性讓其在實踐中能夠取得令人驚奇的效果。特別地，各類條件特徵之間的解耦意味著每個特徵的分佈都可以獨立地被當做一維分佈來估計。這樣減輕了由於維數災帶來的阻礙，當樣本的特徵個數增加時就不需要使樣本規模呈指數增長。然而單純貝氏在大多數情況下不能對類機率做出非常準確的估計，但在許多應用中這一點並不要求。例如，單純貝氏分類器中，依據最大後驗機率決策規則只要正確類的後驗機率比其他類要高就可以得到正確的分類。所以不管機率估計輕度的甚至是嚴重的不精確都不影響正確的分類結果。在這種方式下，分類器可以有足夠的魯棒性去忽略單純貝氏機率模型上存在的缺陷。 例項 性別分類 問題描述：透過一些測量的特徵，包括身高、體重、腳的尺寸，判定一個人是男性還是女性。 訓練 訓練資料如下： 性別 身高 英尺 體重 磅 腳的尺寸 英寸 男 6 180 12 男 592 511 190 11 男 558 57 170 12 男 592 511 165 10 女 5 100 6 女 55 56 150 8 女 542 55 130 7 女 575 59 150 9 假設訓練集樣本的特徵滿足高斯分佈，得到下表： 性別 均值 身高 方差 身高 均值 體重 方差 體重 均值 腳的尺寸 方差 腳的 尺寸 男性 5855 35033e02 17625 12292e02 1125 91667e01 女性 54175 97225e02 1325 55833e02 75 16667e00 我們認為兩種類別是等機率的，也就是 P male P female 05。在沒有做辨識的情況下就做這樣的假設並不是一個好的點子。但我們透過資料集中兩類樣本出現的頻率來確定 P C，我們得到的結果也是一樣的。 測試 以下給出一個待分類是男性還是女性的樣本。 性別 身高 英尺 體重 磅 腳的尺寸（英寸） 未知性別的樣本 6 130 8 我們希望得到的是男性還是女性哪類的後驗機率大。男性的後驗機率透過下面式子來求取 posterior male frac P male p height male p weight male p foot size maleevidence 女性的後驗機率透過下面式子來求取 posterior female frac P female p height female p weight female p foot size femaleevidence 證據因子（通常是常數）用來對各類的後驗機率之和進行歸一化 evidence P male p height male p weight male p foot size male P female p height female p weight female p foot size female 證據因子是一個常數（在正態分佈中通常是正數），所以可以忽略。接下來我們來判定這樣樣本的性別。 P male 05 p mbox height mbox male frac 1sqrt 2pi sigma2expleft frac 6mu22sigma2right approx 15789 其中 mu 5855，sigma2 35033e02 是訓練集樣本的正態分佈引數。注意，這裡的值大於 1 也是允許的 這裡是機率密度而不是機率，因為身高是一個連續的變數 p weight male 59881e06 p foot size male 13112e3 posterior numerator male 61984e09 P female 05 p height female 22346e1 p weight female 16789e2 p foot size female 28669e1 posterior numerator female 53778e04 由於女性後驗機率的分子比較大，所以我們預計這個樣本是女性。 文字分類 這是一個用單純貝氏分類做的一個文字分類問題的例子。考慮一個基於內容的文字分類問題，例如判斷郵件是否為垃圾郵件。想像文字可以分成若干的類別，首先文字可以被一些單詞集標註，而這個單詞集是獨立分佈的，在給定的 C 類文字中第 i 個單詞出現的機率可以表示為： p w_i vert C （透過這種處理，我們進一步簡化了工作，假設每個單詞是在文中是隨機分佈的 也就是單詞不依賴於文字的長度，與其他詞出現在文中的位置，或者其他文字內容。） 所以，對於一個給定類別 C，文字 D 包含所有單詞 w_i 的機率是 p Dvert Cprod_i p w_i vert C 我們要回答的問題是「文件 D 屬於類 C 的機率是多少？」換而言之 p C vert D 是多少？ 現在定義 p Dvert Cp Dcap Cover p C p Cvert Dp Dcap Cover p D 透過貝葉斯定理將上述機率處理成似然度的形式 p Cvert Dp Cover p Dp Dvert C 假設現在只有兩個相互獨立的類別，S 和 S（垃圾郵件和非垃圾郵件），這裡每個元素（郵件）要麼是垃圾郵件，要麼就不是。 p Dvert Sprod_i p w_i vert S p Dvertneg Sprod_i p w_ivertneg S 用上述貝葉斯的結果，可以寫成 p Svert Dp Sover p Dprod_i p w_i vert S p neg Svert Dp neg Sover p Dprod_i p w_i vertneg S 兩者相除 p Svert Dover p neg Svert Dp Sprod_i p w_i vert Sover p neg Sprod_i p w_i vertneg S 整理得 p Svert Dover p neg Svert Dp Sover p neg Sprod_i p w_i vert Sover p w_i vertneg S 這樣機率比 p S D p S D 可以表達為似然比。實際的機率 p S D 可以很容易透過 log p S D p S D 計算出來，基於 p S D p S D 1。 結合上面所討論的機率比，可以得到： ln p Svert Dover p neg Svert Dln p Sover p neg Ssum_i ln p w_ivert Sover p w_ivertneg S 這種對數似然比的技術在統計中是一種常用的技術。在這種兩個獨立的分類情況下（如這個垃圾郵件的例子），把對數似然比轉化為 S 曲線的形式。 最後文字可以分類，當 p Svert D p neg Svert D 或者 ln p Svert Dover p neg Svert D 0 時判定為垃圾郵件，否則為正常郵件。 參見 AODE 貝葉斯垃圾郵件過濾 貝葉斯網路 隨機森林 線性分類器 提升方法 模糊邏輯 邏輯斯諦迴歸 Class membership probabilities 神經網路 預測分析 感知機 支援向量機 貝葉斯定理 有監督學習 分類器 最大似然估計 貝葉斯機率 boosted trees 參考文獻 延伸閱讀 外部連結 Book Chapter Naive Bayes text classification Introduction to Information Retrieval Naive Bayes for Text Classification with Unbalanced Classes Benchmark results of Naive Bayes implementations Hierarchical Naive Bayes Classifiers for uncertain data an extension of the Naive Bayes classifier 軟體 Naive Bayes classifiers are available in many generalpurpose machine learning and NLP packages including Apache Mahout Mallet NLTK Orange scikitlearn and Weka IMSL Numerical Libraries Collections of math and statistical algorithms available in CC Fortran Java and CNET Data mining routines in the IMSL Libraries include a Naive Bayes classifier Winnow content recommendation Open source Naive Bayes text classifier works with very small training and unbalanced training sets High performance C any Unix An interactive Microsoft Excel spreadsheet Naive Bayes implementation using VBA requires enabled macros with viewable source code jBNC Bayesian Network Classifier Toolbox Statistical Pattern Recognition Toolbox for Matlab ifile the first freely available Naive Bayesian mailspam filter NClassifier NClassifier is a NET library that supports text classification and text summarization It is a port of Classifier4J Classifier4J Classifier4J is a Java library designed to do text classification It comes with an implementation of a Bayesian classifier Category 分類演演算法 Category 統計分類 Category 機率論