1.贝叶斯公式
已知随机事件A、B发生的概率P(A)和P(B),以及A发生条件下B发生的概率P(B|A),那么B发生的条件下A发生的概率为:
P(A∣B)=P(A)P(B∣A)P(B)
\begin{aligned}
P(A|B)=\cfrac{P(A)P(B|A)}{P(B)}
\end{aligned}
P(A∣B)=P(B)P(A)P(B∣A)
贝叶斯公式有何实际意义?我们看个癌症的实例:
某城市有足够多的人群作为样本,人群中得癌症的概率为0.005,其中得癌症检测结果为阳性的概率为0.9,而未得癌
症检测结果为阳性的概率为0.05.现在已知某人检测结果为阳性,他患有癌症的概率为多少?
设事件AAA为患有癌症,A‾\overline{A}A为未患癌症。
设事件BBB为检测结果为阳性。
由题可知,P(A)=0.005,P(A‾)=0.995,P(B∣A)=0.9,P(B∣A‾)=0.05P(A)=0.005,P(\overline{A})=0.995,P(B|A)=0.9,P(B|\overline{A})=0.05P(A)=0.005,P(A)=0.995,P(B∣A)=0.9,P(B∣A)=0.05
那么,P(B)=P(A)P(B∣A)+P(A‾)P(B∣A‾)=0.005∗0.9+0.995∗0.05=0.05425P(B)=P(A)P(B|A)+P(\overline{A})P(B|\overline{A})=0.005*0.9+0.995*0.05=0.05425P(B)=P(A)P(B∣A)+P(A)P(B∣A)=0.005∗0.9+0.995∗0.05=0.05425
则,
P(A∣B)=P(A)P(B∣A)P(B)=0.005∗0.90.05425≈0.083
\begin{aligned}
P(A|B)=\cfrac{P(A)P(B|A)}{P(B)}=\cfrac{0.005*0.9}{0.05425}\approx0.083
\end{aligned}
P(A∣B)=P(B)P(A)P(B∣A)=0.054250.005∗0.9≈0.083
从此可以看出,虽然检测结果为阳性,但是得癌症的概率还是比较低的。这是因为,得癌症这种先验概率(由经验主观得到的概率,一般用事件发生频率来近似表示先验概率)本身就很低,那么附加一个条件后的这种后验概率(由当下因果导致的概率)也不会变得很大。所以,贝叶斯公式的意义在于:用样本集得到的先验概率去估计由一定因果导致的后验概率。
2.贝叶斯分类器
已知样本集D={(xi,c)}i=1mD=\begin{Bmatrix}(x_i,c) \end{Bmatrix}_{i=1}^mD={(xi,c)}i=1m,其中xi=(xi1,xi2,...,xid)x_i=(x_{i1},x_{i2},...,x_{id})xi=(xi1,xi2,...,xid)有d个属性,而c∈Y={y1,y2,...,yn}c\in Y=\begin{Bmatrix}y_1,y_2,...,y_n \end{Bmatrix}c∈Y={y1,y2,...,yn},总共有n个类别。现有一个新的样本xxx,那么该分为哪一类?我们考虑,计算把它分给各个类别的概率,去比较谁最大就分给谁。则有后验概率P(c∣x)P(c|x)P(c∣x),表示样本为xxx的条件下,它属于ccc类的概率。用贝叶斯公式计算得:
P(c∣x)=P(c)P(x∣c)P(x)
\begin{aligned}
P(c|x)=\cfrac{P(c)P(x|c)}{P(x)}
\end{aligned}
P(c∣x)=P(x)P(c)P(x∣c)
我们要比较大小,而分母都是相同的可以忽略,所以只用比较分子。贝叶斯分类器的表达式为:
c∗=argmax(c∈Y)P(c)P(x∣c)
\begin{aligned}
c*=argmax_{(c\in Y)} P(c)P(x|c)
\end{aligned}
c∗=argmax(c∈Y)P(c)P(x∣c)
其中P(c)P(c)P(c)是ccc类出现的概率,可以用ccc类在样本集DDD上出现的频率来估计。然而,贝叶斯分类器的难点在于计算P(x∣c)=P(x1,x2,...,xd∣c)P(x|c)=P(x_1,x_2,...,x_d|c)P(x∣c)=P(x1,x2,...,xd∣c)。因为数据有d个属性,所以它是个联合概率。如果每个属性有2种取值的话,就有2d2^d2d种取值的可能,计算这种概率是不太可能的,所以提出了朴素贝叶斯。
3.朴素贝叶斯
朴素贝叶斯之所以朴素是因它进行了属性条件独立的先验假设:对于已知类别,所有属性相互独立。有了属性条件独立的假设,就能减少计算量,此时P(x∣c)=P(x1∣c)P(x2∣c)...P(xd∣c)P(x|c)=P(x_1|c)P(x_2|c)...P(x_d|c)P(x∣c)=P(x1∣c)P(x2∣c)...P(xd∣c),于是朴素贝叶斯分类器表示为:
c∗=argmax(c∈Y)P(c)Πi=1dP(xi∣c)
\begin{aligned}
c*=argmax_{(c\in Y)} P(c)\Pi_{i=1}^dP(x_i|c)
\end{aligned}
c∗=argmax(c∈Y)P(c)Πi=1dP(xi∣c)
其中P(c)=∣Dc∣∣D∣P(c)=\cfrac{|D_c|}{|D|}P(c)=∣D∣∣Dc∣,意为c类样本在整个样本集D上的比例。
若属性是离散型的,P(xi∣c)=∣Dc,xi∣∣Dc∣P(x_i|c)=\cfrac{|D_{c,x_i}|}{|D_c|}P(xi∣c)=∣Dc∣∣Dc,xi∣ , 意为c类样本中第i个属性为xix_ixi的样本占c类样本的比例。从概率学的角度,这样计算是没有问题的。但是,现实中可能出现 “未被观测到的样本” ,即该样本的某属性值在训练样本上从未出现过,或该样本具有新的类别。这样就使得P(xi∣c)=0P(x_i|c)=0P(xi∣c)=0 或 P(c)=0P(c)=0P(c)=0,最终导致P(c∣x)=0P(c|x)=0P(c∣x)=0,造成分类错误。所以,我们需要对上述公式再进行拉普拉斯修正:
P(c)=∣Dc∣+1∣D∣+NcP(xi∣c)=∣Dc,xi∣+1∣Dc∣+Ni
\begin{aligned}
P(c)&=\cfrac{|D_c|+1}{|D|+N_c}\\
P(x_i|c)&=\cfrac{|D_{c,x_i}|+1}{|D_c|+N_i}
\end{aligned}
P(c)P(xi∣c)=∣D∣+Nc∣Dc∣+1=∣Dc∣+Ni∣Dc,xi∣+1
其中NcN_cNc表示数据集D中出现的类别数,NiN_iNi表示数据集D中第i个属性不同取值的个数。
若属性是连续型的,我们考虑用概率密度来代替概率,因为概率密度越大概率也就越大(它们是积分的关系,概率密度又是恒大于0的)。假设第i个属性的随机变量服从正太分布xi∽N(uc,i,δc,i2)x_i\backsim N(u_{c,i},\delta_{c,i}^2)xi∽N(uc,i,δc,i2)(也可以是均匀分布等,根据具体而定),则有:
p(xi∣c)=12πδc,iexp(−(xi−uc,i)22δc,i2)
\begin{aligned}
p(x_i|c)=\cfrac{1}{\sqrt{2\pi}\delta_{c,i}}exp(-\cfrac{(x_i-u_{c,i})^2}{2\delta^2_{c,i}})
\end{aligned}
p(xi∣c)=2πδc,i1exp(−2δc,i2(xi−uc,i)2)
其中uc,iu_{c,i}uc,i是c类数据中第i个属性的均值,δc,i2\delta^2_{c,i}δc,i2是c类数据中第i个属性的方差。
总结: 朴素贝叶斯就是想找到后验概率P(c∣x)P(c|x)P(c∣x)最大的分类,这个过程就是在计算各种各样的频率,实质上朴素贝叶斯的计算过程就是在“计数”。朴素贝叶斯分类器的训练主要有两种策略:预学习和懒惰学习。预学习就是根据训练样本集计算出所有的概率并存储下来,当进行预测时只需要“查表”即可;懒惰学习就是不进行任何训练直接存储训练集,当进行预测时再加载训练集计算需要的概率。
4.朴素贝叶斯的计算示例
我们通过著名的西瓜数据集来模拟一遍朴素贝叶斯的计算过程。数据集如下:
色 | 根 | 敲 | 纹 | 脐 | 触 | 密度 | 含糖率 | 瓜好否 |
---|---|---|---|---|---|---|---|---|
青 | 卷 | 响 | 清晰 | 凹 | 滑 | 0.697 | 0.46 | 是 |
乌 | 卷 | 闷 | 清晰 | 凹 | 滑 | 0.774 | 0.376 | 是 |
乌 | 卷 | 响 | 清晰 | 凹 | 滑 | 0.634 | 0.264 | 是 |
青 | 卷 | 闷 | 清晰 | 凹 | 滑 | 0.608 | 0.318 | 是 |
白 | 卷 | 响 | 清晰 | 凹 | 滑 | 0.556 | 0.215 | 是 |
青 | 平 | 响 | 清晰 | 平 | 粘 | 0.403 | 0.237 | 是 |
乌 | 平 | 响 | 模糊 | 平 | 粘 | 0.481 | 0.149 | 是 |
乌 | 平 | 响 | 清晰 | 平 | 滑 | 0.437 | 0.211 | 是 |
乌 | 平 | 闷 | 模糊 | 平 | 滑 | 0.666 | 0.091 | 否 |
青 | 硬 | 脆 | 清晰 | 凸 | 粘 | 0.243 | 0.267 | 否 |
白 | 硬 | 脆 | 模糊 | 凸 | 滑 | 0.245 | 0.057 | 否 |
白 | 卷 | 响 | 模糊 | 凸 | 粘 | 0.343 | 0.099 | 否 |
青 | 平 | 响 | 模糊 | 凹 | 滑 | 0.639 | 0.161 | 否 |
白 | 平 | 闷 | 模糊 | 凹 | 滑 | 0.657 | 0.198 | 否 |
乌 | 平 | 响 | 清晰 | 平 | 粘 | 0.360 | 0.370 | 否 |
白 | 卷 | 响 | 模糊 | 凸 | 滑 | 0.593 | 0.042 | 否 |
青 | 卷 | 闷 | 模糊 | 平 | 滑 | 0.719 | 0.103 | 否 |
现有一个新的样本,该把它分为好瓜还是坏瓜?
色 | 根 | 敲 | 纹 | 脐 | 触 | 密度 | 含糖率 |
---|---|---|---|---|---|---|---|
白 | 卷 | 脆 | 清晰 | 凹 | 滑 | 0.552 | 0.461 |