【分类算法】朴素贝叶斯(Naive Bayes)

0 - 算法

  给定如下数据集

$$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$

假设$X$有$J$维特征,且各维特征是独立分布的,$Y$有$K$种取值。则对于输入$x$,朴素贝叶斯算法的输出为

$$y=arg\max_{c_k}P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k),j=1,\cdots,J,k=1,\cdots,K,$$

其中先验概率$P(Y=c_k)$和条件概率$P(X^{(j)}=x^{(j)}|Y=c_k)$的极大似然估计在下一节给出。

1 - 推导

  朴素贝叶斯的基本公式为

$$P(B|A)=\frac{P(A|B)P(B)}{P(A)},$$

  因此,对于输入数据$x$,预测类别$c_k$的概率可以表示为

$$\begin{align}P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)}\end{align}$$

  且有,

$$\begin{align}P(X=x)=P(Y=c_k)\sum_{k}P(X=x|Y=c_k)\end{align}$$

  根据特征之间独立分布,又有

$$\begin{align}P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},\cdots,X^{(J)}=x^{(J)}|Y=c_k)=\prod_{j=1}^JP(X^{(j)}=x^{(j)}|Y=c_k)\end{align}$$

  将式$(3)$代入式$(2)$可得

$$\begin{align}P(X=x)=\sum_{k}P(Y=c_k)\prod_{j=1}^JP(X^{(j)}=x^{(j)}|Y=c_k)\end{align}$$

  将式$(3)(4)$代入式$(1)$可得

$$\begin{align}P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod_{j=1}^JP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j=1}^JP(X^{(j)}=x^{(j)}|Y=c_k)}\end{align}$$

  注意到,对于所有类别$Y=c_k$,其分母均是一样的,因此最终算法可以将分母去掉而不影响预测概率的相对大小。朴素贝叶斯算法可写成如下形式

$$y=arg\max_{c_k}P(Y=c_k|X=x)=arg\max_{c_k}P(Y=c_k)\prod_{j=1}^JP(X^{(j)}=x^{(j)}|Y=c_k),$$

由上式可知,朴素贝叶斯算法只需要对$P(Y=c_k)$和$P(X^{(j)}=x^{(j)}|Y=c_k)$进行参数估计(极大似然估计)即可。

  先验概率$P(Y=c_k)$的极大似然估计可以表示为

$$P(Y=c_k)=\frac{\sum_{j=1}^N I(y_i=c_k)}{N},\ k=1,2,\cdots,K,$$

  条件概率$P(X^{(j)}=x^{(j)}|Y=c_k)$的极大似然估计,假设第$j$个特征$x^{(j)}$的取值集合为$\{a_{j1},a_{j2},\cdots,a_{jS_j}\}$,则有

$$P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^N I(y_i=c_k)},\ j=1,2,\cdots,J;l=1,2,\cdots,S_j;k=1,2,\cdots,K.$$

2 - 参考资料

《统计学习方法》,李航

posted @ 2019-10-29 17:09  CZiFan  阅读(553)  评论(0编辑  收藏  举报