机器学习(8):朴素贝叶斯
最近自己會把自己個人博客中的文章陸陸續續的復制到CSDN上來,歡迎大家關注我的 個人博客,以及我的github。
本文主要講解有關樸素貝葉斯的相關知識。
本文主要是依據李航老師的《統計學習方法》和鄒博老師的機器學習教學視頻總結編寫的。文中所用到的有關機器學習的基本概念和方法可以參考本人博客中該系列之前的文章,或者直接上網搜索相關的內容。以下文章所列出的公式以及公式的推導讀者們最好是在草稿本上自己推導一遍。由于本人水平所限,文章中難免有錯誤和不當之處,歡迎大家多多批評指正!
貝葉斯分類是一種利用貝葉斯公式來進行分類的算法總稱,其中樸素貝葉斯是最簡單的一種,它假設了各個樣本特征之間相互獨立。
一、先驗概率和后驗概率
先驗概率:指根據以往經驗和分析得到的概率。
后驗概率:事情已經發生,要求這件事情發生的原因是由某個因素引起的可能性的大小。
二、樸素貝葉斯
首先來看下貝葉斯公式:
P(Y∣X)=P(X∣Y)?P(Y)P(X)P(Y|X)=\frac{P(X|Y)\cdot P(Y)}{P(X)} P(Y∣X)=P(X)P(X∣Y)?P(Y)?
當用作對樣本進行分類時,可以用下面的公式來理解:
P(類別∣特征)=P(特征∣類別)?P(類別)P(特征)公式(1)P(類別|特征)=\frac{P(特征|類別)\cdot P(類別)}{P(特征)}\quad\quad公式(1) P(類別∣特征)=P(特征)P(特征∣類別)?P(類別)?公式(1)
其中:
- 已知樣本的某個特征,求該樣本屬于某個類別的概率P(類別∣特征)P(類別|特征)P(類別∣特征);
- 已知樣本所屬類別時某個特征出現的概率P(特征∣類別)P(特征|類別)P(特征∣類別);
- 該樣本所屬類別出現的概率P(類別)P(類別)P(類別);
- 樣本的某個特征出現的概率P(特征)P(特征)P(特征)
在最一般的情況下,樣本的所有特征不都相互獨立,如果樣本有多個特征,并且每個特征都有多個不同的取值時,那么要計算P(特征∣類別)P(特征|類別)P(特征∣類別)是比較困難的。所以樸素貝葉斯加入了一個很強的假設條件:所有的樣本特征都是相互獨立的。這樣一來,就可以利用以下公式來進行計算了:
P(特征1,特征2,...,特征n∣類別)=∏i=1nP(特征i∣類別)公式(2)P(特征1,特征2,...,特征n|類別)=\prod_{i=1}^nP(特征i|類別)\quad\quad公式(2) P(特征1,特征2,...,特征n∣類別)=i=1∏n?P(特征i∣類別)公式(2)
這樣一來,P(特征∣類別)P(特征|類別)P(特征∣類別) 就變得可以計算了。
三、樸素貝葉斯的參數估計
在公式 (1) 中,當給定樣本集時,由于計算樣本屬于每個類別時等式右邊的分母都相等,所以只需要計算分子就可以了。而又因為樸素貝葉斯假定了樣本的特征之間相互獨立,所以 P(類別)P(類別)P(類別) 和 P(特征i∣類別)P(特征i|類別)P(特征i∣類別) 都可以通過極大似然估計法估計出相應的概率,P(類別)P(類別)P(類別) 的極大似然估計是:
P(類別=Ck)=∑i=1NI(類別=Ck)NP(類別=C_k)=\frac{\sum_{i=1}^N{I(類別=C_k)}}{N} P(類別=Ck?)=N∑i=1N?I(類別=Ck?)?
其中 N 是樣本的個數;I()I()I() 是指示函數,當其中條件成立時函數值為1,反之為 0 ;CkC_kCk?是第 k 個類別。
P(特征∣類別)P(特征|類別)P(特征∣類別)的極大似然估計為:
P(特征=Aj∣類別=Ck)=∑i=1NI(特征=Aj,類別=Ck)∑i=1NI(類別=Ck)P(特征=A_j|類別=C_k)=\frac{\sum_{i=1}^N{I(特征=A_j,類別=C_k)}}{\sum_{i=1}^NI(類別=C_k)} P(特征=Aj?∣類別=Ck?)=∑i=1N?I(類別=Ck?)∑i=1N?I(特征=Aj?,類別=Ck?)?
其中 AjA_jAj? 是第 j 個特征。
至此,公式(1)中等式右邊的概率都可以通過給定的樣本集計算出來了,帶入公式后就得到了P(類別∣特征)P(類別|特征)P(類別∣特征)。得到了樣本屬于每個類別的概率后,只需要把該樣本分類為概率最高的類就好了。
四、貝葉斯估計
從公式(2)中你會發現,如果有一個P(特征i∣類別)P(特征i|類別)P(特征i∣類別)為0,則整個概率就為0了,這會使分類產生一定的誤差,為了解決該辦法可以使用貝葉斯估計,具體的貝葉斯估計如下:
P(類別=Ci∣特征=Aj)=∑I(特征=Aj,類別=Ci)+λ∑I(類別=Ci)+Sj?λP(類別=C_i|特征=A_j)=\frac{\sum I(特征=A_j,類別=C_i)+\lambda}{\sum I(類別=C_i)+S_j\cdot\lambda} P(類別=Ci?∣特征=Aj?)=∑I(類別=Ci?)+Sj??λ∑I(特征=Aj?,類別=Ci?)+λ?
其中 SjS_jSj?是第 j 個特征的取值個數; λ\lambdaλ 是一個非負數,該值通常取 1 ,這時成為拉普拉斯平滑,而當 λ=0\lambda=0λ=0 時就是極大似然 估計。
總結
以上是生活随笔為你收集整理的机器学习(8):朴素贝叶斯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PID与伺服驱动器
- 下一篇: phantomJs原理