朴素贝叶斯
贝叶斯公式
贝叶斯公式作为朴素贝叶斯的一个基础,先让我们看一下贝叶斯公式是如何得到的。
条件概率公式
设A、B是两个事件,且P(B)>0,则在事件B发生的条件下,事件A发生的概率为:
P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B)=\frac{P(AB)}{P(B)} P(A∣B)=P(B)P(AB)
乘法公式
乘法公式是经过条件概率变换后得到的公式,结果如下:
P ( A B ) = P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(AB)=P(A|B)P(B)=P(B|A)P(A) P(AB)=P(A∣B)P(B)=P(B∣A)P(A)
全概率公式
如果事件B1,B2,…满足:
1.B1,B2…两两互斥,也就是Bi ∩ Bj = ∅ ,i≠j , i,j=1,2,…,且P(Bi)>0,i=1,2,…;
2.B1∪B2∪…=Ω ,则称事件组 B1,B2,…是样本空间Ω的一个划分,设 B1,B2,…是样本空间Ω的一个划分,A为任一事件,则有全概率公式如下:
P ( A ) = ∑ i = 1 n P ( B i ) P ( A ∣ B i ) P(A)=\sum _{i=1}^nP(B_i)P(A|B_i) P(A)=∑i=1nP(Bi)P(A∣Bi)
贝叶斯公式
了解了上面的三种公式再让我们来看一下贝叶斯公式,我们换一种思路,现在我们已知事件B发生的概率,也知道了在事件B发生的条件下事件A发生的概率,根据这些条件我们如何去求事件A发生的条件下事件B发生的概率呢?也就是我们常说的根据先验概率去求后验概率是怎么一回事呢?
根据条件概率公式和乘法公式我们可以得到如下图所示的关系:
与全概率公式解决的问题相反,贝叶斯公式是建立在条件概率的基础上寻找事件发生的原因(即大事件A已经发生的条件下,分割中的小事件Bi的概率),设B1,B2,…是样本空间Ω的一个划分,则对任一事件A(P(A)>0),有
P ( B i ∣ A ) = P ( B i ) P ( A ∣ B i ) P ( A ) P(B_i|A)=\frac{P(B_i)P(A|B_i)}{P(A)} P(Bi∣A)=P(A)P(Bi)P(A∣Bi)
当我们不知道事件A发生的概率的情况下,我们考虑使用全概率公式来替换P(A),得到如下的贝叶斯公式:
P ( B i ∣ A ) = P ( B i ) P ( A ∣ B i ) ∑ i = 1 n P ( B i ) P ( A ∣ B i ) P(B_i|A)=\frac{P(B_i)P(A|B_i)}{\sum _{i=1}^nP(B_i)P(A|B_i)} P(Bi∣A)=∑i=1nP(Bi)P(A∣Bi)P(Bi)P(A∣Bi)
Bi 常被视为导致试验结果A发生的”原因“,P(Bi)(i=1,2,…)表示各种原因发生的可能性大小,故称先验概率;P(Bi|A)(i=1,2…)则反映当试验产生了结果A之后,再对各种原因概率的新认识,故称后验概率。
朴素贝叶斯
我们得到了贝叶斯公式之后,再让我们来了解一下朴素贝叶斯算法是怎么一回事。
首先根据“朴素贝叶斯”这个名字中不难发现,相对于贝叶斯我们多了一个叫做“朴素”的词语,那么朴素究竟代表着什么呢?
我们不妨先把贝叶斯公式换成我们机器学习中常用的特征和类别的方式来表示一下:
P ( 类 别 | 特 征 ) = P ( 特 征 | 类 别 ) P ( 类 别 ) P ( 特 征 ) P(类别|特征)=\frac{P(特征|类别)P(类别)}{P(特征)} P(类别|特征)=P(特征)P(特征|类别)P(类别)
我们都知道对于式子中的先验概率P(特征|类别)而言,我们的实际场景中往往有很多的类别和特征,那么对应的我们的先验概率也就变成了一个所有特征上的联合概率,导致我们很难从有限的训练样本估计而得到,为了避开这个障碍朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有特征相互独立,也可以说,假设每个特征独立地对分类结果发生影响。这就是我们对于“朴素”一词的理解,也是朴素贝叶斯对应着的一个前提条件。
假设我们有特征1、特征2、特征3,对应着我们根据“朴素”的思想就可以把先验概率表示为如下的形式:
P ( 特 征 1 、 特 征 2 、 特 征 3 | 类 别 ) = P ( 特 征 1 | 类 别 ) P ( 特 征 2 | 类 别 ) P ( 特 征 3 | 类 别 ) P(特征1、特征2、特征3|类别)=P(特征1|类别)P(特征2|类别)P(特征3|类别) P(特征1、特征2、特征3|类别)=P(特征1|类别)P(特征2|类别)P(特征3|类别)
或许这样还是比较抽象,下面让我们通过一个简单的“挑西瓜”的例子来计算一下:
假设我们有如下的一组关于西瓜的数据:
-
特征
瓜蒂:脱落|未脱落
形状:尖形|圆形
颜色:深绿|浅绿|青色
-
类别
类别:瓜熟|瓜生
-
现在有一西瓜(脱落|圆形|青色)我们如何去判断它的生熟呢?
P ( 瓜 熟 ∣ 脱 落 、 圆 形 、 青 色 ) = P ( 脱 落 、 圆 形 、 青 色 ∣ 瓜 熟 ) ∗ P ( 瓜 熟 ) P ( 脱 落 、 圆 形 、 青 色 ) P(瓜熟|脱落、圆形、青色)=\frac{P(脱落、圆形、青色|瓜熟) * P(瓜熟)}{P(脱落、圆形、青色)} P(瓜熟∣脱落、圆形、青色)=P(脱落、圆形、青色)P(脱落、圆形、青色∣瓜熟)∗P(瓜熟)
P ( 瓜 生 ∣ 脱 落 、 圆 形 、 青 色 ) = P ( 脱 落 、 圆 形 、 青 色 ∣ 瓜 生 ) ∗ P ( 瓜 生 ) P ( 脱 落 、 圆 形 、 青 色 ) P(瓜生|脱落、圆形、青色)=\frac{P(脱落、圆形、青色|瓜生) * P(瓜生)}{P(脱落、圆形、青色)} P(瓜生∣脱落、圆形、青色)=P(脱落、圆形、青色)P(脱落、圆形、青色∣瓜生)∗P(瓜生)
- 对于熟瓜,我们可以得到样本中瓜熟的概率
- P ( 瓜 熟 ) = 6 10 = 3 5 P(瓜熟)=\frac{6}{10}=\frac{3}{5} P(瓜熟)=106=53
- 对于瓜蒂,我们可以计算熟瓜瓜蒂为脱落的概率
-
P ( 脱 落 | 瓜 熟 ) = 4 6 = 2 3 P(脱落|瓜熟)=\frac{4}{6}=\frac{2}{3} P(脱落|瓜熟)=64=32
-
对于形状,我们可以计算熟瓜形状为圆形的概率
- P ( 圆 形 | 瓜 熟 ) = 4 6 = 2 3 P(圆形|瓜熟)=\frac{4}{6}=\frac{2}{3} P(圆形|瓜熟)=64=32
- 对于颜色,我们可以计算熟瓜颜色为青色的概率
-
P ( 青 色 | 瓜 熟 ) = 2 6 = 1 3 P(青色|瓜熟)=\frac{2}{6}=\frac{1}{3} P(青色|瓜熟)=62=31
-
对于生瓜我们可以使用和熟瓜相同的计算方式
-
P ( 瓜 生 ) = 4 10 = 2 5 P(瓜生)=\frac{4}{10}=\frac{2}{5} P(瓜生)=104=52
-
P ( 脱 落 | 瓜 生 ) = 1 4 = 1 4 P(脱落|瓜生)=\frac{1}{4}=\frac{1}{4} P(脱落|瓜生)=41=41
- P ( 圆 形 | 瓜 生 ) = 1 4 = 1 4 P(圆形|瓜生)=\frac{1}{4}=\frac{1}{4} P(圆形|瓜生)=41=41
-
P ( 青 色 | 瓜 生 ) = 1 4 = 1 4 P(青色|瓜生)=\frac{1}{4}=\frac{1}{4} P(青色|瓜生)=41=41
-
P ( 脱 落 、 圆 形 、 青 色 ∣ 瓜 熟 ) × P ( 瓜 熟 ) P(脱落、圆形、青色|瓜熟) × P(瓜熟) P(脱落、圆形、青色∣瓜熟)×P(瓜熟)
-
P ( 瓜 熟 ) × P ( 脱 落 ∣ 瓜 熟 ) × P ( 圆 形 ∣ 瓜 熟 ) × P ( 青 色 ∣ 瓜 熟 ) = ( 3 5 ) × ( 2 3 ) × ( 2 3 ) × ( 1 3 ) = 4 45 P(瓜熟) × P(脱落 | 瓜熟) × P(圆形 | 瓜熟) × P(青色 | 瓜熟) = (\frac{3}{5}) × (\frac{2}{3}) × (\frac{2}{3}) × (\frac{1}{3}) = \frac{4}{45} P(瓜熟)×P(脱落∣瓜熟)×P(圆形∣瓜熟)×P(青色∣瓜熟)=(53)×(32)×(32)×(31)=454
-
P ( 脱 落 、 圆 形 、 青 色 ∣ 瓜 生 ) × P ( 瓜 生 ) P(脱落、圆形、青色|瓜生) × P(瓜生) P(脱落、圆形、青色∣瓜生)×P(瓜生)
-
P ( 瓜 生 ) × P ( 脱 落 ∣ 瓜 生 ) × P ( 圆 形 ∣ 瓜 生 ) × P ( 青 色 ∣ 瓜 生 ) = ( 2 5 ) × ( 1 4 ) × ( 1 4 ) × ( 1 4 ) = 1 160 P(瓜生) × P(脱落 | 瓜生) × P(圆形 | 瓜生) × P(青色 | 瓜生) = (\frac{2}{5}) × (\frac{1}{4}) × (\frac{1}{4}) × (\frac{1}{4}) = \frac{1}{160} P(瓜生)×P(脱落∣瓜生)×P(圆形∣瓜生)×P(青色∣瓜生)=(52)×(41)×(41)×(41)=1601
-
我们需要比较的是P(瓜熟|脱落、圆形、青色)和P(瓜生|脱落、圆形、青色)二者的概率,从最初的表达式我们可以知道,二者的分子相同,故我们只去比较分子即可,也就是比较上述的计算结果 4 45 > 1 160 \frac{4}{45}>\frac{1}{160} 454>1601所以我们就可以判定特征为脱落、圆形、青色的瓜为熟瓜。
拉普拉斯平滑
以上就是我们根据朴素贝叶斯的思想进行挑西瓜的例子,是不是很简单,但是这只是我们理想情况的计算方式,如果我们在进行联合概率的连乘的时候,有某一项的值为0了,那么此时也将会导致我们整个式子的结果为0,为了解决这种情况的发生我们有一种特殊的策略“拉普拉斯平滑”。
-
对于某个数据集,我们考虑到对于某个特征X在训练集中没有出现,那么将会导致整个分类概率变为0,这将会导致分类变得非常不合理,所以为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。
-
应用举例:
假设在文本分类中,有3个类,C1、C2、C3,在指定的1000个训练样本中,某个词语K1,在各个类中观测计数分别为0,990,10,K1的概率为0,0.99,0.01。
对这三个量使用拉普拉斯平滑的计算方法如下:
0 + 1 1000 + 1 + 1 + 1 = 1 1003 = 0.001 \frac{0+1}{1000+1+1+1}=\frac{1}{1003}=0.001 1000+1+1+10+1=10031=0.001
990 + 1 1000 + 1 + 1 + 1 = 991 1003 = 0.988 \frac{990+1}{1000+1+1+1}=\frac{991}{1003}=0.988 1000+1+1+1990+1=1003991=0.988
10 + 1 1000 + 1 + 1 + 1 = 11 1003 = 0.011 \frac{10+1}{1000+1+1+1}=\frac{11}{1003}=0.011 1000+1+1+110+1=100311=0.011
常见的三种朴素贝叶斯
多项式朴素贝叶斯
当特征是离散的时候,使用多项式模型。多项式模型在计算先验概率 P ( y k ) P(y_k) P(yk)和条件概率 P ( x i ∣ y k ) P(x_i|y_k) P(xi∣yk)时,会做一些平滑处理,具体公式为:
p ( y k ) = N y k + α N + k α p(y_k)=\frac{N_{yk}+\alpha}{N+k\alpha} p(yk)=N+kαNyk+α
N是总的样本个数,k是总的类别个数, N y k N_{yk} Nyk是类别为 y k y_k yk的样本个数,α是平滑值。
p ( x i ∣ y k ) = N y k x i + α N y k + n α p(x_i|y_k)=\frac{N_{ykx_i}+\alpha}{N_{yk}+n\alpha} p(xi∣yk)=Nyk+nαNykxi+α
N y k N_{yk} Nyk是类别为 y k y_k yk的样本个数,n是特征的维数, N y k x i N_{ykx_i} Nykxi是类别为 y k y_k yk的样本中,第i维特征的值是 x i x_i xi的样本个数,α是平滑值。
当α=1时,称作Laplace平滑,当0<α<1时,称作Lidstone平滑,α=0时不做平滑。
如果不做平滑,当某一维特征的值 x i x_i xi没在训练样本中出现过时,会导致 P ( x i ∣ y k ) = 0 P(x_i|y_k)=0 P(xi∣yk)=0,从而导致后验概率为0。加上平滑就可以克服这个问题。
高斯朴素贝叶斯
当特征是连续变量的时候,运用多项式模型就会导致很多 P ( x i ∣ y k ) = 0 P(x_i|y_k)=0 P(xi∣yk)=0(不做平滑的情况下),此时即使做平滑,所得到的条件概率也难以描述真实情况。所以处理连续的特征变量,应该采用高斯模型。
P ( x i ∣ y k ) = 1 2 π σ y k i 2 exp − ( x i − μ y k i ) 2 2 σ y k i 2 P(x_i|y_k)=\frac{1}{\sqrt{2\pi\sigma_{yki}^2}}\exp^{-\frac{(x_i-\mu_{yki})^2}{2\sigma_{yki}^2}} P(xi∣yk)=2πσyki21exp−2σyki2(xi−μyki)2
μ y k i \mu_{yki} μyki 表示类别为yk的样本中,第i维特征的均值。
σ y k i 2 \sigma_{yki}^2 σyki2表示类别为yk的样本中,第i维特征的方差。
伯努利朴素贝叶斯
与多项式模型一样,伯努利模型适用于离散特征的情况,所不同的是,伯努利模型中每个特征的取值只能是1和0(以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0)。
当特征值 x i x_i xi为1时, P ( x i ∣ y k ) = P ( x i = 1 ∣ y k ) P(x_i|y_k)=P(x_i=1|y_k) P(xi∣yk)=P(xi=1∣yk);
当特征值 x i x_i xi为0时, P ( x i ∣ y k ) = 1 − P ( x i = 1 ∣ y k ) P(x_i|y_k)=1−P(x_i=1|y_k) P(xi∣yk)=1−P(xi=1∣yk);