美文网首页机器学习
朴素贝叶斯公式

朴素贝叶斯公式

作者: Paycation | 来源:发表于2018-09-14 11:25 被阅读220次

条件概率公式

请允许我引入条件概率公式作为预备知识。试想有一个矩形,一个球可以随机地掉到该矩形的任意位置。那么球掉上去的概率是 1。现在我给这个矩形划出一块区域 A,记球掉进 A 的概率是 P(A),显然 P(A) 取决于 A 的面积大小。再画一块区域 B,对应概率 P(B)。如果要算球掉入 A 和 B 相交区域的概率,那么就是这两个集合的交集:P(AB)。

示意图

那么请问,如果已知掉入了B,但是不知道掉到具体哪个位置,问恰好掉到 A 和 B相交处的概率?用符号 P(A|B) 表示这个概率,那么有:
P(A|B) = \dfrac{P(AB)}{P(B)}
这就是条件概率公式。反之,已知掉入 A,求恰好掉入A、B相交区域的概率也差不多,只需要换个字母。

全概率公式

假设有一个样本空间 \Omega被分成事件B_1, B_2 ... B_n,也就是下图中的扇形,它们之间两两不相交,它们的交集记为B。阴影部分表示事件A。其含义是,各个 B 的子事件共同决定了 A 事件。P(AB_1) 表示 B_1 事件和 A 事件同时发生,也就是其中一块阴影扇形。

样本空间

于是我们有(阴影部分的拼接):

P(A) = P(AB_1)+P(AB_2)+ ...+P(AB_n) = \sum_{i=1}^nP(AB_i)
假如A是在B组成的样本空间的任意位置,比如只是在某两个子空间里,如B_1,B_2,那么显然P(A)=P(AB_1)+P(AB_2)就成立了。而其他所有P(AB_3)+P(AB_4)+...显然都是空集相加,得到0。因此这里的全概率公式是普遍成立的。只要你的AB里面就满足条件。为了方便,我们把B这类事件叫做完备事件组

此外,结合条件概率公式,我们有:

P(A)=\sum_{i=1}^nP(AB_i)=\sum_{i=1}^nP(A|B_i)P(B_i)

此即全概率公式,它的意义在于,一个事件的概率不好求时,可以转化为在一系列条件下发生概率的和。

贝叶斯公式

根据条件概率公式:
P(A|B)=\dfrac{P(A\cap B)}{P(B)}……(1)
P(B|A)=\dfrac{P(A\cap B)}{P(A)}……(2)
(1) 和 (2) 联立有:
P(A|B) = \dfrac{P(B|A)\cdot P(A)}{P(B)}
此即大名鼎鼎的贝叶斯公式(Bayes' Theorem)。

现在从另一个更直观的视角来看贝叶斯公式,其实是一回事。如图:


贝叶斯韦恩图

P(A|B)的概率是交集C部分占整个B的比例。因为已经确定B事件发生了,所以再求A事件的概率,要以B事件发生的概率作为分母,两者交集作为分子。
\begin{aligned} P(A|B)&=\dfrac{P(C)}{P(B)}\\ P(B|A)&=\dfrac{P(C)}{P(A)}\\ \Rightarrow P(A|B)P(B)&=P(B|A)P(A) \end{aligned}

贝叶斯公式应用

假设有一种罕见病,在人群中的发病概率是 0.1%,记为 P(E),这是一个基于统计结果的先验概率。有一个医生,他能正确检测出这种病的概率是 99%,现在小明被医生检测出有病,那么小明实际有病的概率是多少?

仔细审题,“医生能正确检测出这种病的概率是 99%”,其含义是,当一个人确有此病,医生有 99% 的把握检测出来。因此 99% 不能表示小明实际得病的概率。因此这里的前提条件就是此人有病(记为事件H),我们把它记为 P(E|H),表示确实有病的条件下,检测结果也是有病的概率。

现在我们要计算的是检测有病,那么实际有病的概率。也就是 P(H|E)。根据贝叶斯公式有:
P(H|E) = \dfrac{P(E|H)P(H)}{P(E)}
P(E) 表示检测出有病的概率。它其实分两种情况,有病并正确检测,以及没病但是检测错误,其实也就是全概率公式:
P(E) = P(E|H)P(H) + P(E|^\neg H)P(^\neg H)
联立得:
\begin{aligned} P(H|E) &=\dfrac{P(E|H)P(H)}{ P(E|H)P(H) + P(E|^\neg H)P(^\neg H)}\\ &= \dfrac{0.99 \times 0.001}{0.99\times 0.001 + 0.01\times 0.999}\\ &=\dfrac{11}{122} \approx 9\% \end{aligned}

朴素贝叶斯公式

考察这样一组数据。其中挂科是结果,其他行为是自变量。1 表示 True,0 表示 False。

挂科(y) 喝酒(x_1) 逛街(x_2) 学习(x_3)
1 1 1 0
0 0 0 1
0 1 0 1
1 1 0 0
1 0 1 0
0 0 1 1
0 0 1 0
1 0 0 1

引入一个独立性假设(independence assumption),这就是朴素贝叶斯之所以叫“朴素”(naive)的原因。其含义是:每个“喝酒-挂科”,“不学习-挂科”等等组合都是独立的,我们可以直接根据发生次数来计算概率。
为了方便计算,把整个样本表转化成“频数表”,统计每个事件发生的次数。

喝酒 不喝酒 逛街 不逛街 学习 不学习 总数
挂科 2 2 2 2 1 3 4
不挂科 1 3 2 2 3 1 4
合计 3 5 4 4 4 4 8 (样本数)

这个小小的数据集能给我们带来很多信息。

挂科的概率:
P(y=1)= 4/8 = 1/2
这是根据样本得来的先验概率。在不知道一个人是否喝酒、逛街、学习的情况下,也就是没有任何证据(evidence)的情况下,我们只能盲猜,因为挂科和不挂科的概率都是 1/2。假如挂科的情况多了10个,那我们肯定猜这个人挂科,毕竟概率更大。

喝酒的概率:
P(x_1=1) = 3/8
由于我们假设每个事件都是独立的,那么 8 个样本中,喝酒的有三个,我们就说喝酒发生的概率是 3/8。

已知一个人挂科,他不学习的概率:
P(x_3=0|y=1) = 3/4
挂科一共发生了 4 次,其中 1 次是学习的,3 次是不学习的。于是已知一个人挂科了,那么他不学习的概率就是 3/4。

此外,根据独立性假设我们可以知道:
P(x_1,x_2,x_3|y) = P(x_1|y)P(x_2|y)P(x_3|y)……(3)
举个具体的例子:在挂科的情况下,喝酒、逛街、不学习的概率,是三个事件在挂科的情况下的概率之积,因为我们假定它们是独立事件。

x_1,x_2,x_3可以看成一个事件,根据贝叶斯公式,我们有:
P(y|x_1,x_2,x_3) = \dfrac{P(x_1,x_2,x_3|y)\cdot P(y)}{P(x_1,x_2,x_3)}……(4)

于是 (3),(4) 两式联立有:
P(y|x_1,x_2,x_3) = \dfrac{P(x_1|y)P(x_2|y)P(x_3|y)\cdot P(y)}{P(x_1,x_2,x_3)}

现在我们来计算不喝酒、不逛街,只学习的人,是挂科概率大,还是不挂科概率大。我们用符号 k 表示 \dfrac{1}{P(x_1,x_2,x_3)}
\begin{aligned} P(y=1|x_1=0,x_2=0,x_3=1)&=\dfrac{P(x_1=0|y=1)P(x_2=0|y=1)P(x_3=1|y=1)P(y=1)}{P(x_1,x_2,x_3)}\\ &=\dfrac{1}{2}\cdot \dfrac{1}{2}\cdot \dfrac{1}{4}\cdot \dfrac{1}{2}\cdot k\\ &=\dfrac{1}{32}k \end{aligned}
\begin{aligned} P(y=0|x_1=0,x_2=0,x_3=1)&=\dfrac{P(x_1=0|y=0)P(x_2=0|y=0)P(x_3=1|y=0)P(y=0)}{P(x_1,x_2,x_3)}\\ &=\dfrac{3}{4}\cdot \dfrac{2}{4}\cdot \dfrac{3}{4}\cdot \dfrac{1}{2}\cdot k\\ &=\dfrac{9}{64}k \end{aligned}
k 是个正数,我们不用管它,之需要比较\dfrac{1}{32}\dfrac{9}{64},P(挂科):P(不挂科)=2:9,所以我们推测这个人不挂科。

“公式化”

现在把前面的描述转化成数学语言。为了体现“函数”的一面,用 x_1, x_2, x_3 表示三个特征向量 (feature vector),用 y 表示类别变量 (class variable)。根据贝叶斯公式有:

P(y|x_1,x_2,x_3) = \dfrac{P(x_1,x_2,x_3|y)\cdot P(y)}{P(x_1,x_2,x_3)}

现在引入独立性假设,那么有:

P(x_1,x_2,x_3|y) = P(x_1|y)P(x_2|y)P(x_3|y)

两式联立:
P(y|x_1,x_2,x_3) = \dfrac{P(x_1|y)P(x_2|y)P(x_3|y)\cdot P(y)}{P(x_1,x_2,x_3)}
并推广到 n 个特征向量:
P(y|x_1,...,x_n)=\dfrac{\prod_{i=1}^nP(x_i|y)P(y)}{P(x_1,...,x_n)}
由于只需要比较分子,那么我们求使得分子值为最大的那个y,就是我们对一组输入x_i的预测结果。用\hat{y}表示预测值,写成公式:
\hat{y}=\arg\max_yP(y)\prod_{i=1}^nP(x_i|y)

参考资料

  1. 【官方双语】【Veritasium真理元素】贝叶斯陷阱
  2. Naive Bayes - scikit-learn documentation
  3. 朴素贝叶斯分类器 (Naive Bayes Classifier)
    tip: 引用了资料 3 的例子,但是它的部分叙述有误,请谨慎观看

相关文章

  • 朴素贝叶斯算法

    问题 1. 什么是朴素贝叶斯 2. 怎么理解贝叶斯公式和朴素贝叶斯公式 3. 朴素贝叶斯算法流程是怎样...

  • 算法笔记(7)-朴素贝叶斯算法及Python代码实现

    朴素贝叶斯算法有三种类型,分别是贝努利朴素贝叶斯、高斯贝叶斯、多项式朴素贝叶斯。 贝叶斯公式 贝努利朴素贝叶斯 适...

  • 朴素贝叶斯算法介绍及优化

    朴素贝叶斯(Naive Bayes) 贝叶斯公式 朴素贝叶斯算法其实原理很简单,要理解朴素贝叶斯算法我们首先得知道...

  • sklearn-朴素贝叶斯

    朴素贝叶斯分为三种:高斯朴素贝叶斯、多项式朴素贝叶斯、伯努利朴素贝叶斯。这三种的不同之处在于求条件概率的公式不同。...

  • 图解 贝叶斯分类器

    本文知识点: 贝叶斯公式 一般化的贝叶斯公式 朴素贝叶斯算法:用到链式法则,条件独立 朴素贝叶斯分类器(Naïve...

  • 16、朴素贝叶斯算法(高斯、伯努力、多项式)

    一、朴素贝叶斯 (一)、什么是贝叶斯 (二)、多条件的贝叶斯 公式:公式.png 案例:去自习室的概率.png比较...

  • Naive Bayes朴素贝叶斯法

    Welcome To My Blog 朴素贝叶斯方法基于贝叶斯公式,之所以朴素(Naive)是因为它有一个较强的...

  • Machine Learning (4)

    贝叶斯公式推导,朴素贝叶斯公式 学习先验概率 学习后验概率 LR 和 Linear Regression 之间的区...

  • Naive-Bayes(朴素贝叶斯)

    原理:朴素贝叶斯算法是一个典型的统计学习方法,主要理论基础就是一个贝叶斯公式,贝叶斯公式的基本定义如下: 这个公式...

  • 具体算法4 - 概率和朴素贝叶斯

    本章关键词 概率、过滤器、分类器 贝叶斯公式是概率论中非常重要的公式,朴素贝叶斯是基于贝叶斯公式和特征条件独立假设...

网友评论

    本文标题:朴素贝叶斯公式

    本文链接:https://www.haomeiwen.com/subject/cjowgftx.html