機器學習之樸素貝葉斯(Naive Bayes)
貝葉斯概率以18世紀的一位神學家托馬斯·貝葉斯(Thomas Bayes)的名字命名。
一、為什麼叫樸素貝葉斯?
樸素貝葉斯是經典機器學習演算法之一,是基於概率論的分類演算法,其原理簡單,易於實現,多使用於文字分類,如垃圾郵件過濾、新聞分類等。
樸素貝葉斯中的樸素是來源於該演算法是基於屬性條件獨立性假設,即對於已知類別,假設所有屬性(特徵)相互獨立;而貝葉斯則是其基於貝葉斯定理而得到的。
所以說樸素貝葉斯演算法就是基於"屬性條件獨立"和“貝葉斯定理”推導得到的演算法。
二、演算法原理
1、貝葉斯決策論
在講解原理之前,我們先來認識一下貝葉斯決策論,貝葉斯決策論(Bayesian decision theory)是概率框架下實施決策的基本方法。
有N種可能的類別標記,即,是將標記為判定為所產生的損失。基於後驗概率可獲得將樣本x分類為分類為所產生的期望損失(expected loss),即在樣本x上的“條件風險”(conditional risk):
貝葉斯判定準則(Bayes decision rule): 為最小化總體的風險,只需在每個樣本上選擇那個能使條件風險最小的類別標記,即
此時, 稱為貝葉斯最優分類器。
具體來說,若目標是最小化分類錯誤率,則誤判損失可以寫為
那麼此時的條件風險為:
於是,最小化分類錯誤率的貝葉斯最優分類器為:
也就是說,對每個樣本x,選擇能使後驗概率P(c|x)最大的類別標記。
不難看出,如果想使用貝葉斯判定準則來最小化決策風險,則需要先得到後驗概率P(c|x)。後驗概率的獲得主要有兩種策略:
- 判別式模型:給定x,通過直接建模P(c|x)來預測c。
- 生成式模型:先對聯合概率分佈P(x,c)進行建模,然後在獲得P(c|x)。
下面,我們來講生成式模型:
由貝葉斯定理,P(c|x)可寫為:
其中,P(c)是先驗概率;P(x|c)是樣本x相對於類標記c的類條件概率,或稱為“似然”;P(x)是用於歸一化的證據因子,在給定x的情況,P(x)與屬於哪個類無關,所以估計P(c|x)的問題就被轉換為如何基於訓練資料D來估計先驗概率P(c)和似然P(x|c)。
2、極大似然估計
對於這個函式:P(x|θ) 輸入有兩個:x表示某一個具體的資料;θ表示模型的引數。
- 如果θ是已知確定的,x是變數,這個函式叫做概率函式(probability function),它描述對於不同的樣本點x,其出現概率是多少。
- 如果x是已知確定的,θ是變數,這個函式叫做似然函式(likelihood function), 它描述對於不同的模型引數θ,出現x這個樣本點的概率是多少。
極大似然估計方法(Maximum Likelihood Estimate,MLE)也稱為最大概似估計或最大似然估計,是求估計的另一種方法。它是建立在極大似然原理的基礎上的一個統計方法。也就是在引數θ的可能取值範圍內,選取使L(θ)達到最大的引數值θ,作為引數θ的估計值。
3、樸素貝葉斯
樸素貝葉斯是貝葉斯決策論的一部分,其假設“屬性間條件獨立”,也就是說,對於已知的類別,假設所有的屬性相互獨立。從前面貝葉斯決策論,我們知道:
也就是估計P(c|x)的問題就被轉換為如何基於訓練資料D來估計先驗概率P(c)和似然(類條件概率)P(x|c)。P(x|c)是所有屬性上的聯合概率,難以從有限的訓練樣本直接估計而得,而樸素貝葉斯的屬性條件獨立假設則避開了該障礙。
基於屬性間條件獨立假設,對上式可以重寫為:
其中d為屬性數目,為在第i個屬性上的取值。
又由於對於給定的x,其對所有的類別來說P(x)都是相同的,所以基於風險(損失)最小化準則得到後驗概率最大化準則可以寫為:
這就是樸素貝葉斯分類器的表示式,即對於給定的樣本x,我們計算每個類別的後驗概率:
而其中得到的後驗概率最大的類別作為分類的結果。