P ( A ∣ B ) = P ( A , B ) P ( B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B) = \frac{P(A,B)}{P(B)} = \frac{P(B|A)P(A)}{P(B)} P(A∣B)=P(B)P(A,B)=P(B)P(B∣A)P(A)
所有特征条件独立于决策(特征独立性),即:
P ( f 1 , … , f d ∣ c l a s s ) = ∏ i = 1 d P ( f i ∣ c l a s s ) P(f_1,\dots,f_d|class) = \prod^d_{i=1}P(f_i|class) P(f1,…,fd∣class)=i=1∏dP(fi∣class)
对于连续属性可考虑为概率密度函数,假定 p ( x i ∣ c ) ∼ N ( μ c , i , σ c , i 2 ) p(x_i|c)\sim\mathcal{N}(\mu_{c,i},\sigma_{c,i}^2) p(xi∣c)∼N(μc,i,σc,i2),其中 μ c , i \mu_{c,i} μc,i和 σ c , i 2 \sigma_{c,i}^2 σc,i2分别是第c类样本在第i个属性上取值的均值和方差,则有:
p ( x i ∣ c ) = 1 2 π σ c , i e x p ( − ( x i − μ c , i ) 2 2 σ c , i 2 ) p(x_i|c) = \frac{1}{\sqrt{2\pi}\sigma_{c,i}}exp\bigg(-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2}\bigg) p(xi∣c)=2πσc,i1exp(−2σc,i2(xi−μc,i)2)
训练样本如下
问题:现在又来了第七个病人,是一个打喷嚏的建筑工人,请问他患上感冒的概率有多大?
P ( 感冒 ∣ 打喷嚏,建筑工人 ) = P ( 打喷嚏,建筑工人 ∣ 感冒 ) P ( 感冒 ) P ( 打喷嚏,建筑工人 ) P(感冒|打喷嚏,建筑工人) = \frac{P(打喷嚏,建筑工人|感冒)P(感冒)}{P(打喷嚏,建筑工人)} P(感冒∣打喷嚏,建筑工人)=P(打喷嚏,建筑工人)P(打喷嚏,建筑工人∣感冒)P(感冒)
P ( 感冒 ∣ 打喷嚏,建筑工人 ) = P ( 打喷嚏 ∣ 感冒 ) P ( 建筑工人 ∣ 感冒 ) P ( 感冒 ) P ( 打喷嚏 ) P ( 建筑工人 ) P(感冒|打喷嚏,建筑工人) = \frac{P(打喷嚏|感冒)P(建筑工人|感冒)P(感冒)}{P(打喷嚏)P(建筑工人)} P(感冒∣打喷嚏,建筑工人)=P(打喷嚏)P(建筑工人)P(打喷嚏∣感冒)P(建筑工人∣感冒)P(感冒)
首先估计类先验概率P©,显然有:
P(好瓜 = 是) = 8 17 ≈ 0.471 \frac{8}{17} \approx 0.471 178≈0.471
P(好瓜 = 否) = 9 17 ≈ 0.529 \frac{9}{17} \approx 0.529 179≈0.529
然后,为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c)
由于 0.038 > 6.80 × 1 0 − 5 0.038 > 6.80 \times 10^{-5} 0.038>6.80×10−5,因此,朴素贝叶斯分类器将测试样本判别为好瓜。
需要注意,若某个属性值在训练集中没有与某个类同时出现过,则直接按上述方法将会出现问题。
例如,在使用西瓜数据集3.0训练朴素贝叶斯分类器时,对一个“敲声 = 清脆”的测试用例,有 P 清脆 ∣ 是 = P ( 敲声 = 清脆 ∣ 好瓜 = 是 ) = 0 8 = 0 P_{清脆|是} = P(敲声 = 清脆|好瓜 = 是) = \frac{0}{8} = 0 P清脆∣是=P(敲声=清脆∣好瓜=是)=80=0
则计算出的概率为0,无论该样本的其他属性是什么,哪怕在其他属性上明显像好瓜,分类的结果都是否,这显然不太合理。
为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常需要进行“平滑”,常用“拉普拉斯修正”。
令 N N N 表示训练集D中可能的类别数, N i N_i Ni表示第i个属性可能的取值数,修正得:
P ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i P(x_i|c) = \frac{|D_{c,x_i}|+1}{|D_c|+N_i} P(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
例如,本例子中,类先验概率可估计为:(2为该属性可取“是”,“否”两个类别)
P(好瓜 = 是) = 8 + 1 17 + 2 ≈ 0.474 \frac{8+1}{17+2} \approx 0.474 17+28+1≈0.474
P(好瓜 = 否) = 9 + 1 17 + 2 ≈ 0.526 \frac{9+1}{17+2} \approx 0.526 17+29+1≈0.526
直观上:
联合分布:
P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ∣ x 1 , x 2 , x 3 ) P ( x 5 ∣ x 1 , x 3 ) P ( x 6 ∣ x 4 ) P ( x 7 ∣ x 4 , x 5 ) P(x1)P(x2)P(x3)P(x4|x1,x2,x3)P(x5|x1,x3)P(x6|x4)P(x7|x4,x5) P(x1)P(x2)P(x3)P(x4∣x1,x2,x3)P(x5∣x1,x3)P(x6∣x4)P(x7∣x4,x5)
使用贝叶斯分类方法预测一个客户(性别=女,婚姻状态=已婚,是否有房=无房),是否会购买此保险,写出详细的计算过程
解答过程:
1.由训练集建立朴素贝叶斯网络
2.由训练集得出先验概率与条件概率
3.计算联合条件概率
记客户X = (性别 = 女,婚姻状态 = 已婚,是否有房 = 无房)
P(X|购买保险 = 是) = P(性别 = 女|购买保险 = 是) * P(婚姻状态 = 已婚|购买保险 = 是) * P(是否有房 = 无房|购买保险 = 是) = 0.25 * 0 * 0 = 0
P(X|购买保险 = 否) = 0.667 * 0.5 * 0.167 = 0.056
4.预测客户X是否购买保险
P(X|购买保险 = 是) * P(购买保险 = 是) = 0 * 0.4 = 0
P(X|购买保险 = 否) * P(购买保险 = 否) = 0.056 * 0.6 = 0.0336
结论:预测客户X不会购买此保险