假設有N種可能的類別標記,記爲:\[y=\left \{ c_{1},c_{2}...c_{N} \right \}\]現有一個樣本x給定其各個屬性的取值\[x_{i},i=1...d\],d爲x所包含的屬性的數目,若將x歸爲第c類的第k個屬性,則有
\[p(c|x)=\frac{p(c)p(x|c)}{p(x)}\](1)
然後根據計算每個屬性的概率,取最大的概率值作爲x屬於的c類的值。樸素貝葉斯分類器的最基本最核心的思想是“假設已有樣本中各個屬性之間獨立”,由此有:
\[p(c|x)=\frac{p(c)p(x|c)}{p(x)}=\frac{p(c)}{p(x)}\prod_{i=1}^{d}p(x_{i}|c)\] (2)
又因爲p(x)都是相同的,所以貝葉斯判定準則爲
\[h_{nb}(x)=arg\cdot max_{c\subseteq y}p(c)\prod_{i=1}^{d}p(x_{i}|c)\]\](3)
即判定準則取最大時x屬於的類別 ci;
估計類的先驗概率P(c)的計算是基於訓練集D的,併爲每個屬性估計條件概率\[p(x_{i}|c)\]。
令 \[D_{c}\]表示訓練集D種c類樣本的集合,若有充足的獨立同分布樣本,則有
\[p(c)= \frac{|Dc|}{|D|}\](4)
對於離散屬性而言,令\[D_{c,x_{i}}\]表示\[D_{c}\]中在第i個屬性上的取值\[x_{i}\]的樣本集合,則有
\[p(x_{i}|c)=\frac{|D_{c}|}{|D|}\](5)
對於連續屬性考慮概率密度函數,假定\[p(x_{i}|c)\sim N(\mu _{c,i},\delta _{c,i}^{2})\],其中利用極大似然估計對參數進行計算有:
\[\mu _{c,i}=\frac{1}{|D_{c}|}\sum_{x\subseteq D_{c}}x_{i}\]
\[\delta_{c,i}=\frac{1}{|D_{c}|}\sum_{x\subseteqD_{c}}(x-\bar{\mu_{c,i}})(x-\bar{\mu _{c,i}})^{T}\](6)
所以:
\[p(x_{i}|c)=\frac{1}{\sqrt{2\pi }\delta }exp(-\frac{x_{i}-\mu _{c,i}^{2}}{2\delta ^{2}})\](7)
同時\[\prod_{i=1}^{d}p(x_{i}|c)\]是一個屬性的連乘過程,對於第i個屬性可能會存在在c類中沒有出現過,但是將含有i個屬性的樣本x放入c的概率計算爲0顯然是不合理的,所以可進行“平滑處理”,常用的方法爲“拉普拉斯修正”,具體來說,令N表示訓練集D中可能含有的類別數(c的個數),\[N_{i}\]表示第i個屬性的取值數,則(4)(5)修正如下:
\[\bar{p(c)}=\frac{|D_{c}|+1}{|D|+N}\](8)
\[\bar{p(x_{i}|c)}=\frac{|D_{c,x_{i}}|+1}{|D_{_{c}}|+N_{i}}\](9)
實例
數據集如下:
從該數據集計算得到的先驗概率以及每個離散屬性的類條件概率、連續屬性的類條件概率分佈的參數(樣本均值和方差)如下:
先驗概率:P(Yes)=0.3;P(No)=0.7
P(有房=是|No) = 3/7
P(有房=否|No) = 4/7
P(有房=是|Yes) = 0
P(有房=否|Yes) = 1
P(婚姻狀況=單身|No) = 2/7
P(婚姻狀況=離婚|No) = 1/7
P(婚姻狀況=已婚|No) = 4/7
P(婚姻狀況=單身|Yes) = 2/3
P(婚姻狀況=離婚|Yes) = 1/3
P(婚姻狀況=已婚|Yes) = 0
年收入:
如果類=No:樣本均值=110;樣本方差=2975
如果類=Yes:樣本均值=90;樣本方差=25
現有新樣本:
X={有房=否,婚姻狀況=已婚,年收入=120K},通過計算確定是否存在拖欠貸款的行爲:
所以p(年收入=120k|NO)=\[\frac{1}{\sqrt{2\pi \cdot 2975}}exp(-\frac{(120-110)^{2}}{2\cdot 2975})\approx 0.648\]
p(年收入=120k |YES)=\[\frac{1}{\sqrt{2\pi \cdot 25}}exp(-\frac{(120-90)^{2}}{2\cdot 25})\approx 1\]
同時P(婚姻狀況=已婚|Yes) = 0,計算時會存在乘的現象,主要是因爲樣本不夠大,此時便可採用“拉普拉斯修正”進行平滑處理。
所以對於P(婚姻狀況=已婚|Yes) 來說:
\[D_{c,x_{i}}\]:表示在YES中婚姻狀況爲已婚的人數=0;
\[D_{c}\]:表示婚姻狀況可能的取值數=2(yes or no)
\[N_{i}\]:yes類中包含的樣本數=3
所以根據拉普拉斯修正有:P(婚姻狀況=已婚|Yes)=
所以:
P(No)*P(有房=否|No)*P(婚姻狀況=已婚|No)*P(年收=120K|No)=0.7*4/7*4/7*0.684=0.156
P(Yes)*P(有房=否|Yes)*P(婚姻狀況=已婚|Yes)*P(年收入=120K|Yes)=0.3*1*0.2*1=0.06
因爲0.156>0.06,故認爲該樣本屬於NO,即沒有拖欠貸款。
總結:樸素貝葉斯在分類問題中應用非常廣泛,特別是在垃圾郵件的處理中,雖然說對於有些特徵獨立性假設並不是很合理,但是它的分類效果卻非常不錯,但是由於樸素貝葉斯分類的假設是所有的特徵是獨立的,所以經常被攻擊,所以有學者提出了基於樸素貝葉斯假設開始,利用T檢驗和卡方分佈來判斷特徵之間的獨立性關係,從而從建立樸素貝葉斯網絡開始,逐步計算特徵之間的非獨立關係,從而最後監理處貝葉斯網絡,有興趣的可以去看看這篇參考文獻:Section. A Bayesian Classifier Learning Algorithm Based on Optimization Model[J]. Mathematical Problems in Engineering,2013,(2013-2-6), 2013, 2013(2013):681-703.
當然除了樸素貝葉斯網絡,還有基於樸素貝葉斯擴展的TAN,BAN網絡等,在後期我再一一講述。