【ML】朴素贝叶斯模型及文本分类

朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。

朴素贝叶斯模型的参数

  设输入空间 X ⊆ R n \mathcal{X}\subseteq\mathcal{R}^n XRn n n n维向量的集合,输出空间为类标记集合 Y = { c 1 , c 2 , . . . , c K } \mathcal{Y}=\{c_1,c_2,...,c_K\} Y={c1,c2,...,cK} X X X是定义在输入空间 X \mathcal{X} X上的随机向量, Y Y Y是定义在输出空间 Y \mathcal{Y} Y上的随机变量。 P ( X , Y ) P(X,Y) P(X,Y) X X X Y Y Y的联合概率分布。训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } 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 ( X , Y ) = P ( X ∣ Y ) P ( Y ) P(X,Y)=P(X|Y)P(Y) P(X,Y)=P(XY)P(Y)
倘若知道先验概率分布
P ( Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k),\quad k=1,2,...,K P(Y=ck),k=1,2,...,K
和条件概率分布
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , x ( n ) = x ( n ) ∣ Y = c k ) , k = 1 , 2 , . . . , K P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,x^{(n)}=x^{(n)}|Y=c_k),\quad k=1,2,...,K P(X=xY=ck)=P(X(1)=x(1),...,x(n)=x(n)Y=ck),k=1,2,...,K
就可以得到联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)
  条件概率分布 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=xY=ck)有指数级数量的参数,其估计实际是不可行的。因此朴素贝叶斯法对条件概率分布作了条件独立性假设:
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , 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^{(n)}=x^{(n)}|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) P(X=xY=ck)=P(X(1)=x(1),...,X(n)=x(n)Y=ck)=j=1nP(X(j)=x(j)Y=ck)
条件独立是指用于分类的特征在类确定的条件下都是条件独立的。条件独立假设是一个较强的假设,这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
  朴素贝叶斯模型的参数为 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 ( j ) = x ( j ) ∣ Y = c k ) , k = 1 , 2 , . . . , K P(X^{(j)}=x^{(j)}|Y=c_k), k=1,2,...,K P(X(j)=x(j)Y=ck),k=1,2,...,K

利用朴素贝叶斯模型分类

  朴素贝叶斯法分类时,对给定的输入 x x x,通过学习到的模型计算后验概率分布 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x),将后验概率最大的类作为 x x x的类输出。后验概率的计算根据贝叶斯定理进行:
P ( Y = c k ∣ X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k P ( X = x ∣ Y = c k ) P ( Y = c k ) 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=ckX=x)=kP(X=xY=ck)P(Y=ck)P(X=xY=ck)P(Y=ck)
由条件独立性假设
P ( Y = c k ∣ X = x ) = P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)},\quad k=1,2,...,K P(Y=ckX=x)=kP(Y=ck)j=1nP(X(j)=x(j)Y=ck)P(Y=ck)j=1nP(X(j)=x(j)Y=ck),k=1,2,...,K
于是,朴素贝叶斯分类器可表示为
y = f ( x ) = arg ⁡ max ⁡ c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) y=f(x)=\arg\max_{c_k}\frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)} y=f(x)=argckmaxkP(Y=ck)j=1nP(X(j)=x(j)Y=ck)P(Y=ck)j=1nP(X(j)=x(j)Y=ck)
上式中分母对所有 c k c_k ck都是相同的,所以
y = arg ⁡ max ⁡ c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) y=\arg\max_{c_k} P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) y=argckmaxP(Y=ck)j=1nP(X(j)=x(j)Y=ck)

后验概率最大化的含义

  朴素贝叶斯法将实例分到后验概率最大的类中,这等价于期望风险最小化。假设选择0-1损失函数:
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))=\begin{cases} 1,\quad Y\neq f(X)\\ 0,\quad Y=f(X) \end{cases} L(Y,f(X))={1,Y=f(X)0,Y=f(X)
其中 f ( X ) f(X) f(X)是分类决策函数。此时,期望风险函数为
R e x p ( f ) = E X , Y [ L ( Y , f ( X ) ) ] R_{exp}(f)=E_{X,Y}[L(Y,f(X))] Rexp(f)=EX,Y[L(Y,f(X))]
期望是对联合分布 P ( X , Y ) P(X,Y) P(X,Y)取的。可写
R e x p ( f ) = E X [ ∑ k = 1 K L ( c k , f ( X ) ) P ( c k ∣ X ) ] R_{exp}(f)=E_X[\sum_{k=1}^KL(c_k,f(X))P(c_k|X)] Rexp(f)=EX[k=1KL(ck,f(X))P(ckX)]
为了使期望风险最小化,只需对 X = x X=x X=x逐个极小化。对每个 X = x X=x X=x
f ( x ) = arg ⁡ min ⁡ y ∈ Y ∑ k = 1 K L ( c k , f ( X ) ) P ( c k ∣ X = x ) = arg ⁡ min ⁡ y ∈ Y ∑ k = 1 K P ( y ≠ c k ∣ X = x ) = arg ⁡ min ⁡ y ∈ Y ( 1 − P ( y = c k ∣ X = x ) ) = arg ⁡ max ⁡ y ∈ Y P ( y = c k ∣ X = x ) \begin{aligned} f(x)&=\arg\min_{y\in\mathcal{Y}}\sum_{k=1}^KL(c_k,f(X))P(c_k|X=x)\\ &=\arg\min_{y\in\mathcal{Y}}\sum_{k=1}^KP(y\neq c_k|X=x)\\ &=\arg\min_{y\in\mathcal{Y}}(1-P(y= c_k|X=x))\\ &=\arg\max_{y\in\mathcal{Y}}P(y= c_k|X=x) \end{aligned} f(x)=argyYmink=1KL(ck,f(X))P(ckX=x)=argyYmink=1KP(y=ckX=x)=argyYmin(1P(y=ckX=x))=argyYmaxP(y=ckX=x)
这样,期望最小化准则就得到了后验概率最大化准则:
f ( x ) = arg ⁡ max ⁡ c k P ( c k ∣ X = x ) f(x)=\arg\max_{c_k}P(c_k|X=x) f(x)=argckmaxP(ckX=x)

朴素贝叶斯模型的参数估计

最大似然估计

  先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的极大似然估计:
P ( Y = c k ) = ∑ i = 1 n I { y i = c k } n , k = 1 , 2 , . . . , K P(Y=c_k)=\frac{\sum_{i=1}^nI\{y_i=c_k\}}{n},\quad k=1,2,...,K P(Y=ck)=ni=1nI{yi=ck},k=1,2,...,K
  设第 j j j个特征 x ( j ) x^{(j)} x(j)可能的取值集合为 { a i 1 , a j 2 , . . . , a j S j } \{a_{i1},a_{j2},...,a_{jS_j}\} {ai1,aj2,...,ajSj},条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=ajlY=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 } 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)=ajlY=ck)=i=1nI{yi=ck}i=1nI{xi(j)=ajl,yi=ck}
j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K j=1,2,...,n;l=1,2,...,S_j;k=1,2,...,K j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
其中, x i ( j ) x_i^{(j)} xi(j)是第 i i i个样本的第 j j j个特征; a j l a_{jl} ajl是第 j j j个特征可能取的第 l l l个值。

朴素贝叶斯算法
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} T={(x1,y1),(x2,y2),...,(xn,yn)},其中 x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i n ) ) T x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{n)})^T xi=(xi(1),xi(2),...,xin))T x i ( j ) x_i^{(j)} xi(j)是第 i i i个样本的第 j j j个特征, x i ( j ) ∈ { a j 1 , a j 2 , . . . , a j S j } x_i^{(j)}\in\{a_{j1},a_{j2},...,a_{jS_j}\} xi(j){aj1,aj2,...,ajSj} a j l a_{jl} ajl是第 j j j个特征可能取的第 l l l个值, j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j j=1,2,...,n;l=1,2,...,S_j j=1,2,...,n;l=1,2,...,Sj y i ∈ { c 1 , c 2 , . . . , c K } y_i\in\{c_1,c_2,...,c_K\} yi{c1,c2,...,cK};实例 x x x
输出:实例 x x x的分类。

  1. 计算先验概率及条件概率:
    P ( Y = c k ) = ∑ i = 1 n I { y i = c k } n , k = 1 , 2 , . . . , K P(Y=c_k)=\frac{\sum_{i=1}^nI\{y_i=c_k\}}{n},\quad k=1,2,...,K P(Y=ck)=ni=1nI{yi=ck},k=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 } 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)=ajlY=ck)=i=1nI{yi=ck}i=1nI{xi(j)=ajl,yi=ck}
    j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K j=1,2,...,n;l=1,2,...,S_j;k=1,2,...,K j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
  2. 对于给定的实例 x = ( x ( 1 ) , x ( 2 ) , . . . , x n ) ) T x=(x^{(1)},x^{(2)},...,x^{n)})^T x=(x(1),x(2),...,xn))T,计算
    P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k),\quad k=1,2,...,K P(Y=ck)j=1nP(X(j)=x(j)Y=ck),k=1,2,...,K
  3. 确定实例 x x x的类
    y = arg ⁡ max ⁡ c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) y=\arg\max_{c_k} P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) y=argckmaxP(Y=ck)j=1nP(X(j)=x(j)Y=ck)

贝叶斯估计

  用极大似然估计可能会出现所要估计的概率值为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题额方法是采用贝叶斯估计。
  条件概率的贝叶斯估计:
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_\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)=ajlY=ck)=i=1nI{yi=ck}+Sjλi=1nI{xi(j)=ajl,yi=ck}+λ
式中 λ ≥ 0 \lambda\geq 0 λ0。等价于在随机变量各个取值的频数上赋予一个正数 λ > 0 \lambda>0 λ>0。当 λ = 0 \lambda=0 λ=0时是极大似然估计,当 λ = 1 \lambda=1 λ=1时称为拉普拉斯平滑。
  先验概率的贝叶斯估计:
P λ ( Y = c k ) = ∑ i = 1 n I { y i = c k } + λ n + K λ , k = 1 , 2 , . . . , K P_\lambda(Y=c_k)=\frac{\sum_{i=1}^nI\{y_i=c_k\}+\lambda}{n+K\lambda},\quad k=1,2,...,K Pλ(Y=ck)=n+Kλi=1nI{yi=ck}+λ,k=1,2,...,K

朴素贝叶斯文本分类

  寻找文本的某些特征,然后根据这些特征将文本归为某个类。
  假设现有的类别 C = c 1 , c 2 , … … c m C={c1,c2,……cm} C=c1,c2,cm,使用监督式机器学习方法对文本进行分类:首先假设已经有分好类的N篇文档: ( d 1 , c 1 ) 、 ( d 2 , c 2 ) 、 ( d 3 , c 3 ) … … ( d N , c N ) (d_1,c_1)、(d_2,c_2)、(d_3,c_3)……(d_N,c_N) (d1,c1)(d2,c2)(d3,c3)(dN,cN)
  目标是:寻找一个分类器,这个分类器能够,当丢给它一篇新文档d,它就输出d (最有可能)属于哪个类别c。

词袋模型

  词袋模型是表示文本特征的一种方式。
  给定一篇文档,它会有很多特征,比如文档中每个单词出现的频率、某些单词出现的位置、单词的长度……而词袋模型只考虑一篇文档中单词出现的频率(次数),用每个单词出现的频率作为文档的特征(或者说用单词出现的频率来代表该文档)。

朴素贝叶斯分类器

  用于文本分类的朴素贝叶斯模型有两种:

  • 多项式模型(multinomial model):词频型,即以单词为计算粒度,单词出现的次数为特征;
  • 伯努利模型(Bernoulli model):文档型,即以文件为计算粒度,特征取值是布尔型,单词是否在文档中出现为特征。

  给定一篇文档d,文档d最有可能属于哪个类,数学表达为:
c ^ = arg ⁡ max ⁡ c ∈ C P ( c ∣ d ) \hat{c}=\arg\max_{c\in C}P(c|d) c^=argcCmaxP(cd)
由贝叶斯公式,
c ^ = arg ⁡ max ⁡ c ∈ C P ( c ∣ d ) = arg ⁡ max ⁡ c ∈ C P ( d ∣ c ) P ( c ) P ( d ) = arg ⁡ max ⁡ c ∈ C P ( d ∣ c ) P ( c ) \hat{c}=\arg\max_{c\in C}P(c|d)=\arg\max_{c\in C}\frac{P(d|c)P(c)}{P(d)}=\arg\max_{c\in C}P(d|c)P(c) c^=argcCmaxP(cd)=argcCmaxP(d)P(dc)P(c)=argcCmaxP(dc)P(c)
使用词袋模型来表示文档d,设单词表为 V = { w 1 , w 2 , . . . , w n } V=\{w_1,w_2,...,w_n\} V={w1,w2,...,wn},文档d的每个特征表示为: d = { f 1 , f 2 , … … f n } d=\{f_1,f_2,……f_n\} d={f1,f2,fn},其中 f i f_i fi,在多项式模型中为单词 w i w_i wi出现的频率,在伯努利模型中取值0、1,表示单词是否出现在文档中,则:
c ^ = arg ⁡ max ⁡ c ∈ C P ( f 1 , f 2 , … … f n ∣ c ) P ( c ) \hat{c}=\arg\max_{c\in C}P(f_1,f_2,……f_n|c)P(c) c^=argcCmaxP(f1,f2,fnc)P(c)
假设文档d各个特征之间是相互独立的(朴素贝叶斯),则:
c ^ = arg ⁡ max ⁡ c ∈ C P ( c ) ∏ w i P ( f i ∣ c ) \hat{c}=\arg\max_{c\in C}P(c)\prod_{w_i}P(f_i|c) c^=argcCmaxP(c)wiP(fic)
若干个很小的概率值直接相乘,得到的结果会越来越小。为了避免计算过程出现下溢(underflower),取对数:
c ^ = arg ⁡ max ⁡ c ∈ C [ log ⁡ P ( c ) + ∑ w i log ⁡ P ( f i ∣ c ) ] \hat{c}=\arg\max_{c\in C}[\log P(c)+\sum_{w_i}\log P(f_i|c)] c^=argcCmax[logP(c)+wilogP(fic)]

训练贝叶斯分类器(参数估计)

  多项式朴素贝叶斯模型和伯努利朴素贝叶斯模型的计算粒度不一样,因此二者的先验概率和条件概率的计算方法不同。记:

  • N N N:文档总数;
  • W W W:所有文档包含的所有单词总个数(允许重复);
  • V V V:所有文档包含的单词构成的单词表(不重复), ∣ V ∣ = n |V|=n V=n表示 V V V中元素个数;
  • N c N_c Nc:类别为 c c c的文档总数;
  • W c W_c Wc:类别为 c c c的文档所含单词总数(允许重复);
  • W i c W_{ic} Wic:单词 w i w_i wi在所有类别为c的文档中出现的总单词次数(允许重复)。
  • N i c N_{ic} Nic:在所有类别为c的文档中出现单词 w i w_i wi的总文档次数。
多项式模型

   P ( c ) P(c) P(c)的意思是:在全部文档出现的所有单词中,类别为c的文档出现的单词总数:
P ( c ) = W c W P(c)=\frac{W_c}{W} P(c)=WWc
   P ( w i ∣ c ) P(w_i|c) P(wic)表示:在类别为c的全部文档中出现的所有单词中,单词 w i w_i wi在这些文档(类别为c)中出现的频率,
P ( w i ∣ c ) = W i c + 1 ∑ w i ∈ V ( W i c + 1 ) = W i c + 1 W c + ∣ V ∣ P(w_i|c)=\frac{W_{ic}+1}{\sum_{w_i\in V}(W_{ic}+1)}=\frac{W_{ic}+1}{W_c+|V|} P(wic)=wiV(Wic+1)Wic+1=Wc+VWic+1

伯努利模型

   P ( c ) P(c) P(c)的意思是:在所有的文档中,类别为c的文档出现的概率有多大。
P ^ ( c ) = N c N \hat{P}(c)=\frac{N_c} {N} P^(c)=NNc
   P ( w i ∣ c ) P(w_i|c) P(wic)表示:训练数据集中所有类别为c的文档,单词 w i w_i wi在这些文档(类别为c)中出现的频率,
P ^ ( w i ∣ c ) = N i c + 1 N c + 2 \hat{P}(w_i|c)=\frac{N_{ic}+1}{N_c+2} P^(wic)=Nc+2Nic+1

参考:
统计学习方法—李航
朴素贝叶斯文本分类简单介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值