《统计学习方法》朴素贝叶斯部分读书笔记

0. 铺垫

先来回顾一些基础的概率知识:

  • 联合概率分布

    联合概率分布就是涉及两个随机变量的概率分布,比如打靶时命中坐标 $(x,y)$

    以二维离散型随机向量为例:

    • 联合概率分布可用函数形式 $P{X=x_i,Y=y_i}=p_{ij}$ 来表示

    • 样本对于某一个维度的概率分布称为联合分布的边缘分布

      $P{X=x_i}=\sum_jP{X=x_i,Y=y_i}=\sum_j p_{ij}=p_i$

      $P{Y=y_i}=\sum_jP{X=x_i,Y=y_i}=\sum_j p_{ij}=p_j$

  • 条件概率

    $P(A|B)$:在 $B$ 发生的条件下,发生 $A$ 的概率

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

  • 联合概率和条件概率的关系

    $P(A,B)=P(A|B)*P(B)=P(B|A)*P(A)$


1. 朴素贝叶斯法的学习与分类

设输入空间 $X \in R^n$ 为 n 维向量的集合,输出空间为类标记集合 $Y={c_1,c_2,…,c_K}$,训练数据集 $T={(x_1,y_1),(x_2,y_2),…,(x_N,y_N)}$。

朴素贝叶斯法通过训练数据集学习联合概率分布 $P(X,Y)$

  • 先验概率分布:$P(Y=c_k),\ \ k=1,2,…,K$
  • 条件概率分布:$P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},x^{(2)},..,x^{(n)}|Y=c_k),\ \ k=1,2,..,K$

朴素贝叶斯法对条件分布概率做了条件独立性的假设。(这是一个强假设!!!)

朴素贝叶斯法分类时,对于给定输入 $x$,通过学习到的模型计算后验概率分布 $P(Y=c_k|X=x)$,将其后验概率最大的 类作为 $x$ 的类输出

1.1 后验概率计算

后验概率的计算根据贝叶斯定理进行:

$P(Y=c_k|X=x)$ $\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $ (使用条件概率公式)

$=\frac{P(X=x|Y=C_k)*P(Y=C_k)}{P(X=x)}$ $\ \ \ \ \ \ \ \ \ $ (分子不变,分母用联合概率公式展开)

$=\frac{P(X=x|Y=C_K)*P(Y=C_k)}{\sum_kP(X=x,Y=C_k)}$ $\ \ \ \ \ \ \ \ $ (将 $P(X=x,Y=C_k)$ 联合概率用条件概率表示)

$=\frac{P(X=x|Y=c_k)*P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}$ $\ \ \ \ \ \ \ \ $ (加入前提条件:各特征为相互独立分布)

$=\frac{P(Y=C_k) \prod_j P(X^{(j)}=x^{(j)}|Y=C_k)}{\sum_kP(Y=C_k) \prod_j P(X^{(j)}=x^{(j)}|Y=C_k)}$

此处,对最后一步做一些解释:对于分子 $P(X=x|Y=c_k)$
可以写成 $P(X_1=x_1,X_2=x_2,…,X_k=x_k|Y=c_k)$ 基于前提条件“各特征为相互独立分布”,
可以得到 $P(X_1=x_1|Y=c_k)*P(X_2=x_2|Y=c_k)…P(X_k=x_k|Y=c_k)$,
换一种写法就是 $\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)$;
分母的变换也是同理。

至此我们得到了朴素贝叶斯分类的基本公式。

补充介绍:先验概率与后验概率

  • 先验概率(prior probability):指根据以往经验和分析。在实验或采样前就可以得到的概率。
  • 后验概率(posterior probability):指某件事已经发生,想要计算这件事发生的原因是由某个因素引起的概率。

举一个简单的例子,喜羊羊喜欢睡觉。通过对喜羊羊每天早上的统计,得到的喜羊羊起晚了的事件发生的概率 $P(起晚了)$ 就是先验概率;但是已知某一天喜羊羊早上上课迟到了(已知结果)反推原因 $P(起晚了|迟到)$ 就是后验概率。

1.2 朴素贝叶斯分类器

于是,朴素贝叶斯分类器可以表示为:$y=f(x)=arg \ max_{c_k} \frac{P(Y=c_k) \prod_j P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_k P(Y=c_k) \prod_j P(X^{(j)}=x^{(j)})|Y=c_k)}$

在上式中,分母对于所有 $c_k$ 都是相同的

所以 $y=arg \ max_{c_k} P(Y=c_k) \prod_j P(X^{(j)}=x^{(j)}|Y=c_k)$


2. 极大似然估计

在朴素贝叶斯法中,学习意味着求 $P(Y=c_k)$ 和 $P(X^{(j)}=x^{(j)}|Y=c_k)$,可以用极大似然估计法来进行计算

补充说明:接下来要用到的$I(x)$ 为指示函数,即当条件 $x$ 为真时,函数值为 1;反之函数值为 0。

先验概率 $P(Y=c_k)=\frac{\sum_{i=1}^N I(y_i=c_k)}{N}$,$k=1,2,…,K$ (1)

设第 $j$ 个特征 $x^{(j)}$ 可能取值的集合为 ${a_{j1},a_{j2},…,a_{jS_j},}$,

条件概率 $P(X^{(j)}=a_{jl}|Y=c_k)$ 的极大似然估计是 $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)}$ (2)

其中,$x_i^{(j)}$ 是第 $i$ 个样本的第 $j$ 个特征;$a_{jl}$ 是第 $j$ 个特征可能取的第 $l$ 个值;$I$ 为指示函数

【如果读者对理解式(2)存在一定的困难,可以再次理解一遍式(1),两者本质一致】


3. 贝叶斯估计

上一章的极大似然估计存在一个问题,就是分母可能为 0。具体地来说,分母 $\sum_{i=1}^N I(y_i=c_k)$ 在每一个 $y_i=c_k$ 都不成立的时候,值为 0。

因此,引入了贝叶斯估计。具体地,条件概率的贝叶斯估计式:$P_{\lambda}(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}I(y_i=c_k)+S_j\lambda}$

其中 $\lambda$ 为一个给定正数,$S_j$ 为 $x_j$ 可取特征数目。当 $\lambda=0$ 时为极大似然估计;常取 $\lambda=1$ 为拉普拉斯平滑

对比极大似然估计,贝叶斯估计在分子和分母上分别增加了 $\lambda$ 和 $S_j \lambda$。

同理,先验概率的贝叶斯估计是 $P_{\lambda}(Y=c_k)=\frac{\sum_{i=1}^N I(y_i=c_k)+\lambda}{N+K\lambda}$


4. 总结 · 朴素贝叶斯算法流程

  1. 计算先验概率以及条件概率(此处以贝叶斯估计为例)

    先验概率:$P_{\lambda}(Y=c_k)=\frac{\sum_{i=1}^N I(y_i=c_k)+\lambda}{N+K\lambda}$

    条件概率:$P_{\lambda}(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}I(y_i=c_k)+S_j\lambda}$

  2. 对于给定的实例 $x=(x^{(1)},x^{(2)},…,x^{(N)})^T$,计算条件概率 
    $P(Y=c_k|X=x)=prod_j P(X^{(j)}=x^{(j)}|Y=c_k)$

    (表达式的推导见 1.1)

  3. 确定实例 $x$ 的类:$y=arg \ max_{c_k} P(Y=c_k) \prod_j P(X^{(j)}=x^{(j)}|Y=c_k)$

    (表达式的推导见 1.2)