文章目录
- 1.朴素贝叶斯法前导知识
- 1.1 贝叶斯决策理论
- 1.2 概率论基本概念
- 2.朴素贝叶斯法
- 2.1 朴素贝叶斯法的学习与分类
- 2.1.1 朴素贝叶斯法的学习
- 2.1.2 朴素贝叶斯法的分类
- 2.2 朴素贝叶斯法的参数估计
- 2.2.1 极大似然估计
- 2.2.2 贝叶斯估计
- 2.2.3 对数化的似然函数
- 2.3 理解极大似然估计(选看)
- 3.小结
- 参考资料
1.朴素贝叶斯法前导知识
1.1 贝叶斯决策理论
朴素贝叶斯是贝叶斯决策理论的一部分,所以我们先来了解一下贝叶斯决策理论。
假设现在我们有一个数据集,它由两类数据组成。我们现在用:
- p1(x,y):表示数据点(x,y)属于类别1的概率;
- p2(x,y):表示数据点(x,y)属于类别1的概率
那么对于一个新的数据点(x,y),可以用下面的规则来判断它的类别:
- 若p1(x,y) > p2(x,y),那么类别为1;
- 若p1(x,y) < p2(x,y),那么类别为2
这就是贝叶斯决策理论的核心思想,即选择具有最高概率的决策。
注释:
- 这里使用的概率解释属于贝叶斯概率理论的范畴;
- 另一种概率解释称为频数概率,它只从数据本身获得结论,并不考虑逻辑推理及先验知识
1.2 概率论基本概念
为了能够计算上节中提到的p1,p2,我们有必要从贝叶斯定理公式出发,来了解一下概率论的相关基本概念。
贝叶斯定理公式: P ( A i ∣ B ) = P ( A i ) P ( B ∣ A i ) ∑ j = 1 n P ( A j ) P ( B ∣ A j ) P(A_i|B)=\frac{P(A_i)P(B|A_i)}{\sum_{j=1}^{n}P(A_j)P(B|A_j)} P(Ai∣B)=∑j=1nP(Aj)P(B∣Aj)P(Ai)P(B∣Ai)
其中,
-
P ( A i ) P(A_i) P(Ai)是 A i A_i Ai的先验概率。之所以称为"先验"是因为它不考虑任何B方面的因素。
先验概率:是指根据以往经验和分析得到的概,它往往作为"由因求果"问题中的"因"出现的概率。
-
P ( A i ∣ B ) P(A_i|B) P(Ai∣B)是已知B发生后 A i A_i Ai的条件概率,也由于得自B的取值而被称作A的后验概率。
后验概率:是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的"果"。
-
公式分子部分 P ( A i ) P ( B ∣ A i ) P(A_i)P(B|A_i) P(Ai)P(B∣Ai),其实是 A i A_i Ai与B的联合概率 P ( A i , B ) P(A_i,B) P(Ai,B),联合概率公式:
P ( A i , B ) = P ( A i ) P ( B ∣ A i ) = P ( B ) P ( A i ∣ B ) P(A_i,B)=P(A_i)P(B|A_i)=P(B)P(A_i|B) P(Ai,B)=P(Ai)P(B∣Ai)=P(B)P(Ai∣B) -
公式分母部分 ∑ j = 1 n P ( A j ) P ( B ∣ A j ) \sum_{j=1}^{n}P(A_j)P(B|A_j) ∑j=1nP(Aj)P(B∣Aj),其实是P(B)的全概率公式,即:
P ( B ) = ∑ j = 1 n P ( A j ) P ( B ∣ A j ) P(B)=\sum_{j=1}^{n}P(A_j)P(B|A_j) P(B)=j=1∑nP(Aj)P(B∣Aj)
公式描述:公式表示若事件A1,A2,…,An构成一个完备事件组(即: ⋃ j = 1 n A j = Ω , A i A j = ∅ \bigcup_{j=1}^{n}A_j=Ω,A_iA_j=\varnothing ⋃j=1nAj=Ω,AiAj=∅)且都有正概率( P ( A j ) > 0 P(A_j)>0 P(Aj)>0),则对任意一个事件B都有公式成立。
至此我们了解了贝叶斯决策理论以及概率论的一些基本概念,下面我们开始正式了解朴素贝叶斯法。
2.朴素贝叶斯法
朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。
朴素贝叶斯分类的整体思路:对于给定的训练数据集,
- 首先基于特征条件独立假设学习输入/输出的联合概率分布;
- 然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
朴素贝叶斯的特点:
- 优点:在数据较少的情况下仍然有效,可以处理多类别问题;
- 缺点:对于输入数据的准备方式较为敏感;
- 适用数据类型:标称型数据
本节主要介绍朴素贝叶斯法的学习与分类及参数估计算法。
2.1 朴素贝叶斯法的学习与分类
2.1.1 朴素贝叶斯法的学习
假设训练数据集: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\left\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right\} T={(x1,y1),(x2,y2),...,(xN,yN)}
由联合概率分布P(X,Y)独立同分布产生。
朴素贝叶斯法通过训练数据集学习联合概率分布P(X,Y)。具体地,学习:
- 先验概率分布: P ( Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k),k=1,2,...,K P(Y=ck),k=1,2,...,K
- 条件概率分布: P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) , k = 1 , 2 , . . . , K P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k),k=1,2,...,K P(X=x∣Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)∣Y=ck),k=1,2,...,K
于是学习到联合概率分布P(X,Y)。
到这里有人可能会疑惑,这样不就可以直接用贝叶斯定理计算了吗,为什么还要有一个特征条件独立假设,不是多余吗,答案肯定是不多余。下面我们就从两个角度来看看为什么要有特征条件独立假设:
- 条件概率分布 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=x∣Y=ck)有指数级数量的参数,其估计实际是不可行的。事实上,假设 x ( j ) x_{(j)} x(j)可能取值有 S j S_j Sj个,j=1,2,…,n,Y可能取值有K个,那么参数个数为 K ∏ j = 1 n S j K\prod_{j=1}^{n}S_j K∏j=1nSj
- 更直观的解释。由统计学知,如果每个特征需要N个样本,那么对于10个特征将需要 N 10 N^{10} N10个样本,对于1000个特征将需要 N 1000 N^{1000} N1000个样本。可以看到,所需要的样本数会随着特征数目的增大而迅速增长。
如果特征之间相互独立,那么样本数就可以从 N 1000 N^{1000} N1000减少到1000*N。
朴素贝叶斯法对条件概率分布做了条件独立性的假设。由于这是一个较强的假设,朴素贝叶斯法也由此得名。具体地,条件独立性假设是:
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k) =\qquad \\ \qquad \prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) P(X=x∣Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)∣Y=ck)=∏j=1nP(X(j)=x(j)∣Y=ck)
朴素贝叶斯法实际上学习到生成数据的机制,所以属于生成模型。
条件独立假设等于是说用于分类的特征,在类确定的条件下,都是条件独立的。这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
2.1.2 朴素贝叶斯法的分类
朴素贝叶斯法分类时,对给定的输入x,通过学习到的模型计算后验概率分布 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ck∣X=x),将后验概率最大的类作为x的类输出。后验概率计算根据贝叶斯定理进行:
P ( Y = c k ∣ X = x ) = P ( Y = c k ) P ( X = x ∣ Y = c k ) ∑ k P ( Y = c k ) P ( X = x ∣ Y = c k ) P(Y=c_k|X=x)=\frac{P(Y=c_k)P(X=x|Y=c_k)}{\sum_kP(Y=c_k)P(X=x|Y=c_k)} P(Y=ck∣X=x)=∑kP(Y=ck)P(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)
将上一些小节中的条件独立假设代入本式,得到朴素贝叶斯法分类的基本公式:
P ( Y = c k ∣ X = x ) = P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)},k=1,2,...,K P(Y=ck∣X=x)=∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck),k=1,2,...,K
于是,朴素贝叶斯分类器可表示为:
y = f ( x ) = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=f(x)=argmax_{c_k}\frac{P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)} y=f(x)=argmaxck∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck)
注意到,上式中分母对于所有 c k c_k ck都是相同的,所以:
y = f ( x ) = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=f(x)=argmax_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k) y=f(x)=argmaxckP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
- 我们前面提到贝叶斯决策理论的核心思想就是后验概率最大化准则,这是朴素贝叶斯法所采用的原理。
- 后验概率最大化等价于0-1损失函数时的期望风险最小化
2.2 朴素贝叶斯法的参数估计
2.2.1 极大似然估计
在朴素贝叶斯法中,学习意味着估计 P ( Y = c k ) P(Y=c_k) P(Y=ck)和 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)∣Y=ck)。可以应用极大似然估计估计相应的概率。
- 先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的极大似然估计是:
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N , i = 1 , 2 , . . . , K P(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N},i=1,2,...,K P(Y=ck)=N∑i=1NI(yi=ck),i=1,2,...,K - 设第j个特征 x ( j ) x_{(j)} x(j)可能取值的集合为 { a j 1 , a j 2 , . . . , a j S j } \left\{a_{j1},a_{j2},...,a_{jS_j}\right\} {aj1,aj2,...,ajSj},条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=ajl∣Y=ck)的极大似然估计是:
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) , j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_{i}^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)},j=1,2,...,n;l=1,2,...,S_j;k=1,2,...,K P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck),j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
式中, x i ( j ) x_i^{(j)} xi(j)是第i个样本的第j个特征; a j l a_{jl} ajl是第j个特征可能取的第l个值;I为指示函数。
2.2.2 贝叶斯估计
用极大似然估计可能会出现所要估计的概率值为0的情况,比如某一个特征的条件概率 P ( X ( j ) = x ( j ) ∣ Y = c k ) = 0 P(X^{(j)}=x^{(j)}|Y=c_k)=0 P(X(j)=x(j)∣Y=ck)=0。这时会影响到后验概率的计算结果,使分类产生偏差。
解决这个问题的方法就是采用贝叶斯估计。具体地,
-
先验概率的贝叶斯估计:
P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ , i = 1 , 2 , . . . , K P_{\lambda}(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)+\lambda}{N+Kλ},i=1,2,...,K Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ,i=1,2,...,K -
条件概率的贝叶斯估计:
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_{i}^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}I(y_i=c_k)+S_jλ} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ
式中 λ ≥ 0 \lambda\ge0 λ≥0。等价于在随机变量各个取值的频数上赋予一个正数λ>0. 当λ=0时,就是极大似然估计; 常取λ=1,称为拉普拉斯平滑(Laplace smoothing).
显然,对任何 l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K l=1,2,...,S_j;k=1,2,...,K l=1,2,...,Sj;k=1,2,...,K,有:
- P ( X ( j ) = a j l ∣ Y = c k ) > 0 P(X^{(j)}=a_{jl}|Y=c_k)>0 P(X(j)=ajl∣Y=ck)>0
- ∑ l = 1 S j P ( X ( j ) = a j l ∣ Y = c k ) = 1 \sum_{l=1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1 ∑l=1SjP(X(j)=ajl∣Y=ck)=1
2.2.3 对数化的似然函数
上一小节中通过贝叶斯估计来解决极大似然估计中有些条件概率可能为0的问题,但是还有一个问题,那就是下溢出的问题。
下溢出问题是由于太多很小的数相乘造成的,当计算乘积 ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k) ∏jP(X(j)=x(j)∣Y=ck)时,由于大部分因子都非常小,所以程序会下溢出或者得到不正确的答案。
- 一种解决办法就是:对乘积取自然对数。ln(a*b)=ln(a)+ln(b)
- 并且采用自然对数不会有任何损失,对数函数不改变原函数的单调性和极值位置
2.3 理解极大似然估计(选看)
在统计学中,似然函数(likelihood function)是一个非常重要的内容,
- 非正式场合:似然(likelihood)和概率(Probability)几乎是一对同义词;
- 统计学中:似然和概率却是两个不同的概念。
我们重点来看一下似然和概率在统计学中的区别:
-
概率:是在特定环境下某件事情发生的可能性。也就是结果没有产生之前依据环境所对应的参数来预测某件事情发生的可能性。
比如抛硬币,抛之前我们不知道最后是哪一面朝上,但是根据硬币的性质我们可以推测任何一面朝上的可能性均为50%,这个概率只有在抛硬币之前才是有意义的,抛完硬币后的结果便是确定的;
-
似然:刚好相反,是在确定的结果下去推测产生这个结果的可能环境(参数).
还是抛硬币的例子,假设我们随机抛掷一枚硬币1,000次,结果500次人头朝上,500次数字朝上(实际情况一般不会这么理想,这里只是举个例子),我们很容易判断这是一枚标准的硬币,两面朝上的概率均为50%,这个过程就是我们根据结果来判断这个事情本身的性质(参数),也就是似然。
结果和参数相互对应的时候,似然和概率在数值上是相等的,如果用 θ表示环境对应的参数,x表示结果,那么:
- 概率:P(x|θ),是条件概率的表示方法,理解为在θ的前提下,事件x发生的概率;
- 相对应的似然:L(θ|x),理解为已知结果为x,参数为θ(似然函数里θ是变量,这里说的参数和变量是相对与概率而言的)对应的概率。即:L(θ|x)=P(x|θ)
需要说明的是两者在数值上相等,但是意义并不相同,
- P是关于x的函数;
- L是关于θ的函数
两者从不同的角度描述一件事情。
3.小结
朴素贝叶斯法是典型的生成学习方法。
生成方法:
-
由训练数据学习联合概率分布P(X,Y)。
利用训练数据学习P(X|Y)和P(Y)的估计,得到联合概率分布:P(X,Y)=P(Y)P(X|Y); 概率估计方法:可以是极大似然估计或贝叶斯估计。
-
然后利用贝叶斯定理与学到的联合概率模型求得后验概率分布P(Y|X),进行分类预测。
P ( Y ∣ X ) = P ( Y ) P ( X ∣ Y ) ∑ Y P ( Y ) P ( X ∣ Y ) P(Y|X)=\frac{P(Y)P(X|Y)}{\sum_{Y}P(Y)P(X|Y)} P(Y∣X)=∑YP(Y)P(X∣Y)P(Y)P(X∣Y)
朴素贝叶斯法的基本假设是条件独立性。
- 分类预测:将输入x分到后验概率最大的类y。 y = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=argmax_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k) y=argmaxckP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
参考资料
1.《统计学习方法》(李航),第4章。
2.《机器学习实战》,第4章。
3.似然与极大似然估计。