核心:貝葉斯定理+條件獨立性假設。
1.貝葉斯定理:
其中,(x1,...,xn)爲特徵向量,y爲數據類別。
2.分類:
貝葉斯分類問題可描述爲:對特徵向量爲X=(x1,x2,...,xn)的數據項進行分類。即對於給定的輸入X,計算該數據項對每個類別的後驗概率 P(Y=ck | X=(x1,...,xn)),將後驗概率最大的類作爲X的分類輸出。
後驗概率的計算即根據貝葉斯定理,有:
a.分母可由全概率公式展開爲
b.分子部分爲複雜的條件概率乘法,樸素貝葉斯作了條件獨立性假設,即認爲樣本的各維特徵都是獨立的(由於這是一 個較強的假設,樸素貝葉斯也由此得名),所以分子可化爲
這樣,樸素貝葉斯分類的基本公式即爲
注意到,分母對於所有的類別都是相同的,我們要找出最大概率對應的類別,只考慮分子即可,
所以,分類器即爲
3.平滑處理
(參考:李航《統計學習方法》)
在計算概率時,可能出現概率爲0的情況,如某個離散型隨機變量觀測值的某一維並未在訓練集中出現,則其條件概率爲0,導致對應類別的後驗概率爲0,失去了觀測的條件,這是不合理的,會使分類產生偏差。爲此,需進行一定的平滑處理。
方法如下,對每個類別中的觀測樣本數加上一個常數。
先驗概率:
條件概率:
當lambda=1時,稱爲拉普拉斯平滑(Laplace smoothing).
在統計學上,將這種估計方法稱爲貝葉斯估計。
4.例子:性別分類
來自http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html
下面是一組人類身體特徵的統計資料:
性別 身高(英尺) 體重(磅) 腳掌(英寸)
男 6 180 12
男 5.92 190 11
男 5.58 170 12
男 5.92 165 10
女 5 100 6
女 5.5 150 8
女 5.42 130 7
女 5.75 150 9
已知某人身高6英尺、體重130磅,腳掌8英寸,請問該人是男是女?
解:根據樸素貝葉斯分類器,計算下面兩個式子的值,比較大小即可。
此人爲男性概率: P(男) x P(身高|男) x P(體重|男) x P(腳掌|男)
此人爲女性概率: P(女) x P(身高|女) x P(體重|女) x P(腳掌|女)
a.先驗概率P(男)和P(女)即爲訓練數據中,男性樣本和女性樣本的佔比。
b.這裏的困難在於,由於身高、體重、腳掌都是連續變量,不能採用離散變量的方法計算概率。而且由於樣本太少,所以也無法分成區間計算。怎麼辦?
這時,可以假設男性和女性的身高、體重、腳掌都是正態分佈,通過樣本計算出均值和方差,也就是得到正態分佈的密度函數。有了密度函數,就可以把值代入,算出某一點的密度函數的值(也即常用的高斯型樸素貝葉斯算法GaussianNB)。
比如,男性的身高是均值5.855、方差0.035的正態分佈。所以,男性的身高爲6英尺的概率的相對值等於1.5789(大於1並沒有關係,因爲這裏是密度函數的值,只用來反映各個值的相對可能性)。
將所需的先驗概率和條件概率計算出來後,即可計算出性別的分類結果:
男性:P(身高=6|男) x P(體重=130|男) x P(腳掌=8|男) x P(男)
= 6.1984 x e-9
女性:P(身高=6|女) x P(體重=130|女) x P(腳掌=8|女) x P(女)
= 5.3778 x e-4
可以看到,女性的概率比男性高,所以判斷該人爲女性。
5.Python實現
鳶尾花數據實驗,參考https://blog.csdn.net/carmelcarmen/article/details/79250551
參考:
1.李航,《統計學習方法》
2.https://blog.csdn.net/cxmscb/article/details/69267326
3.http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html
4.https://www.cnblogs.com/pinard/p/6074222.html
5.http://sklearn.apachecn.org/cn/0.19.0/modules/naive_bayes.html