樸素貝葉斯分類器

after=}}，在機器學習中是一系列以假設特徵之間強（樸素）獨立下運用貝葉斯定理為基礎的簡單。

單純貝氏自 1950 年代已廣泛研究，在 1960 年代初就以另外一個名稱引入到文字資訊檢索界中， 並仍然是文字分類的一種熱門（基準）方法，文字分類是以詞頻為特徵判斷檔案所屬類別或其他（如垃圾郵件、合法性、體育或政治等等）的問題。透過適當的預處理，它可以與這個領域更先進的方法（包括支援向量機）相競爭。 它在自動醫療診斷中也有應用。

單純貝氏分類器是高度可擴充套件的，因此需要數量與學習問題中的變數（特徵 / 預測器）成線性關係的引數。最大似然訓練可以透過評估一個封閉形式的表示式來完成， 只需花費線性時間，而不需要其他很多型別的分類器所使用的費時的迭代逼近。

在統計學和計算機科學文獻中，單純貝氏模型有各種名稱，包括簡單貝葉斯和獨立貝葉斯。 所有這些名稱都參考了貝葉斯定理在該分類器的決策規則中的使用，但單純貝氏不（一定）用到貝葉斯方法； 《》提到 “『單純貝氏』有時被稱為貝葉斯分類器，這個馬虎的使用促使真正的貝葉斯論者稱之為傻瓜貝葉斯模型。”

簡介

單純貝氏是一種建分類器的簡單方法。該分類器模型會給問題例項分配用特徵值表示的類標籤，類標籤取自有限集合。它不是訓練這種分類器的單一演算法，而是一系列基於相同原理的演算法：所有單純貝氏分類器都假定樣本每個特徵與其他特徵都不相關。舉個例子，如果一種水果其具有紅，圓，直徑大概 3 英寸等特徵，該水果可以被判定為是蘋果。儘管這些特徵相互依賴或者有些特徵由其他特徵決定，然而單純貝氏分類器認為這些屬性在判定該水果是否為蘋果的機率分佈上獨立的。

對於某些型別的機率模型，在監督式學習的樣本集中能獲取得非常好的分類效果。在許多實際應用中，單純貝氏模型引數估計使用最大似然估計方法；換而言之，在不用到貝葉斯機率或者任何貝葉斯模型的情況下，單純貝氏模型也能奏效。

儘管是帶著這些樸素思想和過於簡單化的假設，但單純貝氏分類器在很多複雜的現實情形中仍能夠取得相當好的效果。2004 年，一篇分析貝葉斯分類器問題的文章揭示了單純貝氏分類器取得看上去不可思議的分類效果的若干理論上的原因。 儘管如此，2006 年有一篇文章詳細比較了各種分類方法，發現更新的方法（如和隨機森林）的效能超過了貝葉斯分類器。

單純貝氏分類器的一個優勢在於只需要根據少量的訓練資料估計出必要的引數（變數的均值和方差）。由於變數獨立假設，只需要估計各個變數的方法，而不需要確定整個協方差矩陣。

單純貝氏機率模型

理論上，機率模型分類器是一個條件機率模型。

獨立的類別變數有若干類別，條件依賴於若干特徵變數

,,...,。但問題在於如果特徵數量較大或者每個特徵能取大量值時，基於機率模型列出機率表變得不現實。所以我們修改這個模型使之變得可行。

貝葉斯定理有以下式子：

用樸素的語言可以表達為：

實際中，我們只關心分式中的分子部分，因為分母不依賴於而且特徵的值是給定的，於是分母可以認為是一個常數。這樣分子就等價於聯合分佈模型。

重複使用鏈式法則，可將該式寫成條件機率的形式，如下所示：

:

:

:

:

:

現在 “樸素” 的條件獨立假設開始發揮作用：假設每個特徵對於其他特徵，在給定類別下是條件獨立的。這就意味著

對於，所以聯合分佈模型可以表達為

這意味著上述假設下，類變數的條件分佈可以表達為：

其中（證據因子）是一個只依賴與等的縮放因子，當特徵變數的值已知時是一個常數。

由於分解成所謂的類先驗機率和獨立機率分佈，上述機率模型的可掌控性得到很大的提高。如果這是一個分類問題，且每個可以表達為個引數，於是相應的單純貝氏模型有 (k − 1) + n r k 個引數。實際應用中，通常取（二分類問題），（伯努利分佈作為特徵），因此模型的引數個數為，其中是二值分類特徵的個數。

2.1 從機率模型中構造分類器

討論至此為止我們匯出了獨立分佈特徵模型，也就是單純貝氏機率模型。單純貝氏分類器包括了這種模型和相應的決策規則。一個普通的規則就是選出最有可能的那個：這就是大家熟知的最大後驗機率（MAP）決策準則。相應的分類器便是如下定義的公式：

引數估計

所有的模型引數都可以透過訓練集的相關頻率來估計。常用方法是機率的最大似然估計。類的先驗機率可以透過假設各類等機率來計算（先驗機率 = 1 / (類的數量)），或者透過訓練集的各類樣本出現的次數來估計（A 類先驗機率 =（A 類樣本的數量）/(樣本總數)）。為了估計特徵的分佈引數，我們要先假設訓練集資料滿足某種分佈或者非引數模型。

3.1 高斯單純貝氏

如果要處理的是連續資料一種通常的假設是這些連續數值為高斯分佈。

例如，假設訓練集中有一個連續屬性，。我們首先對資料根據類別分類，然後計算每個類別中的均值和方差。令 表示為在 c 類上的均值，令為 在 c 類上的方差。在給定類中某個值的機率，，可以透過將表示為均值為方差為正態分佈計算出來。如下，

處理連續數值問題的另一種常用的技術是透過離散化連續數值的方法。通常，當訓練樣本數量較少或者是精確的分佈已知時，透過機率分佈的方法是一種更好的選擇。在大量樣本的情形下離散化的方法表現更優，因為大量的樣本可以學習到資料的分佈。由於單純貝氏是一種典型的用到大量樣本的方法（越大計算量的模型可以產生越高的分類精確度），所以單純貝氏方法都用到離散化方法，而不是機率分佈估計的方法。

樣本修正

如果一個給定的類和特徵值在訓練集中沒有一起出現過，那麼基於頻率的估計下該機率將為 0。這將是一個問題。因為與其他機率相乘時將會把其他機率的資訊統統去除。所以常常要求要對每個小類樣本的機率估計進行修正，以保證不會出現有為 0 的機率出現。

討論

儘管實際上獨立假設常常是不準確的，但單純貝氏分類器的若干特性讓其在實踐中能夠取得令人驚奇的效果。特別地，各類條件特徵之間的解耦意味著每個特徵的分佈都可以獨立地被當做一維分佈來估計。這樣減輕了由於維數災帶來的阻礙，當樣本的特徵個數增加時就不需要使樣本規模呈指數增長。然而單純貝氏在大多數情況下不能對類機率做出非常準確的估計，但在許多應用中這一點並不要求。例如，單純貝氏分類器中，依據最大後驗機率決策規則只要正確類的後驗機率比其他類要高就可以得到正確的分類。所以不管機率估計輕度的甚至是嚴重的不精確都不影響正確的分類結果。在這種方式下，分類器可以有足夠的魯棒性去忽略單純貝氏機率模型上存在的缺陷。

例項

6.1 性別分類

問題描述：透過一些測量的特徵，包括身高、體重、腳的尺寸，判定一個人是男性還是女性。

6.1.1 訓練

訓練資料如下：

假設訓練集樣本的特徵滿足高斯分佈，得到下表：

我們認為兩種類別是等機率的，也就是 P (male)= P (female) = 0.5。在沒有做辨識的情況下就做這樣的假設並不是一個好的點子。但我們透過資料集中兩類樣本出現的頻率來確定 P (C)，我們得到的結果也是一樣的。

6.1.2 測試

以下給出一個待分類是男性還是女性的樣本。

我們希望得到的是男性還是女性哪類的後驗機率大。男性的後驗機率透過下面式子來求取

女性的後驗機率透過下面式子來求取

證據因子（通常是常數）用來對各類的後驗機率之和進行歸一化.

證據因子是一個常數（在正態分佈中通常是正數），所以可以忽略。接下來我們來判定這樣樣本的性別。

, 其中，是訓練集樣本的正態分佈引數。注意，這裡的值大於 1 也是允許的 – 這裡是機率密度而不是機率，因為身高是一個連續的變數.

由於女性後驗機率的分子比較大，所以我們預計這個樣本是女性。

6.2 文字分類

這是一個用單純貝氏分類做的一個文字分類問題的例子。考慮一個基於內容的文字分類問題，例如判斷郵件是否為垃圾郵件。想像文字可以分成若干的類別，首先文字可以被一些單詞集標註，而這個單詞集是獨立分佈的，在給定的 C 類文字中第 i 個單詞出現的機率可以表示為：

（透過這種處理，我們進一步簡化了工作，假設每個單詞是在文中是隨機分佈的 - 也就是單詞不依賴於文字的長度，與其他詞出現在文中的位置，或者其他文字內容。）

所以，對於一個給定類別 C，文字 D 包含所有單詞的機率是:

我們要回答的問題是「文件 D 屬於類 C 的機率是多少？」換而言之是多少？

現在定義

透過貝葉斯定理將上述機率處理成似然度的形式

假設現在只有兩個相互獨立的類別，S 和 ¬S（垃圾郵件和非垃圾郵件），這裡每個元素（郵件）要麼是垃圾郵件，要麼就不是。

用上述貝葉斯的結果，可以寫成

兩者相除:

整理得:

這樣機率比 p (S | D) /p (¬S | D) 可以表達為似然比。實際的機率 p (S | D) 可以很容易透過 log (p (S | D) /p (¬S | D)) 計算出來，基於 p (S | D) + p (¬S | D) = 1。

結合上面所討論的機率比，可以得到：

(這種對數似然比的技術在統計中是一種常用的技術。在這種兩個獨立的分類情況下（如這個垃圾郵件的例子），把對數似然比轉化為 S 曲線的形式)。

最後文字可以分類，當或者時判定為垃圾郵件，否則為正常郵件。