前言

  前面一段时间整理了很多关于树模型的文章,而接下来的篇章,主要是介绍关于概率模型的知识。
  在这章中,将会出现各种各样新的名词,例如朴素贝叶斯、贝叶斯估计、极大似然估计等等,这些都是概率模型最基本的知识点,也是重中之重的基础部分。

深入理解朴素贝叶斯

  将朴素贝叶斯拆解为两个不相关的名词:朴素  贝叶斯。为了更好的理解这两个概念,我们先来了解一些概率论的基础知识。

1.贝叶斯定理

  朴素贝叶斯是基于贝叶斯定理提出的,那么贝叶斯定理又是由什么组成的呢?
  为了解决这个问题,我们先了解几个专业的术语
独立事件: 考虑两个事件 A  B 。当事件 A发生的概率不依赖于事件 B 发生时,则事件 A 和事件 B 是独立的事件。例如,我们有两个硬币,同时掷这两个硬币,那么两枚硬币的正面概率都是0.5,而其中任何一个硬币出现正反情况时都不会影响另外一个硬币的结果,因此,该事件是独立事件。与独立事件对立的事件是从属事件,最简单的例子就是从袋子中摸球不放回,下一次摸球出现的结果和上一次的结果有关,这种叫做从属事件。
边际概率: 边际概率非常容易理解,就是一个事件 A 发生的概率,不与任何参数有关,记为 P ( A )
联合概率: 联合概率是描述不同事件 A 和事件 B 或者更多的事件同时发生的概率, P ( A , B )或者 P ( B , A ) 其中 P ( A , B ) = P ( B , A )
条件概率: 条件概率顾名思义就是在某种条件下发生事件的概率。如果事件 A 是在事件 B 的基础上发生的,那么可以记为 P ( A ∣ B )即事件 B 发生的情况下事件 A发生的概率。
若事件 B 能且只能与两两互不相容的事件 A 1 , A 2 , ⋯   , A n , ⋯ 之一同时发生,即:

上面的式子就是贝叶斯公式,这个公式非常重要,是理解朴素贝叶斯最关键的一步。

2.朴素贝叶斯

  朴素贝叶斯法是基于贝叶斯定理(就是我们前面一节介绍的贝叶斯定理)与特征条件独立假设的分类方法。对于给定的数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入 x,利用贝叶斯定理求出后验概率最大的输出 y 。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种很常用的方法。
  首先定义,训练样本集为: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } P ( X , Y ) 独立同分布产生。朴素贝叶斯的学习第一步就是学习样本集的联合概率分布 P ( X , Y ) 对于什么是联合概率分布,如果你不理解,你就可以立即欸为学习一颗颗决策树,后面对测试数据进行预测时需要用到联合概率分布。
先验概率分布如下:
P ( Y = c k ) ,      k = 1 , 2 , ⋯   , K P(Y=c_k),
条件概率分布如下:
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , ⋯   , X ( n ) = x ( n ) ∣ Y = c k ) ,        k = 1 , 2 , ⋯   
于是学习得到联合概率分布 P ( X , Y )
  在前面一节我们知道,联合概率与条件概率和边际概率之间的关系可以描述为下面的式子:
P ( B ∣ A ) = P ( B , A )
于是得到 P ( B , A ) = P ( B ∣ A ) ⋅ P ( A ) ,对应到上面先验概率就是 P ( A ) ,条件概率就是 P ( B ∣ A )
  下面对上述定义的条件概率进行细致的分析,如果真的和上面形容的那样,那么该模型的参数就太多了。这是因为,当特征 x j 的取值有很多个时,例如可以取 S j j个(这里讨论的特征是离散特征,连续特征以后再分析)。   Y的取值有 K 种,那么该模型的参数就有 K ∏ j = 1 n ,学习困难太大了。
那么有什么办法能够简化上述的条件概率呢?
  那就是朴素贝叶斯另一个关键的地方:朴素。朴素有天真、普通的意思,在朴素贝叶斯分类器中,朴素最大的作用就是对条件概率分布作了条件独立性的假设。当然在真实情况下,各个特征之间不可能是独立的,而在朴素贝叶斯分类器中却做了这么强的假设。有的人肯定会说,朴素贝叶斯的方法存在很大漏洞!分类效果肯定不好,恰恰相反,朴素贝叶斯最神奇的地方就在于其大大简化了模型且分类效果出奇的好!名称朴素效果可一点不“朴素”
  基于此,我们可以借助条件独立性的假设来对条件概率分布做简化,简化如下:

P(X=x|Y=ck)=P(X(1)=x(1),,X(n)=x(n)|Y=ck)=j=1nP(X(j)=x(j)|Y=ck)

P(X=xY=ck)=P(X(1)=x(1),
这里是朴素贝叶斯最重要的步骤,条件独立假设使朴素贝叶斯算法变得简单,但有的时候会损失一定的分类准确率毕竟天下没有免费的午餐。
  好,到这里朴素贝叶斯需要从数据中学习的东西全部介绍完了,那么肯定有人就会问,学习这些概率有什么用呢?
  朴素贝叶斯模型就是由条件概率分布和先验概率分布组成的,就好比集成树模型是由一颗颗学习好的树组成的。
  对于一个新输入的测试集 x ,我们需要通过学习成功的朴素贝叶斯模型计算出后验概率分布 P ( Y = c k ∣ X = x ) ,将后验概率最大的类作为 x 的类输出。(几个重要的点 。1、这里的 x表示的是一个向量;2、后验概率分布指的是一个概率分布,也就是很多个概率组成的数据。3、输出的结果是比较得出的,在所有输出的概率中选择最大的概率类别)
后验概率分布与贝叶斯定理
  

3.朴素贝叶斯的参数估计方法

  上面一小节,我们详细介绍了朴素贝叶斯是如何推导出的,但是并没有介绍联合概率分布是怎么计算的。在这一节,我们通过极大似然估计给出计算联合概率分布的方法。
由于联合概率分布是由先验概率分布和条件概率分布计算得到,那么先验概率分布的极大似然估计是:

4.实例分析

  学习任何算法都离不开实例分析,本节的实例参考李航老师的《统计学习方法》中的例题4.1,具体的我用图片形式放在下面了
在这里插入图片描述
在这里插入图片描述
这个例题非常简单,但是非常有意义,训练集中共有三个特征,且三个特征都是离散变量,取值的种类都不是很多。

3.贝叶斯估计

  贝叶斯估计,从名字上大致猜到,这是一种估计参数的方法,前面了解到了极大似然估计法,那在这里为什么又要学习一个贝叶斯估计呢?那肯定是存在极大似然估计不能解决的情况,所以需要引入贝叶斯估计。
  那么什么情况是极大似然估计解决不了,而必须用到贝叶斯估计呢?我们先来看一下极大似然估计的式子,就拿条件概率的估计式举例:

总结

  到这里,关于贝叶斯估计基本知识就结束了,但是并没有完全结束,因为我们还没有讨论当特征取值为连续值时的概率分布又是如何。这个问题等以后在探讨。其实贝叶斯估计的内容完全不止这么一点,更多的推导内容感兴趣可以自己百度。
  写完这篇文章,我对贝叶斯分类器的工作原理大致有了了解,其实就是一个概率模型,首先针对训练集学习一个联合概率分布,然后对于每一个输入 x ,求其在这个模型下的后验概率分布,基于后验概率分布找到最优解。