朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。
1、朴素贝叶斯法的学习与分类
已知训练数据集T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}T={(x1,y1),(x2,y2),⋯,(xN,yN)}由联合概率分布P(X,Y)P(X,Y)P(X,Y)独立同分布产生,朴素贝叶斯法通过训练数据集TTT学习联合概率分布P(X,Y)P(X,Y)P(X,Y),根据贝叶斯定理,可以通过学习先验概率分布P(Y)P(Y)P(Y)及条件概率分布P(X∣Y)P(X|Y)P(X∣Y),得到联合概率分布P(X,Y)P(X,Y)P(X,Y)。
先验概率分布P(Y)P(Y)P(Y)较好求,公式为
P(Y=ck),k=1,2,⋯ ,KP(Y=c_k),\quad k=1,2,\cdots,KP(Y=ck),k=1,2,⋯,K 对于条件概率分布P(X∣Y)P(X|Y)P(X∣Y),原本的公式为
P(X=x∣Y=ck)=P(X(1)=x(1),⋯ ,X(n)=x(n)∣Y=ck),k=1,2,⋯ ,KP(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_k),\quad k=1,2,\cdots,KP(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck),k=1,2,⋯,K 但其估计实际是不可行的,因为这里的xxx实际是nnn维输入数据,若设其中各维x(j)x^{(j)}x(j)的可取值有SjS_jSj个,j=1,2,⋯ ,nj=1,2,\cdots,nj=1,2,⋯,n,设YYY可取值有KKK个,那么P(X=x∣Y=ck)P(X=x|Y=c_k)P(X=x∣Y=ck)的参数有K∏j=1nSjK\prod_{j=1}^nS_jK∏j=1nSj个,这实在太多了。换个角度讲,如果X∣YX|YX∣Y有太多种情况,则每种情况对应的样本就会过少,甚至很可能会出现在Y=ckY=c_kY=ck的条件约束下,在样本中找不到满足X=xX=xX=x的情况。
因此朴素贝叶斯法对条件概率分布作了条件独立性假设,则条件概率分布公式可转化为
P(X=x∣Y=ck)=∏j=1nP(Xj=xj∣Y=ck)P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{j}=x^{j}|Y=c_k)P(X=x∣Y=ck)=j=1∏nP(Xj=xj∣Y=ck) 这很好理解,条件独立假设等于是说,用于分类的特征在类确定的条件下都是条件独立的,这一假设使朴素贝叶斯法变得简单,但由于特征不一定是独立的,会牺牲一定的分类准确率。
得到先验概率分布于条件概率分布后,可以根据贝叶斯定理计算后验概率分布
P(Y=ck∣X=x)=P(X=x∣Y=ck)P(Y=ck)P(X=x)P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)}P(Y=ck∣X=x)=P(X=x)P(X=x∣Y=ck)P(Y=ck) 由于
P(X=x)=∑kP(X=x,Y=ck)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x)=\sum_kP(X=x,Y=c_k)=\sum_kP(X=x|Y=c_k)P(Y=c_k)P(X=x)=k∑P(X=x,Y=ck)=k∑P(X=x∣Y=ck)P(Y=ck) 因此后验概率分布可以转化为
P(Y=ck∣X=x)=P(X=x∣Y=ck)P(Y=ck)∑kP(X=x∣Y=ck)P(Y=ck)P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck) 代入条件独立性假设,可得
P(Y=ck∣X=x)=P(Y=ck)∏jP(X(j)=x(j)∣Y=ck)∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)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)}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) 对给定的xxx,计算出每个ckc_kck的后验概率分布P(Y=ck∣X=x)P(Y=c_k|X=x)P(Y=ck∣X=x),取最大的一个作为分类结果,于是朴素贝叶斯分类器可表示为
y=f(x)=argmaxckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)y=f(x)=arg\max_{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)=argckmax∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck) 注意到分母对所有的ckc_kck都是相同的,所以
y=argmaxckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)y=arg\max_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck) 上述取后验概率最大化规则,等价于期望风险最小化,具体证明如下:
期望风险函数为
Rexp(f)=E[L(Y,f(X))]R_{exp}(f)=E[L(Y,f(X))]Rexp(f)=E[L(Y,f(X))] 由于期望是对联合分布P(X,Y)P(X,Y)P(X,Y)取的,因此取条件期望
Rexp(f)=EX∑k=1K[L(ck,f(X))]P(ck∣X)R_{exp}(f)=E_X\sum_{k=1}^K[L(c_k,f(X))]P(c_k|X)Rexp(f)=EXk=1∑K[L(ck,f(X))]P(ck∣X) 期望风险最小化即为
f(x)=argminy∈Y∑k=1KL(ck,y)P(ck∣X=x)f(x)=arg\min_{y\in Y}\sum_{k=1}^KL(c_k,y)P(c_k|X=x)f(x)=argy∈Ymink=1∑KL(ck,y)P(ck∣X=x) 假设损失函数L(ck,y)L(c_k,y)L(ck,y)选择0-1损失函数,上式可变为
f(x)=argminy∈Y∑k=1KP(y̸=ck∣X=x)=argmaxy∈YP(y=ck∣X=x)f(x)=arg\min_{y\in Y}\sum_{k=1}^KP(y\not= c_k|X=x)=arg\max_{y\in Y}P(y=c_k|X=x)f(x)=argy∈Ymink=1∑KP(y̸=ck∣X=x)=argy∈YmaxP(y=ck∣X=x) 这就得到了后验概率最大化准则。
2、朴素贝叶斯法的参数估计
接下来考虑如何具体的确定地计算先验概率分布P(Y)P(Y)P(Y)与条件概率分布P(X∣Y)P(X|Y)P(X∣Y)。
首先可以采用极大似然估计,则先验概率的极大似然估计是
P(Y=ck)=∑i=1NI(yi=ck)N,k=1,2,⋯ ,KP(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N},\quad k=1,2,\cdots,KP(Y=ck)=N∑i=1NI(yi=ck),k=1,2,⋯,K 条件概率分布的极大似然估计是
P(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_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,⋯ ,Kj=1,2,\cdots,n;\quad l=1,2,\cdots,S_j;\quad k=1,2,\cdots,Kj=1,2,⋯,n;l=1,2,⋯,Sj;k=1,2,⋯,K 式中,xi(j)x_i^{(j)}xi(j)是第iii个样本的第jjj个特征,ajla_{jl}ajl是第jjj个特征可能取得第lll个值。
最后将先验概率与条件概率代入朴素贝叶斯分类器公式中,找到使后验概率最大的ckc_kck即可。
但根据上述条件概率分布的极大似然估计函数,若样本中没有x(j)=ajlx^{(j)}=a_{jl}x(j)=ajl且y=cky=c_ky=ck的实例,即∑i=1NI(xi(j)=ajl,yi=ck)=0\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)=0∑i=1NI(xi(j)=ajl,yi=ck)=0,那么将其代入朴素贝叶斯分类器公式中,可能会出现所要估计的概率值为0的情况。直观上理解便是,如果某测试样本的第jjj个特征x(j)=ajlx^{(j)}=a_{jl}x(j)=ajl,但在训练集中没有xi(j)=ajlx^{(j)}_i=a_{jl}xi(j)=ajl且yi=cky_i=c_kyi=ck的样本,那么此测试样本属于ckc_kck类的概率为0,这显然是不合理的。
因此解决这一问题的方法是采用贝叶斯估计,条件概率的贝叶斯估计是
Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)+λ∑i=1NI(yi=ck)+SjλP_\lambda(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda}Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ 式中λ≥0\lambda\ge0λ≥0,SjS_jSj为第jjj个特征x(j)x^{(j)}x(j)的可取数。当λ=0\lambda=0λ=0时,就是极大似然估计;常取λ=1\lambda=1λ=1,这时称为拉普拉斯平滑(Laplace smoothing)。
拉普拉斯平滑保证了条件概率大于0,且每个特征的条件概率之和仍然等于1,即
Pλ(X(j)=ajl∣Y=ck)>0P_\lambda(X^{(j)}=a_{jl}|Y=c_k)>0Pλ(X(j)=ajl∣Y=ck)>0∑l=1SjP(X(j)=ajl∣Y=ck)=1\sum_{l=1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1l=1∑SjP(X(j)=ajl∣Y=ck)=1 同样,先验概率的贝叶斯估计是
Pλ(Y=ck)=∑i=1NI(yi=ck)+λN+KλP_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ 式中KKK为yyy的可取数。