3.1朴素贝叶斯的基本概念
3.1.1什么是贝叶斯
我相信当读者朋友看到我这篇文章,你一定是了解或者学过贝叶斯,贝叶斯定理(Bayes’ theorem)的应用。英国数学家**托马斯·贝叶斯(Thomas Bayes)***在1763年发表的一篇论文中,首先提出了这个定理。朴树贝叶斯就是在这个定理上的一个应用。
朴素贝叶斯与其他统计学推断方法截然不同。它建立在主观判断的基础上,也就是说,你可以不需要客观证据,先估计一个值,然后根据实际结果不断修正。正是因为它的主观性太强,曾经遭到许多统计学家的诟病。
朴素贝叶斯需要大量的计算,因此历史上很长一段时间,无法得到广泛应用。只有计算机诞生以后,它才获得真正的重视。人们发现,许多统计量是无法事先进行客观判断的,而互联网时代出现的大型数据集,再加上高速运算能力,为验证这些统计量提供了方便,也为应用贝叶斯推断创造了条件,它的威力正在日益显现。
好了,笔者能力有限,尽管参阅了大量的文献资料,对于朴素贝叶斯的概念不能给出一个准确的概念,在这里只能引用大牛给出的关于朴素贝叶斯的概念吧。
概念: 朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x x x ,利用贝叶斯定理求出后验概率最大的输出 y y y 。
【注】以上是李航的《统计学习方法》对贝叶斯的概念。
读完概念上面的概念,我相信很多读者朋友都可以有些困惑,朴素贝叶斯到底该怎么用,有事如何进行分类呢?为了直观深入的描述朴素的贝叶斯的工作原理,还是和前一章一样,我们通过一个实例来交讲解朴素贝叶斯。
例子:开学了,新生就要开始军训了,某高校男生穿军装的概率为 ,女生穿军装的概率为 ,并且该高校的男女比例为2:1,问题:若你在学校遇到一个穿军装的人,请问他(她)的性别为男性或者女性概率分别是多少?
好了,下面我们先谈谈先验概率、条件概率、全概率公式和后验概率。
3.1.2先验概率
先验概率(prior probability)是指根据以往经验和分析得到的概率,如全概率公式(后面会讲)。
我们使用以上例子来解释一下什么是先验概率。根据以上例子我们设定:假设校园中一个学生是男生为事件 Y = y b o y Y=y_boy Y=yboy,是女生则是 Y = y g i r l Y=y_girl Y=ygirl ;一个人穿军装为事件 X = x 1 X=x_1 X=x1,未穿装为事件 X = x 0 X=x_0 X=x0 。而一个学生的性别与是否穿军装这两个事件之间是相互独立的。
于是我们可以看到该例子中存在四个先验概率:
P ( X = x 1 ) P(X=x_1) P(X=x1)与 P ( X = x 0 ) P(X=x_0) P(X=x0)
P ( Y = y b o y ) P(Y=y_{boy}) P(Y=yboy) 与 P ( Y = y g i r l P(Y=y_{girl} P(Y=ygirl
其中 P ( Y = y b o y ) P(Y=y_{boy}) P(Y=yboy) 与 P ( Y = y g i r l P(Y=y_{girl} P(Y=ygirl 可以根据例子中“该校中男女比例通常为 2:1 ” 这一以往经验求得: P ( Y = y b o y ) = 2 / 3 P(Y=y_{boy})=2/3 P(Y=yboy)=2/3以及 P ( Y = y g i r l ) = 1 / 3 P(Y=y_{girl})=1/3 P(Y=ygirl)=1/3 。而先验概率 P ( Y = y b o y ) P(Y=y_{boy}) P(Y=yboy) 与 P ( Y = y g i r l P(Y=y_{girl} P(Y=ygirl 并不能直接得出,需要根据全概率公式来求解。在学习全概率公式之前,我们先了解一下条件概率。
3.1.3条件概率
条件概率也就是贝叶斯定理的核心,所谓"条件概率"(Conditional probability),就是指在事件 B B B发生的情况下,事件 A A A发生的概率,用 P ( A ∣ B ) P(A|B) P(A∣B)来表示。
图1文氏图
根据文氏图,可以很清楚地看到在事件 B B B发生的情况下,事件 A A A发生的概率就是 P ( A ∩ B ) P(A∩B) P(A∩B)除以 P ( B ) P(B) P(B)。
因此,
同理可得,
所以,
即
这就是条件概率的计算公式。
对条件概率公式进行变形,可以得到如下形式:
我们把 P ( A ) P(A) P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对 A A A事件概率的一个判断。 P ( A ∣ B ) P(A|B) P(A∣B)称为"后验概率"(Posterior probability),即在 B B B事件发生之后,我们对 A A A事件概率的重新评估。 P ( B ∣ A ) / P ( B ) P(B|A)/P(B) P(B∣A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。所以,条件概率可以理解成下面的式子:
后验概率 = 先验概率 x 调整因子
我们先预估一个"先验概率",然后加入实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。
在这里,如果"可能性函数" P ( B ∣ A ) / P ( B ) > 1 P(B|A)/P(B)>1 P(B∣A)/P(B)>1,意味着"先验概率"被增强,事件 A A A的发生的可能性变大;如果"可能性函数"=1,意味着 B B B事件无助于判断事件 A A A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件 A A A的可能性变小。
好了,更为正式的表达如下。
条件概率是指在事件 Y = y Y=y Y=y已经发生的条件下,事件 X = x X=x X=x 发生的概率。条件概率可表示为 P ( X = x ∣ Y = y ) P(X=x|Y=y) P(X=x∣Y=y): 。而条件概率计算公式为:
其中 P ( X = x ∣ Y = y ) P(X=x|Y=y) P(X=x∣Y=y)是联合概率,也就是两个事件共同发生的概率。而 P ( Y = y ) P(Y=y) P(Y=y) 以及 P ( X = x ) P(X=x) P(X=x)是先验概率。
我们用例子来说明一下就是: “某校男生穿军装的概率为 1 / 2 1/2 1/2 ”,也就是说“是男生的前提下,穿军装的概率是 1 / 2 1/2 1/2 ”,此概率为条件概率,即
P ( X = x 1 ∣ Y = y b o y ) = 1 / 2 P(X=x_1|Y=y_{boy})=1/2 P(X=x1∣Y=yboy)=1/2
同理“女生穿军装的概率为 2 / 3 2/3 2/3 ”为条件概率,即
P ( X = x 1 ∣ Y = y g i r l ) = 1 / 2 P(X=x_1|Y=y_{girl})=1/2 P(X=x1∣Y=ygirl)=1/2
3.1.4全概率公式
假定样本空间S,是两个事件A与A’的和。
图2
上图中,红色部分是事件A,绿色部分是事件A',它们共同构成了样本空间S。在这种情况下,事件B可以划分成两个部分。
图3
即
在上一节的推导当中,我们已知
所以,
这就是全概率公式。它的含义是,如果 A A A和 A ′ A' A′构成样本空间的一个划分,那么事件B的概率,就等于 A A A和 A ′ A' A′的概率分别乘以 B B B对这两个事件的条件概率之和。将这个公式代入上一节的条件概率公式,就得到了条件概率的另一种写法:
正式的表达如下。
全概率公式是指:如果事件 Y = y 1 , Y = y 2 , . . . , Y = y n Y=y_1,Y=y_2,...,Y=y_n Y=y1,Y=y2,...,Y=yn可构成一个完备事件组,即它们两两互不相容,其和为全集。则对于事件 X = x X=x X=x有:
因此对于上文中的例子,我们可以根据全概率公式求得:
也就是说不考虑性别的情况下,校园中穿军装的概率为 5 / 9 5/9 5/9 ,不穿军装的概率为 4 / 9 4/9 4/9 。
3.1.5后验概率
后验概率是指,某事件 X = x X=x X=x已经发生,那么该事件是因为事件 Y = y Y=y Y=y的而发生的概率。也就是上例中所需要求解的“在知道一个人穿拖鞋的前提下,这个人是男性的概率或者是女性的概率是多少”。后验概率形式化便是:
P ( Y = y b o y ∣ X = x 1 P(Y=y_{boy}|X=x_1 P(Y=yboy∣X=x1
后验概率的计算要以先验概率为基础。后验概率可以根据通过贝叶斯公式,用先验概率和似然函数计算出来。
贝叶斯公式如下:
其中 P ( Y = y b o y ∣ X = x 1 P(Y=y_{boy}|X=x_1 P(Y=yboy∣X=x1为所求后验概率, P ( X = x 1 ∣ Y = y b o y P(X=x_1|Y=y_{boy} P(X=x1∣Y=yboy为条件概率, P ( Y = y b o y P(Y=y_{boy} P(Y=yboy 为先验概率。
而朴素贝叶斯算法正是利用以上信息求解后验概率,并依据后验概率的值来进行分类。
使用上面的例子来进行理解,后验概率为:
也就是说,在知道一个人穿军装的前提下,这个学生是男生的概率是 3 / 5 3/5 3/5 ,是女生的概率是 2 / 5 2/5 2/5 。如果问题是“判断该生是男生还是女生”,此问题就是一个分类问题。由于依据贝叶斯公式计算的后验概率是男生的概率大于是女生的概率,即由于
P ( Y = y b o y ∣ X = x 1 > P ( Y = y g i r l ∣ X = x 1 P(Y=y_{boy}|X=x_1 > P(Y=y_{girl}|X=x_1 P(Y=yboy∣X=x1>P(Y=ygirl∣X=x1
那么我们就可以将其分类为男性(实际在使用朴素贝叶斯进行分类时,不需要求解分母 )。
到此,我们已经使用例子来讲解了使用朴素贝叶斯进行分类的基本步骤以及简单的原理了。接下来我们将对朴素贝叶斯的原理进行详细地探讨,后文也就是对前文的总结归纳而已,不要被大量的公式吓到了,好了,继续往下看吧。
参考:
www.ruanyifeng.com/blog/2011/0…
3.2朴素贝叶斯的推理过程
对于样本集:
其中 m m m 表示有 m m m个样本, n n n表示有 n n n个特征。 y i , i = 1 , 2... , m y_i,i=1,2...,m yi,i=1,2...,m表示样本类别,取值为{ C 1 , C 2 , . . . , C k C_1,C_2,...,C_k C1,C2,...,Ck} 。
先验概率为:
条件概率为(依据条件独立假设):
则后验概率为:
将条件概率公式带入得:
上式为朴素贝叶斯分类的基本公式。于是,朴素贝叶斯分类器可表示为:
注意,由于分母对所有的 C k C_k Ck都是相同的,所以:
3.3朴素贝叶斯的参数估计
3.3.1极大似然估计
针对样本集我们可以利用极大似然估计计算出先验概率:
其中 ∑ i = 1 m I ( y i = C k ) {\sum_{i=1}^{m}I(y_i=C_k)} ∑i=1mI(yi=Ck)计算的是样本类别为 C k C_k Ck的总数。先验概率计算的是类别 C k C_k Ck在样本集中的频率。
设第 j j j 个特征 x j x_j xj可能取值的集合为 { a j 1 , a j 2 , . . . , a j l a_{j1},a_{j2},...,a_{jl} aj1,aj2,...,ajl}。条件概率的极大似然估计是:
其中第 j j j个特征的取值可能是{ a j 1 , a j 2 , . . . , a j l a_{j1},a_{j2},...,a_{jl} aj1,aj2,...,ajl} ,共 h h h 个。在样本类别为 C k 4 的 子 样 本 集 中 , 第 C_k4 的子样本集中,第 Ck4的子样本集中,第j$ 个特征取值为 a j l a_{jl} ajl的样本的频率。
3.3.2贝叶斯估计
用极大似然估计可能会出现要估计的概率值为0的情况,这会影响到后验概率的计算结果,是分类产生偏差,为了解决这一问题的方法是采用贝叶斯估计,具体的,条件概率的贝叶斯如下所示。
其中 S j S_j Sj为特征, X j X_j Xj取值的个数为 h h h 。式中的 λ > = 0 \lambda >=0 λ>=0 ,等价于在随机变量各个取值的频数上赋予一个正数 λ > 0 \lambda >0 λ>0,当 λ = 0 \lambda =0 λ=0时,就是极大似然估计。常取 λ = 1 \lambda =1 λ=1,这时成为拉普拉斯平滑(Laplace smoothing),显然。对于任何 l = 1 , 2 , . . . , S j l=1,2,...,S_j l=1,2,...,Sj, k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K 有
P ( X j = a j l ∣ Y = C k ) > 0 P(X_j=a_{jl}|Y=C_k)>0 P(Xj=ajl∣Y=Ck)>0
∑ l = 1 S j P ( X j = a j l ∣ Y = C k ) > 0 \sum_{l=1}^{S_j}P(X_j=a_{jl}|Y=C_k)>0 ∑l=1SjP(Xj=ajl∣Y=Ck)>0
同样,先验概率的贝叶斯估计是
3.4朴素贝叶斯的算法过程
下面给出使用极大似然估计为参数估计的贝叶斯算法的过程。
算法(朴素贝叶斯算法)
输入:训练集
其中 y i y_i yi, i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m 表示样本类别,取值为 { C 1 , C 2 , . . . , C k C_1,C_2,...,C_k C1,C2,...,Ck}。
输出: x x x的分类。
(1)计算先验概率,求出样本类别的个数 K K K 。对于每一个样本 Y = C k Y=C_k Y=Ck ,计算出 P ( Y = C k ) P(Y=C_k) P(Y=Ck) 。其为类别 C k C_k Ck在总样本集中的频率。
(2)计算条件概率,将样本集划分成 K K K 个子样本集,分别对属于 C k C_k Ck的子样本集进行计算,计算出其中特征 X j = a j l X_j=a_{jl} Xj=ajl的概率: P ( X j = a j l ∣ Y = C k ) P(X_j=a_{jl}|Y=C_k) P(Xj=ajl∣Y=Ck) 。其为该子集中特征取值为 a j l a_{jl} ajl 的样本数与该子集样本数的比值。
(3)针对待预测样本 x t e s t x^{test} xtest ,计算其对于每个类别 C k C_k Ck的后验概率:
概率值最大的类别即为待预测样本的预测类别。
3.5朴素贝叶斯的算法小结
朴素贝叶斯算法的主要原理基本已经做了总结,这里对朴素贝叶斯的优缺点做一个总结。
朴素贝叶斯的主要优点:
1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。
朴素贝叶斯的主要缺点:
1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
4)对输入数据的表达形式很敏感。
参考文献:
[1] 《统计学习方法》李航著.