掘金笔记:朴素贝叶斯模型

瘦欲@ 提交于 2019-12-02 02:12:44

# 朴素贝叶斯模型

## 1 - 基础定理与定义

- 条件概率公式:
  $$
  P(A|B)=\dfrac{P(AB)}{P(B)}
  $$

- 全概率公式:
  $$
  P(A)=\sum_{j=1}^N P(AB_i)=\sum_{j=1}^N P(B_i)P(A|B_i)
  $$

- 贝叶斯公式:
  $$
  P(B_i|A)=\dfrac{P(AB_i)}{P(A)}=\dfrac{P(B_i)P(A|B_i)}{\sum_{j=1}^N P(B_i)P(A|B_i)}
  $$

- 概率加和规则:
  $$
  P\left(X=x_i\right)=\sum_{j=1}^N P\left(X=x_i,Y=y_j\right)
  $$

  $$
  P\left(X\right)=\sum_Y P\left(X,Y\right)
  $$

- 概率乘积规则:
  $$
  P\left(X=x_i,Y=y_j\right)=P\left(Y=y_j|X=x_i\right)P\left(X=x_i\right)
  $$

  $$
  P\left(X,Y\right)=P\left(Y|X\right)P\left(X\right)
  $$

- 生成学习方法:

  利用训练数据学习$P(X|Y)$和$P(Y)$的估计,得到联合概率分布:
  $$
  P(X,Y)=P(Y)P(X|Y)
  $$
  然后求得后验概率分布$P(Y|X)$. 具体概率估计方法可以是极大似然估计或者贝叶斯估计。

## 2 - 模型简述

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

对于给定的训练数据集,首先基于条件独立假设,学习输入输出的联合概率分布;然后基于此模型,对给定的输入$x$,利用贝叶斯定理,求出后验概率最大的输出类$y$。

后验概率最大等价于$0-1$损失函数时的期望风险最小化。

作为典型的生成学习方法,朴素贝叶斯实现简单,学习和预测效率都很高,是一种常用模型。

以下主要介绍经典的**多项式贝叶斯分类器**。

## 3 - 模型假设

1. 训练集$P(X,Y)$独立同分布产生

2. 条件独立性假设。用于分类的特征,在类确定的条件下独立,即:
   $$
   \begin{aligned} P\left(X=x | Y=c_{k}\right) &=P\left(X^{(1)}=x^{(1)}, \cdots, X^{(n)}=x^{(n)} | Y=c_{k}\right) \\ &=\prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right) \end{aligned}
   $$
   这是一个较强的假设。在对性能作出一些妥协的条件下,此假设使模型包含条件概率的数量大为减少,使模型的学习与预测大为简化,从而高效而易于实现。

   条件独立性假设也可视为最简单的有向概率图模型。

## 4 - 模型主要策略

1. 极大似然估计
2. 最大化后验概率

## 5 - 模型输入

训练集$T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\}$,$x_i\in\mathcal{X} \subseteq \mathbf{R}^{n}$,$i=1,2,\dots,N$,$y\in\mathcal{Y}=\{c_1,c_2,\dots,c_k\}$,$|\mathcal{Y}|=K$;$x_{i}=\left(x_{i}^{(1)}, x_{i}^{(2)}, \cdots, x_{i}^{(n)}\right)^{\mathrm{T}}$,$x_{i}^{\left(j\right)}$是第$i$个样本的第$j$个特征,$j=1,2,\dots,n$,$x_{i}^{\left(j\right)}\in\{a_{j1},a_{j2},\dots,a_{jS_j}\}$,其中$a_{jl}$是第$j$个特征的第$l$个取值,$l=1,2,\dots,S_j$.

另有实例$x$.

## 6 - 模型推导

由假设可得
$$
P\left(X=x, Y=c_{k}\right)=P\left(X=x | Y=c_{k}\right) P\left(Y=c_{k}\right)=P\left(Y=c_{k} | X=x\right) P(X=x)
$$
取后两个等式,处理变换得:
$$
\begin{aligned} P\left(Y=c_{k} | X=x\right) &=\frac{P\left(X=x | Y=c_{k}\right) P\left(Y=c_{k}\right)}{P(X=x)} \\ &=\frac{P\left(X=x | Y=c_{k}\right) P\left(Y=c_{k}\right)}{\sum_{k} P\left(X=x, Y=c_{k}\right)} \\ &=\frac{P\left(X=x| Y=c_{k}\right) P\left(Y=c_{k}\right)}{\sum_{k} P\left(X=x | Y=c_{k}\right) P\left(Y=c_{k}\right)} \\ &=\frac{P\left(Y=c_{k}\right) \prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right)}{\sum_{k} P\left(Y=c_{k}\right) \prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right)} \end{aligned}
$$
以上第二个等号使用了概率加和法则,第三个等号使用了条件概率公式,后两个等号使用了条件独立性假设。

朴素贝叶斯可用直接用分子表示为:
$$
y=f(\mathbf{x})=\arg \max _{c_{k}} \frac{P\left(Y=c_{k}\right) \prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right)}{\sum_{k} P\left(Y=c_{k}\right) \prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right)}
$$
注意到在公式$(10)$中,分母的值对所有的$c_k$都相等,因此可舍去分母,得到:
$$
y=\arg \max _{c_k} P\left(Y=c_{k}\right) \prod_{j} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right)
$$

## 7 - 参数估计

1. 极大似然估计

- 先验概率:
  $$
  P\left(Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)}{N}, \quad k=1,2, \cdots, K
  $$

- 条件概率:
  $$
  \begin{array}{l}{P\left(X^{(j)}=a_{j t} | Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(x_{i}^{(j)}=a_{j l}, y_{i}=c_{k}\right)}{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)}} \\ {j=1,2, \cdots, n ; l=1,2, \cdots, S_{j}: k=1,2, \cdots, K}\end{array}
  $$

其中函数$I$为指示函数。

2. 贝叶斯估计

如果某个属性值在训练集中没有与某个类同时出现过,则使用公式$(10)$进行概率估计则会出现$0$,并导致连乘氏计算的概率值也为$0$。为防以上情况出现,引入贝叶斯估计如下。

- 先验概率:
  $$
  P_{\lambda}\left(X^{(j)}=a_{j l} | Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(x_{i}^{(j)}=a_{j l}, y_{i}=c_{k}\right)+\lambda}{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)+S_{j} \lambda}
  $$
  式中$\lambda \geqslant 0$.

- 条件概率:
  $$
  P_{\lambda}\left(Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)+\lambda}{N+K \lambda}
  $$

当$\lambda=0$时,即等价为极大似然估计。

常用$\lambda=1$,称为拉普拉斯平滑。

考虑公式$(14)$,对于任何$l=1,2, \cdots, S_{j}, \quad k=1,2, \cdots, K$,都有
$$
\begin{array}{l}{P_{\lambda}\left(X^{(j)}=a_{j l} | Y=c_{k}\right)>0} \\ {\sum_{l=1}^{s_{j}} P\left(X^{(j)}=a_{j l} | Y=c_{k}\right)=1}\end{array}
$$
可见确实是一种分布。公式$(15)$同理。拉普拉斯平滑的实质是假设属性值与类别是均匀分布,这是额外引入的关于数据先验。它修正了训练集样本不充分而导致概率值为$0$的问题,且在训练集变大时,修正引入的先验影响也会逐渐变得可以忽略。

## 8 - 算法流程(极大似然估计)

输入:见5. 另有实例$x$.

输出:实例$x$的分类.

1. 计算先验概率与条件概率:

- 先验概率(共计$K$个式子):
  $$
  P\left(Y=c_{k}\right)=P\left(Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)}{N}
  $$

- 条件概率(共计$k\sum_{j=1}^{n}S_j$个式子):
  $$
  \begin{array}{l}{P\left(X^{(j)}=a_{j t} | Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(x_{i}^{(j)}=a_{j l}, y_{i}=c_{k}\right)}{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)}} \\ {j=1,2, \cdots, n ; l=1,2, \cdots, S_{j}: k=1,2, \cdots, K}\end{array}
  $$

2. 对于给定实例$x=\left(x_{i}^{(1)}, x_{i}^{(2)}, \cdots, x_{i}^{(n)}\right)^{\mathrm{T}}$,计算:
   $$
   P\left(Y=c_{k}\right) \prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right), \quad k=1,2, \cdots, K
   $$

3. 确定实例$x$的分类:
   $$
   y=\arg \max _{a} P\left(Y=c_{k}\right) \prod_{j=1}^{n} P\left(X^{(j)}=x^{(j)} | Y=c_{k}\right)
   $$

## 9 - 高斯贝叶斯分类器

以上是基础的**多项式贝叶斯分类器**,用于自变量均为离散值的情况。

如果数据集中的自变量均为连续的数值型数据,则选择本章的**高斯贝叶斯分类器**。

假设自变量特征$x^{\left(j\right)}$服从高斯分布,即:
$$
P\left(x^{\left(j\right)} | c_{k}\right) \sim \mathcal{N}\left(\mu_{j,k}, \sigma_{j,k}^{2}\right)
$$
其中$\mu_{j,k}$和$\sigma_{j,k}$为训练集中特征$x^{\left(j\right)}$属于类别$c_{k}$的均值和标准差,则条件概率可以表示为:
$$
P\left(x^{\left(j\right)} | Y=c_k\right)=\frac{1}{\sqrt{2 \pi} \sigma_{j,k}} \exp \left(-\frac{\left(x^{\left(j\right)}-\mu_{j,k}\right)^{2}}{2 \sigma_{j,k}^{2}}\right)
$$
其他步骤与思想不变,参考多项式贝叶斯分类器即可。

## 10 - 伯努利贝叶斯分类器

在某些任务,如文本挖掘中,特征$x^{\left(j\right)}$均为$0-1$二元值,此时优选伯努利贝叶斯分类器。

假设特征$x^{\left(j\right)}$的条件概率为满足伯努利分布。

设特征$x^{\left(j\right)}\in\{0,1\}$,则记:
$$
p=P\left(X^{(j)}=1| Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(x_{i}^{(j)}=1, Y=c_{k}\right)+\lambda}{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)+K \lambda}
$$
因此可将条件概率写为:
$$
P(X^{\left(j\right)}=x^{\left(j\right)}|Y=c_k)=p \cdot x^{\left(j\right)}+(1-p)\cdot(1-x^{\left(j\right)})
$$
其他步骤与思想不变,参考多项式贝叶斯分类器即可。

## 11 - 番外:为何没有出现损失函数?

以下证明期望风险最小化等价于后验概率最大化。

设选择$0-1$损失函数:
$$
L(Y, f(X))=\left\{\begin{array}{ll}{1,} & {Y \neq f(X)} \\ {0,} & {Y=f(X)}\end{array}\right.
$$
式中$f(X)$为分类决策函数。此时期望风险为:
$$
R_{\mathrm{exp}}(f)=E[L(Y, f(X))]
$$
期望是对联合分布$P(X,Y)$取的,因此再取条件期望:
$$
R_{\mathrm{exp}}(f)=E_{X} \sum_{k=1}^{K}\left[L\left(c_{k}, f(X)\right)\right] P\left(c_{k} | X\right)
$$
为使期望风险最小化,需要对$X=x$逐个极小化,即:
$$
\begin{aligned} f(x) &=\arg \min _{y \in \mathcal{Y}} \sum_{k=1}^{K} L\left(c_{k}, y\right) P\left(c_{k} | X=x\right) \\ &=\arg \min _{y \in \mathcal{Y}} \sum_{k=1}^{K} P\left(y \neq c_{k} | X=x\right) \\ &=\arg \min _{y \in \mathcal{Y}}\left(1-P\left(y=c_{k} | X=x\right)\right) \\ &=\arg \max _{y \in \mathcal{Y}} P\left(y=c_{k} | X=x\right) \end{aligned}
$$
注意从第一行到第二个行,对于损失函数$L(c_k,y)$,如果$y=c_k$,则损失函数$L(c_k,y)=0$,后一项也同时失效,只有当$y\neq c_k$时,损失函数$L(c_k,y)=1$,后一项才有效,因此后一项也可以写成第二行的形式以简化算式。从第二行到第三行也容易理解。从第三行到第四行可以注意到$\arg\min$变成了$\arg\max$,已经从损失函数最大小化转化为后验概率最大化。可知期望风险最小化等价于朴素贝叶斯采用的后验概率最大化:
$$
f(x)=\arg \max _{c_{k}} P\left(Y=c_{k} | X=x\right)
$$

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!