朴素贝叶斯法(naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入xxx,利用贝叶斯定理求出后验概率最大的输出yyy。
基本方法:
设输入空间X⊆RnX\subseteq R^nX⊆Rn为nnn维向量的集合,输出空间为类标记集合Y={c1,c2,...,ck}Y=\{c_1,c_2,...,c_k\}Y={c1,c2,...,ck}。输入为特征向量x∈Xx\in Xx∈X,输出为类标记y∈Yy\in Yy∈Y。XXX是定义在输入空间XXX上的随机向量,YYY是定义在输出空间YYY上的随机变量。P(X,Y)P(X,Y)P(X,Y)是XXX和YYY的联合概率分布。训练集T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}由P(X,Y)P(X,Y)P(X,Y)独立同分布产生。
朴素贝叶斯算法就是通过训练数据集学习联合概率分布P(X,Y)P(X,Y)P(X,Y)。
具体地,学习以下先验概率分布及条件概率分布。
先验概率分布:P(Y=Ck),k=1,2,...,KP(Y=C_k), \quad k=1,2,...,KP(Y=Ck),k=1,2,...,K;
条件概率分布: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)},...,X^{(n)}=x^{(n)}|Y=C_k),\quad k=1,2,...,KP(X=x∣Y=Ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=Ck),k=1,2,...,K。
由于条件概率分布P(X=x∣Y=Ck)P(X=x|Y=C_k)P(X=x∣Y=Ck)由指数级数量的参数,其估计实际是不可能的。事实上,假设特征X(j)X^{(j)}X(j)可能的取值有SjS_jSj个,j=1,2,...,nj=1,2,...,nj=1,2,...,n,YYY可能取值有KKK个,那么参数个数为K∏j=1nSjK\prod_{j=1}^{n}S_jK∏j=1nSj个。
于是朴素贝叶斯算法对条件概率分布作出了条件独立性的假设。这是一个非常强的假设,等于是说用于分类的特征在类确定的条件下都是条件独立的,具体地,条件独立性假设是
P(X=x∣Y=Ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=Ck)P(X=x|Y=C_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=C_k)P(X=x∣Y=Ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=Ck)
=∏j=1nP(X(j)=x(j)∣Y=Ck)\qquad \quad =\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=C_k)=j=1∏nP(X(j)=x(j)∣Y=Ck)
朴素贝叶斯算法在进行分类时,对给定的输入xxx,通过学习到的模型计算后验概率分布P(Y=Ck∣X=x)P(Y=C_k|X=x)P(Y=Ck∣X=x),然后将后验概率最大的类作为xxx的输出。后验概率计算根据贝叶斯定理进行:
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_{k}P(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)∏jP(X(j)=x(j)∣Y=Ck)∑kP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)\qquad \qquad \qquad \qquad=\frac{P(Y=C_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=C_k)}{\sum_{k}P(Y=C_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=C_k)}=∑kP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)P(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)
于是,朴素贝叶斯分类器可表示为
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_{j}P(X^{(j)}=x^{(j)}|Y=C_k)}{\sum_{k}P(Y=C_k)\prod_{j}P(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)
由于分母对所有的类都是相同的,所以
y=f(x)=argmaxCkP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)y=f(x)=arg\max_{C_k}P(Y=C_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=C_k)y=f(x)=argCkmaxP(Y=Ck)j∏P(X(j)=x(j)∣Y=Ck)
算法:
输入:训练集T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi=(xi(1),xi(2),...,xi(n))Tx_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^Txi=(xi(1),xi(2),...,xi(n))T,xi(j)x_i^{(j)}xi(j)是第iii个样本的第jjj个特征,xi(j)∈{aj1,aj2,...,ajSj}x_i^{(j)} \in \{a_{j1},a_{j2},...,a_{jS_j}\}xi(j)∈{aj1,aj2,...,ajSj},ajla_{jl}ajl是第jjj个特征可能取的第lll个值,j=1,2,...,nj=1,2,...,nj=1,2,...,n,l=1,2,...,Sjl=1,2,...,S_jl=1,2,...,Sj,yi∈{C1,C2,...,Ck}y_i \in \{C_1,C_2,...,C_k\}yi∈{C1,C2,...,Ck};实例xxx。
输出:实例xxx的分类。
- 计算先验概率及条件概率
P(Y=Ck)=∑i=1NI(yi=Ck)N,k=1,2,...,kP(Y=C_k)=\frac{\sum_{i=1}^{N}I(y_i=C_k)}{N}, \qquad k=1,2,...,kP(Y=Ck)=N∑i=1NI(yi=Ck),k=1,2,...,k
P(X(j)=ajl∣Y=Ck)=∑i=1NI(x(j)=ajl,yi=Ck)∑i=1NI(yi=Ck)P(X^{(j)}=a_{jl}|Y=C_k)=\frac{\sum_{i=1}^{N}I(x^{(j)}=a_{jl},y_i=C_k)}{\sum_{i=1}^{N}I(y_i=C_k)}P(X(j)=ajl∣Y=Ck)=∑i=1NI(yi=Ck)∑i=1NI(x(j)=ajl,yi=Ck)
j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K\qquad j=1,2,...,n; \quad l=1,2,...,S_j; \quad k=1,2,...,Kj=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K- 对于给定实例x=(x(1),x(2),...,x(n))Tx={(x^{(1)},x^{(2)},...,x^{(n)})}^Tx=(x(1),x(2),...,x(n))T,计算(这里用到了特征条件独立假设)
P(Y=Ck)∏j=1nP(X(j)=x(j)∣Y=Ck),k=1,2,...,KP(Y=C_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=C_k),\qquad k=1,2,...,KP(Y=Ck)j=1∏nP(X(j)=x(j)∣Y=Ck),k=1,2,...,K- 确定实例xxx的分类
y=argmaxCkP(Y=Ck)∏j=1nP(X(j)=x(j)∣Y=Ck)y=arg\max_{C_k}P(Y=C_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=C_k)y=argCkmaxP(Y=Ck)j=1∏nP(X(j)=x(j)∣Y=Ck)