本文最后更新于 2018-11-22【1981 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

本文是在学习李航老师的《统计学习方法》时做的学习笔记系列的第四篇:朴素贝叶斯法

朴素贝叶斯法是基于贝叶斯定理与条件独立假设的分类方法。对给定的训练数据集,首先基于
特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x ,利用
贝叶斯定理求出后验概率最大的输出 y 。此方法实现简单,学习与预测的效率都很高。

学习与分类

基本方法

  • 训练集:$$ T=\{(x_1,y_1),...,(x_N,y_N)\} $$,由 $$x$$ 和 $$y$$ 的联合分布概率 $$P(X,Y)$$ 独立同分布产生
  • 朴素贝叶斯通过训练数据集学习联合概率分布$$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^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k)$$
  • 条件独立性假设(牺牲分类准确性):
    $$ \begin{aligned}
    P(X=x|Y=c_k)&=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k)
    \& =\prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)
    \end{aligned} $$
  • 贝叶斯定理:
    $$P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}$$
  • 代入:

    $$ P(Y=c_k|X=x) = \frac{ P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum\limits_k P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)} $$

  • 贝叶斯分类器:

    $$ y = f(x) =arg \max\limits_{c_k}\frac{ P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum\limits_k P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)} $$

后验概率最大化

朴素贝叶斯法将实例分到后验概率最大的类中,等价于期望风险最小化,其中,损失函数为 0-1 损失。

参数估计

极大似然估计

先验概率 $$P(Y=c_k)$$ 的极大似然估计是:

$$ P(Y=c_k) = \frac{\sum\limits_{i=1}^NI(y_i=c_k)}{N} $$

条件概率的极大似然估计是:

$$ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}
{\sum\limits_{i=1}^NI(y_i=c_k)} $$

朴素贝叶斯算法

输入:

  • 训练数据集:$$ T= \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} $$,其中:

    • $$x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T $$
    • $$ x_i^{(j)}$$ 是第 $$i$$ 个样本的第 $$j$$ 个特征:$$ x_i^{(j)} \in \{a_{j1}, a_{j2},...,a_{jS_i}\} $$
    • $$a_{jl}$$ 是第 $$j$$ 个特征可能取的的第 $$l$$ 个值
    • $$y_i \in \{c_1,c_2,...,c_k\}$$
  • 实例 $$x$$

输出:$$x$$ 的分类

  1. 计算先验概率 $$P(Y=c_k)$$ 及条件概率 $$P(X^{(j)}=a_{jl}|Y=c_k)$$
  2. 对给定的实例 $$x$$ ,计算 $$P(Y=c_k)\prod\limits_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)$$
  3. 确定 $$x$$ 的类别

贝叶斯估计

用极大似然估计可能会出现所要估计的概率值为0的情况,会影响后验概率的结果,产生偏差,解决
办法是采用贝叶斯估计。

先验概率 $$P(Y=c_k)$$ 的贝叶斯估计是:

$$ P(Y=c_k) = \frac{\sum\limits_{i=1}^N{I(y_i=c_k)+\lambda}}{N+K\lambda} $$

条件概率的贝叶斯估计是:

$$ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}
{\sum\limits_{i=1}^NI(y_i=c_k)+S_j\lambda} $$

其中$$\lambda \ge 0$$,等价于在随机变量各个取值的频数上赋予一个正数$$\lambda \gt 0$$。

当$$\lambda = 0$$ 时,即极大似然估计;常取$$\lambda = 1$$,称为拉普拉斯平滑。

参考

  • 李航,统计学习方法,清华大学出版社
文章目录


推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:《统计学习方法》笔记 —— 朴素贝叶斯法 - https://www.imtqy.com/statistical-learning-method-4.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!