数据分析入门系列教程-贝叶斯原理

简介: 如果你对当年学习的概率统计还有些印象的话,就一定会记得有个贝叶斯原理的东西,它是由英国数学家贝叶斯提出的。贝叶斯原理和我们的生活是紧密相关的,比如说你身边的一个人经常去夜店,那么你会推测这个人多半是个浪子。虽然这不是绝对的,但是你依然可以根据和事物相关的一些事件来做出判断,如果事件发生的频次比较多,那么就证明该判断成立的可能性更大。

贝叶斯原理


在学习朴素贝叶斯原理之前,我们先来了解下什么是贝叶斯原理。

其实就像是上面我们提到的生活中的例子一样,贝叶斯原理是建立在主观判断的基础上的。在我们不了解所有的客观事实的情况下,可以先预估计一个值,然后根据实际情况不断的修正这个值。


贝叶斯决策原理

假如我们现在有一个数据集,它的分类如下:

微信图片_20220520171058.png

我们现在以 p1(x,y) 来表示点(x,y)属于圆点的概率,以 p2(x,y) 来表示点(x,y)属于x点的概率,现在有一个新点(x,y),那么它的分类就取决于下面的方式:

  • 如果 p1(x,y)>p2(x,y),则新点(x,y)为类别1
  • 如果p1(x,y)<p2(x,y),则新点(x,y)为类别2

这就是贝叶斯决策原理的核心思想,下面我们再来看看该如何计算 p1 和 p2。


条件概率

我们先来学习下什么是条件概率,它是指:

事件 A 在另外一个事件 B 已经发生的条件下发生的概率,表示为 P(A|B)。

image.png

我们来研究下这张图,事件 A 发生为黄色区域,事件 B 发生为蓝色区域,它们的交集为同时发生的情况,那么 P(A|B) 可以怎么表示呢,P(A|B) 就应该等于它们同时发生的概率。而它们同时发生的概率又等于它们同时发生除以事件 B 发生,即:

image.png

变换公式,我们可以得到

image.png

以及

image.png

结合上面的两个公式,又能得到如下:

image.png

继续变换得:

image.png

这个就是条件概率的计算公式

对于上面的公式,我们一般把 P(A) 称作先验概率(Prior probability),即在事件 B 发生之前,我们判断事件 A 的概率。P(A|B) 称为后验概率(Posterior probability),即在事件 B 发生时,对事件 A 发生概率的重新评估。P(B|A)/P(B) 称为可能性函数,是一个因子,调节该因子,可以使我们估计的概率更加接近事实情况。

至此我们可以抽象下贝叶斯原理

后验概率 = 先验概率 X 因子

朴素贝叶斯

朴素贝叶斯,关键就在“朴素”二字,所谓朴素,指的是一种假设,假设每个输入变量都是独立的,即条件独立假设。

例如如下的概率:

image.png

可以根据条件独立假设分解为:

image.png

下面我们就通过一个垃圾邮件的例子来深入理解下


垃圾邮件判别


假设现在我们总共有28封邮件,其中正常邮件20封,垃圾邮件8封,并且假设每封邮件都有10个单词。

image.png

对于所有邮件,我们关心如下几个词语,“购买”,“通知”,“物品”,各类邮件包含词语数量如下:

类别 购买 通知 物品
正常 2 4 1
垃圾 10 4 20

然后又新接收到一封邮件 Q,内容为“通知,购买物品”,需要判断邮件 Q 的类别。

数据准备完毕,我们来看下该如何通过朴素贝叶斯来判断邮件类别


计算该类别邮件概率

分别计算正常邮件和垃圾邮件所占的比例

P(正常) = 20/28 = 5/7

P(垃圾) = 8/28 = 2/7


计算各词语在不同类别的概率

首先计算“购买”单词在正常和垃圾邮件中出现的概率

P(购买|正常) = 1/(20*10) = 1/100

P(购买|垃圾) = 10/(8*10) = 1/8

再计算“通知”单词分别出现的概率

P(通知|正常) = 4/(20*10) = 1/50

P(通知|垃圾) = 4/(20*10) = 1/50

最后计算“物品”单词分别出现的概率

P(物品|正常) = 1/(20*10) = 1/200

P(物品|垃圾) = 20/(20*10) = 1/10


通过邮件内容判断类别

下面我们需要计算的概率就是在给定邮件内容的情况下(Q),如何判定该邮件是正常的还是垃圾的。

P(正常|邮件内容)

P(垃圾|邮件内容)

如果我们可以计算出上面的两个概率,只需要比较它们,如果 P(正常|邮件内容) > = P(垃圾|邮件内容),则邮件 Q 属于正常邮件,反之则为垃圾邮件。

我们再把邮件 Q 的内容进行分词拆分:

通知|购买|物品

现在我们可以应用贝叶斯定理

P(正常|邮件内容) = P(邮件内容|正常)P(正常)/P(邮件内容)

= P(通知,购买,物品|正常)P(正常)/P(邮件内容)

P(垃圾|邮件内容)

= P(邮件内容|垃圾)P(垃圾)/P(邮件内容)

=P(通知,购买,物品|垃圾)P(垃圾)/P(邮件内容)

再根据条件独立假设,即运用朴素贝叶斯模型,继续转换

P(正常|邮件内容)

= P(邮件内容|正常)P(正常)/P(邮件内容)

= P(通知,购买,物品|正常)P(正常)/P(邮件内容)

= P(通知|正常)P(购买|正常)P(物品|正常)P(正常)/P(邮件内容)

P(垃圾|邮件内容)

= P(邮件内容|垃圾)P(垃圾)/P(邮件内容)

=P(通知,购买,物品|垃圾)P(垃圾)/P(邮件内容)

= P(通知|垃圾)P(购买|垃圾)P(物品|垃圾)P(垃圾)/P(邮件内容)

现在我们带入刚刚计算的概率,可以得到:

P(正常|邮件内容)

= [(1/50)(1/100)(1/200)*5/7]/P(邮件内容)

P(垃圾|邮件内容)

= [(1/50)(1/8)(1/10)*2/7]/P(邮件内容)

最后还剩下 P(邮件内容) 没有具体的数值,而这个也是最为难计算的,因为毕竟我们太难估计别人会给我们发送什么内容的邮件了。但是呢,这个值却是不必计算的,因为在需要比较的两个概率里,都包含 P(邮件内容),所以它的值具体是多少并不影响最终的比较结果。

对于上面的两个概率,我们通过肉眼也基本可以判定,P(垃圾|邮件内容)  > P(正常|邮件内容)  ,所以可以判定邮件 Q 是垃圾邮件。


朴素贝叶斯优缺点


朴素贝叶斯分类器的应用是非常广泛的,而最最常用到的领域就是文本分类。它常常被用于垃圾文本过滤,情感分析,推荐系统等领域。

优点

是通过计算概率来分类,可以处理多分类问题

对于小规模的数据表现很好

缺点

由于其“朴素”的特性,准确率上会有损失

进行文本分类时,准确率非常依赖训练预料的好坏,所以文本的分割是重点


总结


本节讲解了贝叶斯原理以及基于贝叶斯条件独立假设下的朴素贝叶斯模型,该模型在文本分类领域是非常常用的。同时我们还了解了后验概率和先验概率,这些概念也都是机器学习领域非常重要的概念,你一定要好好理解下。

微信图片_20220520171457.png



练习题


微信暧昧信息和出轨的概率

  1. 在没有任何信息的情况下,出轨的概率
  2. 微信里有暧昧信息,出轨的概率
  3. 如果已经出轨了,微信有暧昧信息的概率

以上三个概率,分别对应先验概率、后验概率和条件概率的哪一种呢?

相关文章
|
3月前
|
数据采集 存储 数据可视化
Python数据分析从入门到实践
Python数据分析从入门到实践
|
16天前
|
机器学习/深度学习 资源调度 数据挖掘
R语言用贝叶斯层次模型进行空间数据分析
R语言用贝叶斯层次模型进行空间数据分析
|
24天前
|
资源调度 数据挖掘 定位技术
使用贝叶斯层次模型进行空间数据分析
使用贝叶斯层次模型进行空间数据分析
|
26天前
|
资源调度 数据挖掘 定位技术
R语言使用贝叶斯层次模型进行空间数据分析
R语言使用贝叶斯层次模型进行空间数据分析
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
Python数据分析:从入门到实践
Python数据分析:从入门到实践
|
4月前
|
存储 数据挖掘 索引
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
27 0
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
|
5月前
|
存储 机器学习/深度学习 数据挖掘
提升数据分析效率:Amazon S3 Express One Zone数据湖实战教程
提升数据分析效率:Amazon S3 Express One Zone数据湖实战教程
86 1
|
5月前
|
存储 数据挖掘 Python
借助 PyPDF2 库把数据分析系列教程文章制作成了PDF电子书,欢迎来领取!
借助 PyPDF2 库把数据分析系列教程文章制作成了PDF电子书,欢迎来领取!
|
5月前
|
数据采集 算法 数据可视化
数据分析入门系列教程-EM实战-划分LOL英雄
数据分析入门系列教程-EM实战-划分LOL英雄