朴素贝叶斯分类器(Naive Bayes,NB)

文章目录

  • 朴素贝叶斯分类器
    • 贝叶斯定理
    • 统计学习方法三要素
      • 模型
      • 策略
      • 学习
        • 利用极大似然估计进行学习
    • NB的假设条件
    • 算法流程
    • NB的应用
    • NB的分类
      • 多项式NB
      • 伯努利NB
      • 高斯NB

朴素贝叶斯分类器

  朴素贝叶斯分类器模型属于监督学习模型,是概率模型和生成模型。简而言之,就是先学习类条件概率 p ( x ∣ y ) p(x|y) p(xy)与先验概率 p ( y ) p(y) p(y),根据 p ( x ∣ y ) p(x|y) p(xy) p ( y ) p(y) p(y)利用贝叶斯公式求得 p ( x , y ) p(x,y) p(x,y),最后得到 p ( y ∣ x ) p(y|x) p(yx)的相对大小。


贝叶斯定理

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(ciw)=p(w)p(w,ci)=p(w)p(wci)p(ci)
  其中, p ( c i ∣ w ) p(c_{i}|w) p(ciw)为后验概率, p ( c i ) p(c_{i}) p(ci)为先验概率, p ( w ∣ c i ) p(w|c_{i}) p(wci)在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,c2cK}
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)} p(yx)=p(x)p(xy)p(y)
  

策略

   后验概率最大,即 a r g max ⁡ y k p ( y k ∣ x i ) arg\max \limits_{y_{k}} p(y_{k}|x_{i}) argykmaxp(ykxi) 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,c3cK},后验概率最大等价于期望损失最小,下面简单证明一下这个结论:
  以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=c1cKL(yk,f(xi))p(ykxi)=p(yk̸=f(xi)xi)=1p(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(xiy)=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=1jp(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=1NI(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(px)=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+p31)

  拉格朗日函数对 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 p1L=a1p1a11p2a2p3a3+α=0p2L=a2p2a21p1a1p3a3+α=0p3L=a3p3a31p1a1p2a2+α=0αL=p1+p2+p31=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)=anly=ck)=i=1NI(yi=ck)i=1NI(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)=anly=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)的估计概率值即可,步骤同上。

  这个结论其实可以解释我们平时经常用到的,频率等于概率这一操作,其背后原理就是极大似然估计。


NB的假设条件

  1. 特征独立,朴素(Naive)之名就是这么来的。
  2. 特征同等重要。

算法流程

  输入:待分类点 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,aj3ajSj} 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,c2cK}
  输出:待分类点x的类别。
  执行流程:

  1. 利用公式 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)=anly=ck)=i=1NI(yi=ck)i=1NI(xi(n)=anl,yi=ck)求解类条件概率。
  2. 利用公式 p ( y = c k ) = ∑ i = 1 N I ( y i = c k ) N p(y=c_{k})=\frac{\sum \limits_{i=1}^{N}I(y_{i}=c_{k})}{N} p(y=ck)=Ni=1NI(yi=ck)求解先验概率。
  3. 利用前面求解的类条件概率和先验概率,求得 a r g max ⁡ c k ∏ n = 1 j p ( x ( n ) ∣ y = c k ) p ( y = c k ) arg\max \limits _{c_{k}} \prod \limits _{n=1}^{j}p(x^{(n)}|y=c_{k})p(y=c_{k}) argckmaxn=1jp(x(n)y=ck)p(y=ck),返回求得的 c k c_{k} ck即为NB对分类点x的分类。

NB的应用

  NB的著名应用是文档分类。细节暂不介绍,下面仅介绍几种NLP中用到的文本处理模型。

  词集模型(set-of-words model):仅考虑词是否出现,出现记为1,不出现记为0。
  词袋模型(bag-of-words model):在词集模型基础上,记录词的出现次数。


NB的分类

  前面提到,NB主要学习步骤,就是求类条件概率 p ( x ∣ y ) p(x|y) p(xy)与先验概率 p ( y ) p(y) p(y),有三种主流方法求解这两个概率:高斯NB(Gaussian NB)、多项式NB(Multinomial NB)、伯努利NB(Bernouli NB)。

多项式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

  和多项式NB类似,只不过每个特征要求为二项分布。

高斯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)1e2σ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)时,直接求的特征的平均值和标准差。


参考文献:
《统计学习方法》

你可能感兴趣的:(机器学习)