朴素贝叶斯模型

首先重述一下朴素贝叶斯模型(Naive Bayes model)的定义, 该模型包含 k k k个特定的标签, 一个 d d d维向量用于表示d个属性特征. 其包含以下参数:

  • q ( y ) q(y) q(y), 表示看见标签 y y y的概率, 其满足约束 q ( y ) ≥ 0 q(y)\ge0 q(y)0并且 ∑ y = 1 k q ( y ) = 1 \sum_{y=1}^kq(y)=1 y=1kq(y)=1.
  • q j ( x ∣ y ) q_j(x|y) qj(xy),其中 j ∈ { 1... d } , x ∈ { − 1 , + 1 } , y ∈ { 1... k } j\in \{1...d\},x\in \{-1,+1\},y\in \{1...k\} j{ 1...d},x{ 1,+1},y{ 1...k}.表示在标签 y y y的条件下,第 j j j个属性取 x x x的概率, 其满足约束 q j ( x ∣ y ) ≥ 0 q_j(x|y)\ge0 qj(xy)0并且对于所有 y y y j j j, ∑ x ∈ { − 1 , + 1 } q j ( x ∣ y ) = 1 \sum_{x\in \{-1,+1\}}q_j(x|y)=1 x{ 1,+1}qj(xy)=1.

则对于任意的 y , x 1 . . . x d y,x_1...x_d y,x1...xd我们可以定义如下概率:
p ( y , x 1 . . . x d ) = q ( y ) ∏ j = 1 d q j ( x j ∣ y ) p(y,x_1...x_d)=q(y)\prod_{j=1}^dq_j(x_j|y) p(y,x1...xd)=q(y)j=1dqj(xjy)
我们需要在训练集中进行参数估计,一旦参数确定,对于测试案例 x = < x 1 , x 2 , . . . , x d > x=<x_1,x_2,...,x_d> x=<x1,x2,...,xd>,模型的输出为:
a r g max ⁡ y ∈ { 1... k } p ( y , x 1 , . . . , x d ) = a r g max ⁡ y ∈ { 1... k } ( q ( y ) ∏ j = 1 d q j ( x j ∣ y ) ) arg\max_{y\in \{1...k\}}p(y,x_1,...,x_d)=arg\max_{y\in \{1...k\}}\left(q(y)\prod_{j=1}^dq_j(x_j|y)\right) argy{ 1...k}maxp(y,x1,...,xd)=argy{ 1...k}max(q(y)j=1dqj(xjy))
利用最大似然估计, q ( y ) q(y) q(y)可以估计为:
q ( y ) = ∑ i = 1 n [ [ y ( i ) = y ] ] n = c o u n t ( y ) n q(y)=\frac{\sum^n_{i=1}[[y^{(i)}=y]]}{n}=\frac{count(y)}{n} q(y)=ni=1n[[y(i)=y]]=ncount(y)
这里定义 [ [ y ( i ) = y ] ] [[y^{(i)}=y]] [[y(i)=y]]为1, 如果 y ( i ) = y y^{(i)}=y y(i)=y, 反之为0. 因此分子表示训练集中标签 y y y出现的次数. 类似地, q j ( x ∣ y ) q_j(x|y) qj(xy)可以写成:
q j ( x ∣ y ) = ∑ i = 1 n [ [ y ( i ) = y   a n d   x j ( i ) = x ] ] ∑ i = 1 n [ [ y ( i ) = y ] ] = c o u n t j ( x ∣ y ) c o u n t ( y ) q_j(x|y)=\frac{\sum^n_{i=1}[[y^{(i)}=y \ and \ x_j^{(i)}=x]]}{\sum^n_{i=1}[[y^{(i)}=y]]}=\frac{count_j(x|y)}{count(y)} qj(xy)=i=1n[[y(i)=y]]i=1n[[y(i)=y and xj(i)=x]]=count(y)countj(xy)
其中:
c o u n t j ( x ∣ y ) = ∑ i = 1 n [ [ y ( i ) = y   a n d   x j ( i ) = x ] ] count_j(x|y)=\sum^n_{i=1}[[y^{(i)}=y \ and \ x_j^{(i)}=x]] countj(xy)=i=1n[[y(i)=y and xj(i)=x]]
这是一个非常直观的表示,我们统计了训练集中所有标签为 y y y, 并且 x j x_j xj x x x的案例的个数, 然后统计了训练集中所有标签为 y y y的案例的个数, 最后将这两项的比值作为 q j ( x ∣ y ) q_j(x|y) qj(xy).

下面给出上面估计方式的具体证明, 首先给出多项式分布的最大似然分布. 定义在有限集 Y \mathcal{Y} Y的分布表示成一个向量 q q q, 其中每一项 q y , y ∈ Y q_y, y\in \mathcal{Y} qy,yY表示看见元素 y y y的概率. 定义 P Y \mathcal{P}_{\mathcal{Y}} PY为所有分布的集合:
P Y = { q ∈ R ∣ Y ∣ : ∀ y ∈ Y , q y ≥ 0 ; ∑ y ∈ Y q y = 1 } \mathcal{P}_{\mathcal{Y}}=\{q\in \mathbb{R}^{|\mathcal{Y}|}: \forall y\in \mathcal{Y},q_y\ge 0;\sum_{y \in \mathcal{Y}}q_y=1\} PY={ qRY:yY,qy0;yYqy=1}
除此之外,假定存在一个向量 c c c, 其中每一项 c y , y ∈ Y c_y, y \in \mathcal{Y} cy,yY我们假定 c y ≥ 0 c_y\ge 0 cy0, 很多情况下 c y c_y cy通常表示看见 y y y的个数. 我们可以定义如下优化问题:
q ∗ = arg ⁡ max ⁡ q ∈ P Y ∑ y ∈ Y c y log ⁡ q y q^*=\arg \max_{q\in \mathcal{P}_{\mathcal{Y}}}\sum_{y\in \mathcal{Y}}c_y\log q_y q=argqPYmaxyYcylogqy
因此 q ∗ q^* q为使得上式最大化的最优分布. 考虑到函数 ∑ y ∈ Y c y log ⁡ q y \sum_{y\in \mathcal{Y}}c_y\log q_y yYcylogqy满足约束 q y ≥ 0   a n d   ∑ y ∈ Y q y = 1 q_y\ge 0 \ and \ \sum_{y \in \mathcal{Y}}q_y=1 qy0 and yYqy=1.简单起见,假设对于所有的 y y y, c y > 0 c_y>0 cy>0. 由拉格朗日乘子法,目标函数为:
g ( λ , q ) = ∑ y ∈ Y c y log ⁡ q y − λ ( ∑ y ∈ Y q y − 1 ) g(\lambda, q)=\sum_{y\in \mathcal{Y}}c_y\log q_y - \lambda \left(\sum_{y\in \mathcal{Y}}q_y-1 \right) g(λ,q)=yYcylogqyλyYqy1
则最优的 q y ∗ q^*_y qy满足以下条件:
∑ y ∈ Y q y = 1 d d q y g ( λ , q ) = c y q y − λ = 0 \sum_{y \in \mathcal{Y}}q_y=1 \\ \frac{d}{dq_y}g(\lambda, q)=\frac{c_y}{q_y}-\lambda = 0 yYqy=1dqydg(λ,q)=qycyλ=0
可以得到:
q y = c y λ = c y ∑ y ∈ Y c y q_y=\frac{c_y}{\lambda}=\frac{c_y}{\sum_{y\in \mathcal{Y}}c_y} qy=λcy=yYcycy
对于给定的训练集 ( x ( i ) , y ( x ) ) (x^{(i)},y^{(x)}) (x(i),y(x)), 其中 i = 1... n i=1...n i=1...n, 我们需要最大化以下对数似然函数:
L ( θ ) = ∑ i = 1 n log ⁡ p ( x ( x ) , y ( i ) ) = ∑ i = 1 n log ⁡ ( q ( y ( i ) ) ∏ j = 1 d q j ( x j ( i ) ∣ y ( i ) ) ) = ∑ i = 1 n log ⁡ q ( y ( i ) ) + ∑ i = 1 n log ⁡ ( ∏ j = 1 d q j ( x j ( i ) ∣ y ( i ) ) ) = ∑ i = 1 n log ⁡ q ( y ( i ) ) + ∑ i = 1 n ∑ j = 1 d q j ( x j ( i ) ∣ y ( i ) ) \begin{aligned} L(\theta)&=\sum^n_{i=1}\log p(x^{(x)},y^{(i)}) \\ &=\sum^n_{i=1}\log \left(q(y^{(i)})\prod^d_{j=1}q_j(x_j^{(i)}|y^{(i)})\right) \\ &=\sum^n_{i=1}\log q(y^{(i)}) + \sum^n_{i=1}\log \left(\prod^d_{j=1}q_j(x_j^{(i)}|y^{(i)}) \right) \\ &=\sum^n_{i=1}\log q(y^{(i)}) + \sum^n_{i=1}\sum^d_{j=1}q_j(x_j^{(i)}|y^{(i)}) \end{aligned} L(θ)=i=1nlogp(x(x),y(i))=i=1nlog(q(y(i))j=1dqj(xj(i)y(i)))=i=1nlogq(y(i))+i=1nlog(j=1dqj(xj(i)y(i)))=i=1nlogq(y(i))+i=1nj=1dqj(xj(i)y(i))
其中, θ \theta θ表示模型的所有参数.

我们可以将上式重写为:
L ( θ ) = ∑ i = 1 n log ⁡ q ( y ( i ) ) + ∑ i = 1 n ∑ j = 1 d q j ( x j ( i ) ∣ y ( i ) ) = ∑ y ∈ Y c o u n t ( y ) log ⁡ q ( y ) + ∑ j = 1 d ∑ y ∈ Y ∑ x ∈ { − 1 , + 1 } c o u n t j ( x ∣ y ) log ⁡ q j ( x ∣ y ) \begin{aligned} L(\theta)&=\sum^n_{i=1}\log q(y^{(i)}) + \sum^n_{i=1}\sum^d_{j=1}q_j(x_j^{(i)}|y^{(i)}) \\ &=\sum_{y\in \mathcal{Y}}count(y)\log q(y) + \sum_{j=1}^d\sum_{y\in \mathcal{Y}}\sum_{x\in \{ -1, +1\}}count_j(x|y)\log q_j(x|y) \end{aligned} L(θ)=i=1nlogq(y(i))+i=1nj=1dqj(xj(i)y(i))=yYcount(y)logq(y)+j=1dyYx{ 1,+1}countj(xy)logqj(xy)
理由如下, 左边的项等于:
∑ i = 1 n log ⁡ q ( y ( i ) ) = ∑ i = 1 n ∑ y = 1 k [ [ y ( i ) = y ] ] log ⁡ q ( y ) = ∑ y = 1 k ∑ i = 1 n [ [ y ( i ) = y ] ] log ⁡ q ( y ) = ∑ y = 1 k log ⁡ q ( y ) ∑ i = 1 n [ [ y ( i ) = y ] ] = ∑ y = 1 k ( log ⁡ q ( y ) ) × c o u n t ( y ) \begin{aligned} \sum^n_{i=1}\log q(y^{(i)}) &= \sum^n_{i=1}\sum^k_{y=1}[[y^{(i)}=y]]\log q(y) \\ &=\sum^k_{y=1}\sum^n_{i=1}[[y^{(i)}=y]]\log q(y) \\ &= \sum^k_{y=1} \log q(y) \sum^n_{i=1}[[y^{(i)}=y]] \\ &= \sum^k_{y=1}(\log q(y)) \times count(y) \end{aligned} i=1nlogq(y(i))=i=1ny=1k[[y(i)=y]]logq(y)=y=1ki=1n[[y(i)=y]]logq(y)=y=1klogq(y)i=1n[[y(i)=y]]=y=1k(logq(y))×count(y)
类似地, 右边的项可以写为:
∑ i = 1 n ∑ j = 1 d q j ( x j ( i ) ∣ y ( i ) ) = ∑ j = 1 d ∑ y ∈ Y ∑ x ∈ { − 1 , + 1 } c o u n t j ( x ∣ y ) log ⁡ q j ( x ∣ y ) \sum^n_{i=1}\sum^d_{j=1}q_j(x_j^{(i)}|y^{(i)}) = \sum_{j=1}^d\sum_{y\in \mathcal{Y}}\sum_{x\in \{ -1, +1\}}count_j(x|y)\log q_j(x|y) i=1nj=1dqj(xj(i)y(i))=j=1dyYx{ 1,+1}countj(xy)logqj(xy)
而且我们知道右边的项并不依赖于参数 q ( y ) q(y) q(y), 根据上文所述的多项式分布的最优参数估计, 我们分别最大化左右两项得到最优参数为:
q ( y ) = c o u n t ( y ) ∑ y = 1 k c o u n t ( y ) = c o u n t ( y ) n q j ( x ∣ y ) = c o u n t j ( x ∣ y ) ∑ x ∈ { − 1 , + 1 } c o u n t j ( x ∣ y ) = c o u n t j ( x ∣ y ) c o u n t ( y ) q(y)=\frac{count(y)}{\sum^k_{y=1}count(y)}=\frac{count(y)}{n} \\ q_j(x|y)=\frac{count_j(x|y)}{\sum_{x\in\{-1, +1\}}count_j(x|y)}=\frac{count_j(x|y)}{count(y)} q(y)=y=1kcount(y)count(y)=ncount(y)qj(xy)=x{ 1,+1}countj(xy)countj(xy)=count(y)countj(xy)
至此, 证明完毕.

你可能感兴趣的:(nlp,朴素贝叶斯,naive,bayes)