热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

开发笔记:朴素贝叶斯分类理论篇

篇首语:本文由编程笔记#小编为大家整理,主要介绍了朴素贝叶斯分类-理论篇相关的知识,希望对你有一定的参考价值。 贝叶斯原理是英国数学家托马斯·贝叶斯于18 世纪提出的,当我们不能直接计算一件事情(A)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了朴素贝叶斯分类-理论篇相关的知识,希望对你有一定的参考价值。


贝叶斯原理是英国数学家托马斯·贝叶斯于18 世纪提出的,当我们不能直接计算一件事情(A)发生的可能性大小的时候,可以间接的计算与这件事情有关的事情(X,Y,Z)发生的可能性大小,从而间接判断事情(A)发生的可能性大小。



在介绍贝叶斯原理之前,先介绍几个与概率相关的概念。


1,概率相关概念


概率用于描述一件事情发生的可能性大小,用数学符P(x) 表示,x 表示随机变量P(x) 表示 x 的概率。


随机变量根据变量取值是否连续,可分为离散型随机变量连续型随机变量


联合概率由多个随机变量共同决定,用 P(x, y) 表示,含义为“事件 x 与事件 y 同时发生的概率”。


条件概率也是由多个随机变量共同决定,用 P(x|y) 表示,含义为“在事件 y 发生的前提下,事件 x 发生的概率。”


边缘概率:从 P(x, y) 推导出 P(x),从而忽略 y 变量。



  • 对于离散型随机变量,通过联合概率 P(x, y) 在 y 上求和, 可得到 P(x),这里的P(x) 就是边缘概率。


  • 对于连续型随机变量,通过联合概率 P(x, y) 在 y 上求积分, 可得到 P(x),这里的P(x) 就是边缘概率。


概率分布:将随机变量所有可能出现的值,及其对应的概率都展现出来,就能得到这个变量的概率分布,概率分布分为两种,分别是离散型和连续型。

常见的离散型数据分布模型有:



  • 伯努利分布:表示单个随机变量的分布,且该变量的取值只有两个,0 或 1。例如抛硬币(不考虑硬币直立的情况)的概率分布就是伯努利分布。数学公式如下:



    • P(x = 0) = 1 - λ


    • P(x = 1) = λ



  • 多项式分布:也叫分类分布,描述了一个具有 k 个不同状态的单个随机变量。这里的 k,是有限的数值,如果 k 为 2,那就变成了伯努利分布。



    • P(x  = k) =  λ



  • 二项式分布


  • 分布



常见的连续型数据分布模型有:



  • 正态分布,也叫高斯分布,是最重要的一种。


  • 均匀分布


  • 指数分布


  • 拉普拉斯分布



正态分布的数学公式为:


朴素贝叶斯分类-理论篇


正态分布的分布图为:


朴素贝叶斯分类-理论篇

正态分布还可分为:



  • 一元正态分布:此时 μ 为 0,σ 为 1。


  • 多元正态分布。



数学期望,如果把“每次随机结果的出现概率”看做权重,那么期望就是所有结果的加权平均值


方差表示的是随机变量的取值与其数学期望的偏离程度,方差越小意味着偏离程度越小,方差越大意味着偏离程度越大。


概率论研究的就是这些概率之间的转化关系。


2,贝叶斯定理


贝叶斯公式如下:


朴素贝叶斯分类-理论篇


含义:



  • 等号右边分子部分,P(Bi) 为先验概率P(A|Bi) 为条件概率


  • 等号右边整个分母部分为边缘概率


  • 号左边 P(Bi|A) 后验概率,由先验概率,条件概率,边缘概率计算得出。



贝叶斯定理可用于分类问题,将其用在分类问题中时,可将上面的公式简化为:


朴素贝叶斯分类-理论篇


其中:



  • c 表示一个分类,f 表示属性值。


  • P(c|f) 表示在待分类样本中,出现属性值 f 时,样本属于类别 c 的概率。


  • P(f|c) 是根据训练样本数据,进行统计得到的,分类 c 中出现属性 f 的概率。


  • P(c ) 是分类 c 在训练数据中出现的概率。


  • P(f) 是属性 f 在训练样本中出现的概率。



这就意味着,当我们知道一些属性特征值时,根据这个公式,就可以计算出所属分类的概率,最终所属哪个分类的概率最大,就划分为哪个分类,这就完成了一个分类问题。


贝叶斯推导


来看下贝叶斯公式是如何推导出来的。


如下图两个椭圆,左边为C,右边为F。


朴素贝叶斯分类-理论篇


现在让两个椭圆产生交集:


朴素贝叶斯分类-理论篇


根据上图可知:在事件F 发生的条件下,事件C 发生的概率就是 P(C ∩ F) / P(F),即:



  • P(C | F) = P(C ∩ F) / P(F)


可得到:



  • P(C ∩ F) = P(C | F) *  P(F)`


同理可得:



  • P(C ∩ F) = P(F | C) *  P(C)`


所以:



  • P(C ∩ F) = P(C | F) * P(F) =  P(F | C) * P(C)


  • P(C | F)  =  P(F | C) * P(C) / P(F)


3,朴素贝叶斯


假设我们现在有一个数据集,要使用贝叶斯定理,进行分类。特征有两个:f1,f2。现在要对数据 F 进行分类,那我们需要求解:



  • P(c|F):表示数据 F 属于分类 c 的概率。



因为特征有 f1 与 f2,那么:



  • P(c|F) = P(c|(f1,f2))



对于分类问题,特征往往不止一个。如果特征之间相互影响,也就是 f1 与 f2 之间相互影响,那么 P(c|(f1, f2)) 就不容易求解。


朴素贝叶斯在贝叶斯的基础上做了一个简单粗暴的假设,它假设多个特征之间互不影响,相互独立。





朴素的意思就是纯朴,简单。




用数学公式表示就是:



  • P(A, B) = P(A) * P(B)


实际上就是大学概率论中所讲的事件独立性,即事件A 与事件B 的发生互不干扰,相互独立


那么,根据朴素贝叶斯,P(c|F) 的求解过程如下:


朴素贝叶斯分类-理论篇


假设我们现在要分类的数据有两类:c1 和 c2。


那么对于数据 F 的分类问题,我们就需要求解两个概率:P(c1|F) 和P(c2|F):



  • 如果 P(c1|F) > P(c2|F),那么 F 属于 c1 类。


  • 如果 P(c1|F) ,那么 F 属于 c2 类。



根据贝叶斯原理,我们可以得到:


朴素贝叶斯分类-理论篇


对于分类问题,我们的最终目的是分类,而不是真正的求解出 P(c1|F) 和 P(c2|F) 的确切数值。


根据上面的公式,我们可以看到,等号右边的分母部分都是 P(F)


朴素贝叶斯分类-理论篇


所以我们只需要求出 P(F|c1) × P(c1) 和 P(F|c2) × P(c2),就可以知道 P(c1|F) 和 P(c2|F) 哪个大了。


所以对于 P(c|F) 可以进一步简化:


朴素贝叶斯分类-理论篇


4,处理分类问题的一般步骤


用朴素贝叶斯原理,处理一个分类问题,一般要经过以下几个步骤:



  • 准备阶段



    • 获取数据集。


    • 分析数据,确定特征属性,并得到训练样本。



  • 训练阶段



    • 计算每个类别概率 P(Ci)


    • 对每个特征属性,计算每个分类的条件概率 P(Fj|Ci)


    • Ci 代表所有的类别。


    • Fj 代表所有的特征。



  • 预测阶段



    • 给定一个数据,计算该数据所属每个分类的概率 P(Fj|Ci) * P(Ci)


    • 终那个分类的概率大,数据就属于哪个分类。




5,用朴素贝叶斯分类


接下来我们来处理一个实际的分类问题,我们处理的是离散型数据


5.1,准备数据集


我们的数据集如下:


朴素贝叶斯分类-理论篇


该数据集的特征集有身高,体重鞋码,目标集为性别


我们的目的是训练一个模型,该模型可以根据身高,体重和鞋码来预测所属的性别。


我们给定一个特征:



  • 身高 = 高,用 F1 表示。


  • 体重 = 中,用 F2 表示。


  • 鞋码 = 中,用 F3 表示。



要求这个特征是还是?(用C1 表示C2 表示)也就是要求 P(C1|F) 大,还是P(C2|F) 大?

















# 根据朴素贝叶斯推导
   P(C1|F)=> P(C1|(F1,F2,F3))=> P(C1|F1) * P(C1|F2) * P(C1|F3)=> [P(F1|C1) * P(C1)] * [P(F2|C1) * P(C1)] * [P(F3|C1) * P(C1)]
   P(C2|F)=> P(C2|(F1,F2,F3))=> P(C2|F1) * P(C2|F2) * P(C2|F3)=> [P(F1|C2) * P(C2)] * [P(F2|C2) * P(C2)] * [P(F3|C2) * P(C2)]


5.2,计算 P(Ci)


目标集共有两类:男和女,男出现4 次,女出现4 次,所以:



  • P(C1) = 4 / 8 = 0.5


  • P(C2) = 4 / 8 = 0.5



5.3,计算 P(Fj|Ci)


通过观察表格中的数据,我们可以知道:






















# 性别为男的情况下,身高=高 的概率P(F1|C1) = 2 / 4 = 0.5# 性别为男的情况下,体重=中 的概率P(F2|C1) = 2 / 4 = 0.5
# 性别为男的情况下,鞋码=中 的概率P(F3|C1) = 1 / 4 = 0.25
# 性别为女的情况下,身高=高 的概率P(F1|C2) = 0 / 4 = 0
# 性别为女的情况下,体重=中 的概率P(F2|C2) = 2 / 4 = 0.5
# 性别为女的情况下,鞋码=中 的概率P(F3|C2) = 2 / 4 = 0.5


5.4,计算 P(Fj|Ci) * P(Ci)


上面我们已经推导过 P(C1|F) 和 P(C2|F),下面可以求值了:
















   P(C1|F)=> [P(F1|C1) * P(C1)] * [P(F2|C1) * P(C1)] * [P(F3|C1) * P(C1)]=> [0.5 * 0.5] * [0.5 * 0.5] * [0.25 * 0.5]=> 0.25 * 0.25 * 0.125=> 0.0078125
   P(C2|F)=> [P(F1|C2) * P(C2)] * [P(F2|C2) * P(C2)] * [P(F3|C2) * P(C2)]=> [0 * 0.25] * [0.5 * 0.5] * [0.5 * 0.5]=> 0


最终可以看到 P(C1|F) > P(C2|F),所以数据 F 属于 C1,即男性。


6,总结


可以看到,对于一个分类问题:给定一个数据F,求解它属于哪个分类?实际上就是要求解 F 属于各个分类的概率大小,即 P(C|F)。


根据朴素贝叶斯原理,P(C|F) 与 P(F|C) * P(C) 正相关,所以最终要求解的就是 P(F|C) * P(C)。这就将一个分类问题转化成了一个概率问题。


下篇文章会介绍如何使用朴素贝叶斯处理实际问题。


(本节完。)





推荐阅读:













推荐阅读
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Pygame中使用矩形对表面进行涂色的方法。通过查阅Pygame文档中的blit函数,可以了解到如何将一个表面的特定部分复制到另一个表面的指定位置上。具体的解决方法和参数说明在文中都有详细说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
892974506_bdb55d_896
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有