機器學習-貝葉斯分類器

積跬步以致千里,積怠惰以致深淵

注:本篇文章在整理時主要參考了 周志華 的《機器學習》。

主要內容

通過某對象的先驗概率,利用貝葉斯公式計算出其后驗概率,即該對象屬于某一類的概率,選擇具有最大后驗概率的類作為該對象所屬的類。

先驗概率:指根據以往經驗和分析得到的概率;

后驗概率:通過調查或其它方式獲取新的附加信息,利用貝葉斯公式對先驗概率進行修正,而后得到的概率。

舉例說明:想象有 A、B、C 三個不透明的碗倒扣在桌面上,已知其中有(且僅有)一個瓷碗下面蓋住一個雞蛋。此時請問,雞蛋在 A 碗下面的概率是多少?答曰 1/3。緊接著,有人揭開了 C 碗,發現 C 碗下面沒有蛋。此時再問:雞蛋在 A 碗下面的概率是多少?答曰 1/2。注意,由于有“揭開C碗發現雞蛋不在C碗下面”這個新情況,對于“雞蛋在 A 碗下面”這件事的主觀概率由原來的 1/3 上升到了1/2。這里的先驗概率就是 1/3,后驗概率是 1/2。

也就是說“先”和“后”是相對于引起主觀概率變化的那個新情況而言的。

貝葉斯決策

假設 n維特征向量:x=<x1,x2,...,xn> ;類別標簽集合:y∈{c1,c2,...,ck} ;特征向量x屬于類別ci的概率:P(y=ci | x)。

我們決策的目標是最小化分類錯誤率,貝葉斯最優分類器要對每個樣本 x,選擇能使后驗概率 P( y=ci | x )最大的類別 c 標記。可在現實任務中后驗概率通常難以直接獲得,依據貝葉斯定理 P( y=ci | x ) 可寫為:

將求后驗概率P(y=ci | x)的問題轉變為求先驗概率P(y=ci)和條件概率P(x | y=ci)。

P( y=ci )

類先驗概率 P( y=ci ) 表達了樣本空間中各類樣本所占的比例,根據大數定律,當訓練集包含充足的獨立同分布樣本時,P(c) 可通過各類樣本出現的頻率來進行估計。

P( x | y=ci )

因為對于類條件概率 P( x | y=ci ) 來說,由于它涉及關于 x 所有屬性的聯合概率,直接根據樣本出現的頻率來估計將會遇到嚴重的困難(想象一下,d 個屬性就會有 2 的 d 次方種可能的取值,在現實中,這個種類數往往大于訓練樣本)。

極大似然估計

針對這種情況,類條件概率的一種常用策略是先假定其具有某種確定的概率分布形式,再基于訓練樣本對概率分布的參數進行估計。實際上,概率分布的訓練過程就是參數估計(parameter estimation)過程。對于條件概率 P( x | y=ci ),我們可以采用極大似然估計來根據數據采樣來估計概率分布參數。對參數進行極大似然估計,就是試圖在參數所有可能的取值中,找到一個能使數據出現的“可能性”最大的值。

需注意的是,這種參數化的方法雖然能使類條件概率估計變得相對簡單,但估計結果的準確性嚴重依賴于所假設的概率分布形式是否符合潛在的真實數據分布。

極大似然估計是對類條件概率的分布形式進行假設,然后通過計算來對概率分布參數進行近似的方法,其是在對聯合概率上的求解。但是,我們要對數據進行準確分類是否真的需要進行這么復雜的求解過程呢?本章針對樣本屬性間的獨立性不同介紹了不同的使用貝葉斯決策論構建分類器的方法,下邊我將一一進行介紹。

樸素貝葉斯分類器

樸素貝葉斯分類器(naive Bayes classifier)是采用了“屬性條件獨立性假設”的一種分類器:其通過對已知類別,假設所有屬性相互獨立,來避開聯合概率這個障礙。因為這個假設在大多數情況都是不成立的,這也正是“樸素(naive)”的來源。(假設我們需要胸圍、腰圍、臀圍來描述一個人的特征,很顯然特征屬性之間不是獨立的)在屬性條件獨立的假設基礎下,類條件概率可表示為:

其中 d 為屬性數目,xi 為 x 在第 i 個屬性上的取值。

顯然,樸素貝葉斯分類器的訓練過程就是基于訓練集 D 來估計類先驗概率 P(c), 并為每個屬性估計條件概率 P( xi | c )。

對離散屬性而言,令 Dc 表示數據集在類別 c 上的樣本數,Dc,xi 表示 Dc 中在第 i 個屬性上取值為 xi 的樣本組成的集合,?則條件概率 P( xi | c) 可估計為。

對連續屬性可考慮概率密度函數,假定p(xi|c)~N(μc,i, σ^2c,i),其中μc,i和σ^2c,i分別是第c類樣本在第i個屬性上取值的均值和方差,則:

拉普拉斯修正

若某個屬性值在訓練集中沒有與某個類同時出現過,則直接進行概率估計和判別連乘式計算出的概率值為零(即,當其中任意一個屬性的概率 P( xi | c ) 為0時,會導致總的類條件概率 P( x | c ) 為0)。因此,無論該樣本的其他屬性是什么,哪怕在其他屬性上明顯是“是”,分類結果都將是“否”,這顯然不太合理。

為了避免其他屬性攜帶的信息被訓練集中未出現的屬性值“抹去”,在估計概率值時通常要進行“平滑(smoothing)”,常用“拉普拉斯修正(Laplacian correction)”。具體來說,另N表示訓練集D中可能的類別數,Ni表示第i個屬性可能的取值數,則:

拉普拉斯修正避免了因訓練集樣本不充分而導致概率估值為零的問題,并且在訓練集變大時,修正過程所引入的先驗(prior)的影響也會逐漸變得可忽略,使得估值漸趨向于實際概率值。

上式的計算結果通過簡單的統計工作即可得到,這大大的降低了訓練的難度。

半樸素貝葉斯分類器

樸素貝葉斯分類器采用了屬性條件獨立性假設,但在現實任務中,這個假設往往很難成立。于是嘗試對條件獨立性假設進行一定程度的放松,產生了一類成為“半樸素貝葉斯分類器(semi-naive Bayes classifiers)”的學習方法。

基本思想:適當考慮一部分屬性間的相互依賴信息,從而既不需進行完全聯合概率計算,又不至于徹底忽略了比較強的屬性以來關系。

獨依賴估計(One-Dependent Estimator,簡稱ODE)是半樸素分類器最常用的一種策略,顧名思義,所謂“獨依賴”就是假設每個屬性在類別之外最多僅依賴于一個其它屬性。這時類條件概率可轉化為:

P( x | c ) = P( x1 | c, pa1 ) * P( x2 | c, pa2 ) * ... * P( xd | c, pad )

其中 pai 為屬性 xi 所依賴的屬性,稱為 xi 的父屬性。對每個屬性,若其父屬性已知,則可采用類似式(3)的辦法來估計概率值 P( xi | c, pai )。

于是,問題的關鍵就轉化為如何確定每個屬性的父屬性,不同的做法產生不同的獨依賴分類器。

[1]所有屬性都依賴于同一個屬性:SPODE(Super-Parent ODE)

[2]最大帶權生成樹算法基礎上構建依賴:TAN(Tree Augmented naive Bayes)

[3]對每個屬性構建SPODE,并將結果集成起來作為最終結果:AODE(Averaged One-Dependent Estimator)

總結

1)貝葉斯分類器是基于貝葉斯決策論的基礎上構建的,目的是對每個樣本 x,選擇能使后驗概率 P( c | x )最大的類別標記

2)現實中?P( c | x ) 較難獲得,所以將求后驗概率 P( c | x ) 的問題轉變為求先驗概率 P( c ) 和條件概率 P( x | c )

3)根據大數定律,P( c ) 可通過各類樣本出現的頻率來進行估計

4)在完全遵守“屬性條件獨立性假設”時,類條件概率 P( x | c ) 可通過每個屬性單獨的條件概率的乘積得到

5)在適當放松“屬性條件獨立性假設”時,類條件概率 P( x | c ) 可通過每個屬性在其父結點下的條件概率的乘積得到

6)在不清楚屬性的條件獨立性情況時,貝葉斯網是一個有效的算法,能對屬性之間的依賴關系進行計算和評估,以找出一個最佳的分類模型

7)貝葉斯網學習的首要任務就是根據訓練數據集來找出結構最“恰當”的貝葉斯網結構

8)拉普拉斯修正實質上假設了屬性值與類別均勻分布,這是在樸素貝葉斯學習過程中額外引入的關于數據的先驗。

9)“平滑”處理是解決零這個特殊值對結果不利影響的一個好策略

10)當遇到不完整的訓練樣本時,可通過使用EM算法對模型參數進行估計來解決

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容