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

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

贝叶斯原理


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

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


贝叶斯决策原理

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

微信图片_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. 如果已经出轨了,微信有暧昧信息的概率

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

相关文章
|
1月前
|
数据可视化 数据挖掘 大数据
Python 数据分析入门:从零开始处理数据集
Python 数据分析入门:从零开始处理数据集
|
15天前
|
数据采集 机器学习/深度学习 数据可视化
深入浅出:用Python进行数据分析的入门指南
【10月更文挑战第21天】 在信息爆炸的时代,掌握数据分析技能就像拥有一把钥匙,能够解锁隐藏在庞大数据集背后的秘密。本文将引导你通过Python语言,学习如何从零开始进行数据分析。我们将一起探索数据的收集、处理、分析和可视化等步骤,并最终学会如何利用数据讲故事。无论你是编程新手还是希望提升数据分析能力的专业人士,这篇文章都将为你提供一条清晰的学习路径。
|
24天前
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--入门
Python数据分析篇--NumPy--入门
29 0
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python中的简单数据分析:入门指南
【10月更文挑战第2天】Python中的简单数据分析:入门指南
33 0
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
76 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
167 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
82 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
3天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
26 2
|
2月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
55 5
下一篇
无影云桌面