贝叶斯分类(朴素)
貝葉斯分類(樸素)
? 是一種統計學分類方法
? 可以用來對一個未知的樣本判定其屬于特定類的概率
? 分類模型是在有指導的學習下獲得
? 分類算法可與決策樹和神經網絡算法媲美
? 用于大型數據庫時具有較高的分類準確率和高效率。
基礎概念
樸素貝葉斯分類的假設前提:類別C確定的情況下,不同屬性(X1,X2)間是相互獨立的,即條件獨立。(樸素即為條件獨立)
即:C確定下,P(X1,X2)=P(X1)P(X2) ;或表示為:P(X1,X2|C)=P(X1|C)P(X2|C)
設X是未知類別的數據樣本(屬性值已知),H為假定:X屬于某特定類的類C。分類問題即為,確定P(H|X)——給定觀測數據樣本X,假定H成立的概率。
后驗概率:P(H|X),在條件X下,H的后驗概率
先驗概率:P(H)
貝葉斯定理
注:P(X/H)相當于已知帶標簽的數據,即有導師了。
換個表達形式就會明朗很多:
貝葉斯分類過程
假定有m個類別,C1,C2,……,Cm。根據一個未知的數據樣本X(即沒有類標號),分類法將預測X屬于具有最高后驗概率(條件X下)的類。即,樸素貝葉斯分類器將未知的樣本分配給類Ci,當且僅當:P(Ci|X) > P(Cj|X), 1<=j<=m,j≠i
根據貝葉斯定理:P(Ci|X) = P(X|Ci)*P(Ci)/P(X)
由于P(X)對所有類別為常數(也就是訓練樣本中,X特征的樣本數量占總樣本的比例)
只需要 P(X|Ci)*P(Ci) 最大即可。
如果類的先驗概率未知,則通常假設這些類是等概率的,即P(C1)=P(C2)=……=P(Cm),并據此對P(X|Ci)最大化,否則最大化P(X|Ci)*P(Ci)。
注意,類的后驗概率可以用P(Ct) = St/S計算,其中St是類別Ct在訓練樣本中的數量,S是訓練樣本總數。
給定具有許多屬性的數據集,計算P(X|Ci)的開銷可能非常大,為降低計算P(X|Ci)的開銷,可以做類條件獨立的樸素假定。給定樣本的類別號,假定屬性值相互條件獨立,即在屬性間不存在依賴關系,那就可以這樣來計算
概率P(x1|Ci)、P(x2|Ci)、……、P(xn|Ci)可由訓練樣本估值,其中
如果Ak是離散屬性,則P(xk|Ci)=sn/si,其中sn是Ak屬性上,屬性值為xk的類Ci的訓練樣本數,si是類為Ci的訓練樣本數。
如果Ak是連續值屬性,則通常假定該屬性服從高斯分布:
為對未知樣本X分類,對每個類Ci,計算P(X|Ci)P(Ci)。樣本X被分配到類別Ci,當且僅當:
P(X|Ci)P(Ci) > P(X|Cj)P(Cj),1<=j<=m,j≠i
換言之,X被指派到其P(X|Ci)P(Ci)最大的Ci。
理論上講,貝葉斯分類具有最小的出錯率,然而實踐中并非總是如此,這是由于其應用的假定(如類條件獨立性)的不準確性,以及缺乏可用的概率數據造成的。
拉普拉斯校正法
問題:如果某個P(xk|Ci)概率值為零,會發生什么?
導致這個Ci的概率值為0。
解決辦法:
拉普拉斯校準法:給未出現的情況+1,注意其他出現的情況也都要+1,且總數也要求和。
舉例:
貝葉斯分類例題
下表由雇員數據庫的訓練數據組成,數據已泛化。例如,age"31……35"表示年齡在31~35之間。對于給定的行,count表示該行具有特定值的元組數。
| sales | senior | 31……35 | 46K……50K | 30 |
| sales | junior | 26……30 | 26K……30K | 40 |
| sales | junior | 31……35 | 31K……35K | 40 |
| systems | junior | 21……25 | 46K……50K | 20 |
| systems | senior | 31……35 | 66K……70K | 5 |
| systems | junior | 26……30 | 46K……50K | 3 |
| systems | senior | 41……45 | 66K……70K | 3 |
| marketing | senior | 36……40 | 46K……50K | 10 |
| marketing | junior | 31……35 | 41K……45K | 4 |
| secretary | senior | 46……50 | 36K……40K | 4 |
| secretary | junior | 26……30 | 26K……30K | 6 |
給定一個數據元組,它在屬性department,age,salary的值分別為"system",“26……30"和"46K……50K”,該元組status的樸素貝葉斯分類是什么?
解答:
假設X={department=system, age=26……30, salary=46K……50K}
P(C|X) = P(X|C)P?/P(X)
P(X)是固定的不用算,只要計算P(X|C)P?最大即可。
總記錄數為52+113=165,
假設senior和junior對應的類別分別為C1,C2,則P(C1)=52/165,P(C2)=113/165
P(X|C1) = P(department=system|C1) x P(age=26……30|C1) x P(salary=46K……50K|C1)
= [(5+3) / 52] x (0/52) x [(30+10)/52]
因為這里的P(age=26……30|C1)=0,所以需要使用拉普拉斯校正,給senior對應的每一個年齡段樣本數+1,從21~50共有6個年齡段,所以P(age=26……30|C1)=1/58;
P(X|C1) = 0.154 x 0.017 x 0.769 = 0.002
P(X|C2) = P(department=system|C2) x P(age=26……30|C2) x P(salary=46K……50K|C2)
= (20+3)/113 x (40+3+6) x (20+3)/113
= 0.204 x 0.434 x 0.204 = 0.018
P(X|C1)P(C1) = 0.002 x 0.315 = 0.00063
P(X|C2)P(C2) = 0.018 x 0.685 = 0.01233
因為P(X|C2)P(C2) > P(X|C1)P(C1),所以該元組status的樸素貝葉斯分類是junior。
總結
- 上一篇: 人脸识别:FaceNet论文详解
- 下一篇: Java中CAS操作详解