朴素贝叶斯分类器模型属于监督学习模型,是概率模型和生成模型。简而言之,就是先学习类条件概率 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 ( y ) p(y) p(y)利用贝叶斯公式求得 p ( x , y ) p(x,y) p(x,y),最后得到 p ( y ∣ x ) p(y|x) p(y∣x)的相对大小。
p ( c i ∣ w ) = p ( w , c i ) p ( w ) = p ( w ∣ c i ) p ( c i ) p ( w ) p(c_{i}|w)=\frac{p(w,c_{i})}{p(w)}=\frac{p(w|c_{i})p(c_{i})}{p(w)} p(ci∣w)=p(w)p(w,ci)=p(w)p(w∣ci)p(ci)
其中, p ( c i ∣ w ) p(c_{i}|w) p(ci∣w)为后验概率, p ( c i ) p(c_{i}) p(ci)为先验概率, p ( w ∣ c i ) p(w|c_{i}) p(w∣ci)在NB中称为类条件概率, p ( w , c i ) p(w,c_{i}) p(w,ci)为联合概率。
贝叶斯定理,对于输入训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) … ( x N , y N ) } T=\{(x_{1},y_{1}),(x_{2},y_{2}),(x_{3},y_{3}) \dots (x_{N},y_{N})\} T={(x1,y1),(x2,y2),(x3,y3)…(xN,yN)}, y ∈ { c 1 , c 2 … c K } y \in \{c_{1},c_{2} \dots c_{K}\} y∈{c1,c2…cK}
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)p(y)
后验概率最大,即 a r g max y k p ( y k ∣ x i ) arg\max \limits_{y_{k}} p(y_{k}|x_{i}) argykmaxp(yk∣xi), y k y_{k} yk即为 x i x_{i} xi的最终分类, y k ∈ { c 1 , c 2 , c 3 … c K } y_{k}\in \{c_{1},c_{2},c_{3} \dots c_{K}\} yk∈{c1,c2,c3…cK},后验概率最大等价于期望损失最小,下面简单证明一下这个结论:
以0-1损失函数为例:
L ( y , f ( x ) ) = { 0 y = f ( x ) 1 y ≠ f ( x ) L(y,f(x))=\begin{cases} 0 & y=f(x) \\ 1 & y \neq f(x) \end{cases} L(y,f(x))={01y=f(x)y̸=f(x)
其期望风险函数为(这里概率用的后验概率)
R e x p ( f ) = ∑ y k = c 1 c K L ( y k , f ( x i ) ) p ( y k ∣ x i ) = p ( y k ≠ f ( x i ) ∣ x i ) = 1 − p ( y k = f ( x i ) ∣ x i ) \begin{aligned} R_{exp}(f)&=\sum \limits_{y_{k}=c_{1}}^{c_{K}} L(y_{k},f(x_{i}))p(y_{k}|x_{i}) \\ &=p(y_{k}\neq f(x_{i})|x_{i}) \\ &=1-p(y_{k}=f(x_{i})|x_{i}) \end{aligned} Rexp(f)=yk=c1∑cKL(yk,f(xi))p(yk∣xi)=p(yk̸=f(xi)∣xi)=1−p(yk=f(xi)∣xi)
可见,要使得 min R e x p ( f ) \min R_{exp}(f) minRexp(f),即要求 max p ( y k = f ( x i ) ∣ x i ) \max p(y_{k}=f(x_{i})|x_{i}) maxp(yk=f(xi)∣xi),即 f ( x ) f(x) f(x)要选择后验概率最大。
利用特征独立,即对于记录 x i = ( x i ( 1 ) , x i ( 2 ) , x i ( 3 ) … x i ( j ) ) x_{i}=(x_{i}^{(1)},x_{i}^{(2)},x_{i}^{(3)} \dots x_{i}^{(j)}) xi=(xi(1),xi(2),xi(3)…xi(j)),其类条件概率 p ( x i ∣ y ) = p ( ( x i ( 1 ) , x i ( 2 ) , x i ( 3 ) … x i ( j ) ) ∣ y ) p(x_{i}|y_{})=p((x_{i}^{(1)},x_{i}^{(2)},x_{i}^{(3)} \dots x_{i}^{(j)})|y) p(xi∣y)=p((xi(1),xi(2),xi(3)…xi(j))∣y)等价于 ∏ n = 1 j p ( x i ( n ) ∣ y ) \prod \limits ^{j}_{n=1} p(x_{i}^{(n)}|y) n=1∏jp(xi(n)∣y),即需要单独学习每个字段的类条件概率 p ( x ( n ) ∣ y ) p(x^{(n)}|y) p(x(n)∣y),同时也要学习先验概率 p ( y ) p(y) p(y),学习的方法可以选择极大似然估计或者贝叶斯估计。
下面利用极大似然估计推导 p ( y ) p(y) p(y)与 p ( x ( n ) ∣ y ) p(x^{(n)}|y) p(x(n)∣y)的计算公式,以类别总数为3为例,类别总数等于其它值时类似。
p ( y = c k ) = ∑ i = 1 N I ( y i = c k ) N , k = 1 , 2 , 3 p(y=c_{k})=\frac{\sum \limits_{i=1}^{N}I(y_{i}=c_{k})}{N},k=1,2,3 p(y=ck)=Ni=1∑NI(yi=ck),k=1,2,3
证明:设我们要估计的先验概率在 y = c 1 , c 2 , c 3 y=c_{1},c_{2},c_{3} y=c1,c2,c3的概率分别为 p 1 , p 2 , p 3 p_{1},p_{2},p_{3} p1,p2,p3,训练集中, y = c 1 , c 2 , c 3 y=c_{1},c_{2},c_{3} y=c1,c2,c3所占总数据的条数分别为 a 1 , a 2 , a 3 a_{1},a_{2},a_{3} a1,a2,a3, a 1 + a 2 + a 3 = N a_{1}+a_{2}+a_{3}=N a1+a2+a3=N,则似然函数:
L ( p ∣ x ) = ∏ p ( x ; p ) = p 1 a 1 p 2 a 2 p 3 a 3 L(p|x)=\prod p(x;p)=p_{1}^{a_{1}}p_{2}^{a_{2}}p_{3}^{a_{3}} L(p∣x)=∏p(x;p)=p1a1p2a2p3a3
那么我们就有了下面的等式条件约束问题:
max p 1 a 1 p 2 a 2 p 3 a 3 s . t . p 1 + p 2 + p 3 = 1 \begin{aligned} \max &~~p_{1}^{a_{1}}p_{2}^{a_{2}}p_{3}^{a_{3}}\\ s.t. &~~p_{1}+p_{2}+p_{3}=1 \end{aligned} maxs.t. p1a1p2a2p3a3 p1+p2+p3=1
利用拉格朗日乘数法,构造拉格朗日函数如下:
L ( p 1 , p 2 , p 3 , α ) = p 1 a 1 p 2 a 2 p 3 a 3 + α ( p 1 + p 2 + p 3 − 1 ) L(p_{1},p_{2},p_{3},\alpha)=p_{1}^{a_{1}}p_{2}^{a_{2}}p_{3}^{a_{3}}+\alpha(p_{1}+p_{2}+p_{3}-1) L(p1,p2,p3,α)=p1a1p2a2p3a3+α(p1+p2+p3−1)
拉格朗日函数对 p 1 , p 2 , p 3 , α p_{1},p_{2},p_{3},\alpha p1,p2,p3,α求偏导等于0,如下:
∂ L ∂ p 1 = a 1 p 1 a 1 − 1 p 2 a 2 p 3 a 3 + α = 0 ∂ L ∂ p 2 = a 2 p 2 a 2 − 1 p 1 a 1 p 3 a 3 + α = 0 ∂ L ∂ p 3 = a 3 p 3 a 3 − 1 p 1 a 1 p 2 a 2 + α = 0 ∂ L ∂ α = p 1 + p 2 + p 3 − 1 = 0 \frac{\partial L}{\partial p_{1}}=a_{1}p_{1}^{a_{1}-1}p_{2}^{a_{2}}p_{3}^{a_{3}}+\alpha = 0\\ \frac{\partial L}{\partial p_{2}}=a_{2}p_{2}^{a_{2}-1}p_{1}^{a_{1}}p_{3}^{a_{3}}+\alpha = 0\\ \frac{\partial L}{\partial p_{3}}=a_{3}p_{3}^{a_{3}-1}p_{1}^{a_{1}}p_{2}^{a_{2}}+\alpha = 0\\ \frac{\partial L}{\partial \alpha}=p_{1}+p_{2}+p_{3}-1 = 0 ∂p1∂L=a1p1a1−1p2a2p3a3+α=0∂p2∂L=a2p2a2−1p1a1p3a3+α=0∂p3∂L=a3p3a3−1p1a1p2a2+α=0∂α∂L=p1+p2+p3−1=0
整理后如下:
p 1 a 1 = p 2 a 2 = p 3 a 3 p 1 + p 2 + p 3 = 1 \frac{p_{1}}{a_{1}}=\frac{p_{2}}{a_{2}}=\frac{p_{3}}{a_{3}} \\ p_{1}+p_{2}+p_{3}=1 a1p1=a2p2=a3p3p1+p2+p3=1
且 a 1 + a 2 + a 3 = N a_{1}+a_{2}+a_{3}=N a1+a2+a3=N,最终结果如下:
p 1 = a 1 N p 2 = a 2 N p 3 = a 3 N p_{1}=\frac{a_{1}}{N}\\ p_{2}=\frac{a_{2}}{N}\\ p_{3}=\frac{a_{3}}{N} p1=Na1p2=Na2p3=Na3
证毕。
同理证明:
p ( x ( n ) = a n l ∣ y = c k ) = ∑ i = 1 N I ( x i ( n ) = a n l , y i = c k ) ∑ i = 1 N I ( y i = c k ) p(x^{(n)}=a_{nl}|y=c_{k})=\frac{\sum \limits_{i=1}^{N}I(x_{i}^{(n)}=a_{nl},y_{i}=c_{k})}{\sum \limits _{i=1}^{N}I(y_{i}=c_{k})} p(x(n)=anl∣y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(n)=anl,yi=ck)
a n l a_{nl} anl表示字段 x ( n ) x^{(n)} x(n)的第 l l l个可能取值是 a n l a_{nl} anl。根据贝叶斯公式
p ( x ( n ) = a n l ∣ y = c k ) = p ( x ( n ) = a n l , y = c k ) p ( y = c k ) p(x^{(n)}=a_{nl}|y=c_{k})=\frac{p(x^{(n)}=a_{nl},y=c_{k})}{p(y=c_{k})} p(x(n)=anl∣y=ck)=p(y=ck)p(x(n)=anl,y=ck)
我们只需利用极大似然估计求得 p ( x ( n ) = a n l , y = c k ) p(x^{(n)}=a_{nl},y=c_{k}) p(x(n)=anl,y=ck)与 p ( y = c k ) p(y=c_{k}) p(y=ck)的估计概率值即可,步骤同上。
这个结论其实可以解释我们平时经常用到的,频率等于概率这一操作,其背后原理就是极大似然估计。
输入:待分类点 x = ( x ( 1 ) , x ( 2 ) , x ( 3 ) … x ( j ) ) x=(x^{(1)},x^{(2)},x^{(3)} \dots x^{(j)}) x=(x(1),x(2),x(3)…x(j));训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) … ( x N , y N ) } T=\{(x_{1},y_{1}),(x_{2},y_{2}),(x_{3},y_{3}) \dots (x_{N},y_{N})\} T={(x1,y1),(x2,y2),(x3,y3)…(xN,yN)}, x i = ( x i ( 1 ) , x i ( 2 ) , x i ( 3 ) … x i ( j ) ) x_{i}=(x_{i}^{(1)},x_{i}^{(2)},x_{i}^{(3)} \dots x_{i}^{(j)}) xi=(xi(1),xi(2),xi(3)…xi(j))表示第 i i i条记录, x i ( j ) x_{i}^{(j)} xi(j)表示第 i i i条记录的第 j j j个字段, x ( j ) ∈ { a j 1 , a j 2 , a j 3 … a j S j } x^{(j)} \in \{a_{j1},a_{j2},a_{j3} \dots a_{jS_{j}}\} x(j)∈{aj1,aj2,aj3…ajSj}, a j l a_{jl} ajl表示第 j j j个字段可以取的第 l l l个值, y i ∈ { c 1 , c 2 … c K } y_{i} \in \{c_{1},c_{2} \dots c_{K}\} yi∈{c1,c2…cK}。
输出:待分类点x的类别。
执行流程:
NB的著名应用是文档分类。细节暂不介绍,下面仅介绍几种NLP中用到的文本处理模型。
词集模型(set-of-words model):仅考虑词是否出现,出现记为1,不出现记为0。
词袋模型(bag-of-words model):在词集模型基础上,记录词的出现次数。
前面提到,NB主要学习步骤,就是求类条件概率 p ( x ∣ y ) p(x|y) p(x∣y)与先验概率 p ( y ) p(y) p(y),有三种主流方法求解这两个概率:高斯NB(Gaussian NB)、多项式NB(Multinomial NB)、伯努利NB(Bernouli NB)。
p ( y ) = N y + α N + k α p(y)=\frac{N_{y}+\alpha}{N+k\alpha} p(y)=N+kαNy+α
N是总共的记录条数, N y N_{y} Ny是类为 y y y的记录数, k k k是类个数, α \alpha α是平滑值。
p ( x ( l ) ∣ y ) = N y , x ( l ) + α N y + n α p(x^{(l)}|y)=\frac{N_{y,x^{(l)}}+\alpha}{N_{y}+n\alpha} p(x(l)∣y)=Ny+nαNy,x(l)+α
N y N_{y} Ny是类为 y y y的记录数, N y , x ( l ) N_{y,x^{(l)}} Ny,x(l)是类为 y y y且给定第 l l l个特征 x ( l ) x^{(l)} x(l)的具体取值的记录数,n是特征的维数, α \alpha α是平滑值。
和多项式NB类似,只不过每个特征要求为二项分布。
用于特征是连续值的情况,认为特征是正态分布。
p ( x ( l ) ∣ y ) = 1 2 π σ y , x ( l ) e − ( x i − μ y , x ( l ) ) 2 2 σ y , x ( l ) 2 p(x^{(l)}|y)=\frac{1}{\sqrt{2\pi}\sigma_{y,x^{(l)}}} e^{-\frac{(x_{i}-\mu_{y,x^{(l)}})^{2}}{2\sigma_{y,x^{(l)}}^{2}}} p(x(l)∣y)=2πσy,x(l)1e−2σy,x(l)2(xi−μy,x(l))2
用MAP求参数 μ y , x ( l ) \mu_{y,x^{(l)}} μy,x(l)与 σ y , x ( l ) \sigma_{y,x^{(l)}} σy,x(l),sk-learn库的GaussianNB求解参数 μ y , x ( l ) \mu_{y,x^{(l)}} μy,x(l)与 σ y , x ( l ) \sigma_{y,x^{(l)}} σy,x(l)时,直接求的特征的平均值和标准差。
参考文献:
《统计学习方法》