首先重述一下朴素贝叶斯模型(Naive Bayes model)的定义, 该模型包含 k k k个特定的标签, 一个 d d d维向量用于表示d个属性特征. 其包含以下参数:
则对于任意的 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=1∏dqj(xj∣y)
我们需要在训练集中进行参数估计,一旦参数确定,对于测试案例 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=1∏dqj(xj∣y))
利用最大似然估计, 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)=n∑i=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(x∣y)可以写成:
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(x∣y)=∑i=1n[[y(i)=y]]∑i=1n[[y(i)=y and xj(i)=x]]=count(y)countj(x∣y)
其中:
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(x∣y)=i=1∑n[[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(x∣y).
下面给出上面估计方式的具体证明, 首先给出多项式分布的最大似然分布. 定义在有限集 Y \mathcal{Y} Y的分布表示成一个向量 q q q, 其中每一项 q y , y ∈ Y q_y, y\in \mathcal{Y} qy,y∈Y表示看见元素 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={ q∈R∣Y∣:∀y∈Y,qy≥0;y∈Y∑qy=1}
除此之外,假定存在一个向量 c c c, 其中每一项 c y , y ∈ Y c_y, y \in \mathcal{Y} cy,y∈Y我们假定 c y ≥ 0 c_y\ge 0 cy≥0, 很多情况下 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∗=argq∈PYmaxy∈Y∑cylogqy
因此 q ∗ q^* q∗为使得上式最大化的最优分布. 考虑到函数 ∑ y ∈ Y c y log q y \sum_{y\in \mathcal{Y}}c_y\log q_y ∑y∈Ycylogqy满足约束 q y ≥ 0 a n d ∑ y ∈ Y q y = 1 q_y\ge 0 \ and \ \sum_{y \in \mathcal{Y}}q_y=1 qy≥0 and ∑y∈Yqy=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)=y∈Y∑cylogqy−λ⎝⎛y∈Y∑qy−1⎠⎞
则最优的 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 y∈Y∑qy=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=∑y∈Ycycy
对于给定的训练集 ( 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=1∑nlogp(x(x),y(i))=i=1∑nlog(q(y(i))j=1∏dqj(xj(i)∣y(i)))=i=1∑nlogq(y(i))+i=1∑nlog(j=1∏dqj(xj(i)∣y(i)))=i=1∑nlogq(y(i))+i=1∑nj=1∑dqj(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=1∑nlogq(y(i))+i=1∑nj=1∑dqj(xj(i)∣y(i))=y∈Y∑count(y)logq(y)+j=1∑dy∈Y∑x∈{ −1,+1}∑countj(x∣y)logqj(x∣y)
理由如下, 左边的项等于:
∑ 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=1∑nlogq(y(i))=i=1∑ny=1∑k[[y(i)=y]]logq(y)=y=1∑ki=1∑n[[y(i)=y]]logq(y)=y=1∑klogq(y)i=1∑n[[y(i)=y]]=y=1∑k(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=1∑nj=1∑dqj(xj(i)∣y(i))=j=1∑dy∈Y∑x∈{ −1,+1}∑countj(x∣y)logqj(x∣y)
而且我们知道右边的项并不依赖于参数 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(x∣y)=∑x∈{ −1,+1}countj(x∣y)countj(x∣y)=count(y)countj(x∣y)
至此, 证明完毕.