一、前述

机器学习算法中,有种依据概率原则进行分类的朴素贝叶斯算法,正如气象学家预测天气一样,朴素贝叶斯算法就是应用先前事件的有关数据来估计未来事件发生的概率。

二、具体

1、背景--贝叶斯定理引入
对于两个关联事件(非独立事件)A和B,同时发生的概率为:P(AB)=P(A|B)P(B)=P(B|A)P(A),所以把公式变形后可得:

贝叶斯定理,他是朴素贝叶斯算法的基础,就是下面的这个公式:

现在我们来把这个式子扩充一下:假设B由很多个独立事件组成,或者说,B由很多个属性组成B1,B2...Bn他们相互独立,那上面的式子成了这个样子:

也就是说我们把P(B|A)替换成了P(B1|A)P(B2|A)...P(Bn|A),上面的式子也很容易看出是成立的。我们把上面的公式先记住。其实我学的时候一直在纠结这么明显的式子究竟会起什么作用。

上面公式起作用的前提是假设特征和特征之间是独立的。因此这就是朴素贝叶斯的中朴素一词的来源。

2、案例一

对于垃圾邮件案例来说:

说明:P(spam)是先验概率。
          P(spam|Viagra)是后验概率。

构建频率表:

求解:
P(垃圾邮件|Viagra)=P(Viagra|垃圾邮件)*P(垃圾邮件)/P(Viagra)=(4/20)*(20/100)/(5/100)=0.8
结论:
因此,如果电子邮件含有单词Viagra,那么该电子邮件是垃圾邮件的概率为80%。所以,任何含有单词Viagra的消息都需要被过滤掉。

拓展一:假设特征和特征之间是独立的。
当有更多的特征时,则有如下公式:

分别求解垃圾邮件概率和非垃圾邮件概率:

分母可以先忽略它,垃圾邮件的总似然为:

• (4/20)*(10/20)*(20/20)*(12/20)*(20/100)=0.012

• 非垃圾邮件的总似然为:

• (1/80)*(66/80)*(71/80)*(23/80)*(80/100)=0.002

• 将这些值转换成概率,我们只需要一步得到垃圾邮件概率为

85.7%

拓展二:假设文章中包含了4个单词的邮件呢?

• 我们可以计算垃圾邮件的似然如下:

• (4/20)*(10/20)*(0/20)*(12/20)*(20/100)=0

• 非垃圾邮件的似然为:

• (1/80)*(14/80)*(8/80)*(23/80)*(80/100)=0.00005

• 因此该消息是垃圾邮件的概率为0/(0+0.00005)=0

• 该消息是非垃圾邮件的概率为0.00005/(0+0.00005)=1

• 问题出在Groceries这个单词,所有单词Grogeries有效抵消或否决了所有其他的证据。

解决方法:

拉普拉斯估计本质上是给频率表中的每个计数加上一个较小的数,这样就保证了每一类中每个特征发生概率非零。

• 通常情况下,拉普拉斯估计中加上的数值设定为1,这样就保证每一类特征的组合至少在数据中出现一次。

• 然后,我们得到垃圾邮件的似然为:

• (5/24)*(11/24)*(1/24)*(13/24)*(24/108)=0.0004

• 非垃圾邮件的似然为:

• (2/84)*(15/84)*(9/84)*(24/84)*(84/108)=0.0001

• 这表明该消息是垃圾邮件的概率为80%,是非垃圾邮件的概率为20%。
3、案例二

让我以一个例子加以说明,假设有这样一个数据集(本例来自朴素贝叶斯分类器的应用),

症状(A1) 职业(A2) 疾病(B)
打喷嚏  护士   感冒
打喷嚏  农夫   过敏
头痛   建筑工人 脑震荡
头痛   建筑工人 感冒
打喷嚏  教师   感冒
头痛   教师   脑震荡

那么一个打喷嚏的建筑工人是感冒还是没感冒呢?根据贝叶斯定理,

P(感冒|打喷嚏x建筑工人) = P(打喷嚏x建筑工人|感冒) x P(感冒) / P(打喷嚏x建筑工人)

假定”打喷嚏”和”建筑工人”这两个特征是独立的,因此,上面的等式就变成了

P(感冒|打喷嚏x建筑工人) = P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒) / P(打喷嚏) x P(建筑工人) = 0.66 x 0.33 x 0.5 / 0.5 x 0.33 = 0.66
同理,
P(非感冒|打喷嚏x建筑工人) = P(打喷嚏|非感冒) x P(建筑工人|非感冒) x P(非感冒) / P(打喷嚏) x P(建筑工人) = 0.33 x 0.33 x 0.5 / 0.5 x 0.33 = 0.33

因为P(感冒|打喷嚏x建筑工人) > P(非感冒|打喷嚏x建筑工人) ,所以我们更愿意相信一个打喷嚏的建筑工人是感冒的。

从上面的例子可以看出,贝叶斯分类的步骤是这样的:

2、上面的已知条件都是离散值,如果是连续值呢,对于连续值通常有两种办法,一是将连续值截取为离散值,然后求概率,二是假定离散值服从高斯分布,即


因为我们只需求概率的相对值,所以这里只需计算属性的概率密度值即可。得出结论

假设特征服从多项式分布,连续的特征适合用高斯分布的,

比如鸢尾花数据集,如果是离散的特征,适合用多项式分布。

总结:一般三种贝叶斯分类方法分别是高斯、多项式、伯努利

高斯模型:有些特征可能是连续型变量,比如说人的身高,物体的长度,这些特征可以转换成离散型的值,比如如果身高在160cm以下,特征值为1;在160cm和170cm之间,特征值为2;在170cm之上,特征值为3。也可以这样转换,将身高转换为3个特征,分别是f1、f2、f3,如果身高是160cm以下,这三个特征的值分别是1、0、0,若身高在170cm之上,这三个特征的值分别是0、0、1。不过这些方式都不够细腻,高斯模型可以解决这个问题。高斯模型假设这些一个特征的所有属于某个类别的观测值符合高斯分布,

多项式模型:该模型常用于文本分类,特征是单词,值是单词的出现次数。其中,是类别下特征出现的总次数;是类别下所有特征出现的总次数。对应到文本分类里,如果单词word在一篇分类为label1的文档中出现了5次,那么的值会增加5。如果是去除了重复单词的,那么的值会增加1。是特征的数量,在文本分类中就是去重后的所有单词的数量。的取值范围是[0,1],比较常见的是取值为1。

待预测样本中的特征在训练时可能没有出现,如果没有出现,则值为0,如果直接拿来计算该样本属于某个分类的概率,结果都将是0。在分子中加入,在分母中加入可以解决这个问题。

伯努利模型:伯努利模型中,对于一个样本来说,其特征用的是全局的特征。在伯努利模型中,每个特征的取值是布尔型的,即true和false,或者1和0。在文本分类中,就是一个特征有没有在一个文档中出现。如果特征值值为1,那么 如果特征值值为0,那么这意味着,“没有某个特征”也是一个特征。

高斯朴素贝叶斯是利用高斯概率密度来进行分类拟合的,多项式朴素贝叶斯多用于高纬度向量分类,最常用的是文章分类,伯努利朴素贝叶斯一般是针对布尔类型特征值的向量做分类的过程。

4、朴素贝叶斯分类的思想和计算过程

【机器学习】--机器学习之朴素贝叶斯从初始到应用相关推荐

  1. 机器学习实战之朴素贝叶斯

    机器学习实战之朴素贝叶斯 一.朴素贝叶斯算法概述 1.贝叶斯决策理论 2.条件概率 3.全概率公式 4.贝叶斯推断 5.朴素贝叶斯推断 二.实战 三.总结 1.朴素贝叶斯推断的一些优点: 2.朴素贝叶 ...

  2. 《机器学习实战》朴素贝叶斯

    机器学习实战的朴素贝叶斯一章中的源文件老是提示 IndexError: range object index out of range 看源码里怎么都不会溢出啊,除非minLen为0:所以看了下测试集 ...

  3. 机器学习面试题——朴素贝叶斯

    机器学习面试题--朴素贝叶斯 提示:这些知识点也是大厂笔试经常考的题目,我记得阿里和京东就考!!!想必在互联网大厂就会用这些知识解决实际问题 朴素贝叶斯介绍一下 朴素贝叶斯优缺点 贝叶斯公式 朴素贝叶 ...

  4. 机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测

    机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  5. 机器学习实验:朴素贝叶斯算法

    机器学习实验:朴素贝叶斯算法 问题如下: 根据给出的算法naivebayes.py,实现: 1.将数据集文件naivebayes_data.csv中的数据替换成14天打球与天气数据: 2.预测样本{O ...

  6. 04机器学习实战之朴素贝叶斯

    朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础--贝叶斯定理.最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: ...

  7. 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯

    朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础--贝叶斯定理.最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: ...

  8. 【机器学习实战】朴素贝叶斯应用之垃圾邮件过滤

    1.什么是朴素贝叶斯 2.贝叶斯公式 3.朴素贝叶斯常用的三个模型 4.朴素贝叶斯实现垃圾邮件过滤的步骤 5.垃圾邮件过滤实验: (一).准备收集好的数据集,并下载到本地文件夹 (二).朴素贝叶斯分类 ...

  9. 机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现

    本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序.1 方法概 ...

最新文章

  1. UVA 10815 Andy's First Dictionary(STL: set)
  2. canvas做的图片查看器1
  3. vuepress build提示YAMLException: end of the stream or a document separator is expected at line 7, colu
  4. 源码编译构建安装内核kernel
  5. android 视频标签,android--------WebView实现 Html5 视频标签加载
  6. 回忆大学到现在为止学到了什么?
  7. 数学建模之存贮模型详解
  8. 记一次 Win 10 下的用户文件夹迁移
  9. 网站流量统计分析工具,谷歌seo网站流量统计分析工具推荐
  10. 如何让计算机虚拟出多个桌面,多屏显示算什么?win10自带神技能,桌面秒变多屏幕,创建无上限...
  11. firefox火狐浏览器开启backdrop-filter高斯模糊
  12. 韩国职业选手风格分析
  13. 使用这些方式让你的ipad拥有更长的使用寿命
  14. 保护自己的笔记本电脑,和我一起做
  15. Node.js的环境搭建方法和 npm 的使用方法
  16. Android 概述
  17. 戴安娜血型仪tan提取信息
  18. 校招----蚂蚁金服测试开发面经
  19. 修改远程桌面端口号.bat
  20. 《地理信息系统导论》绪论 复习题

热门文章

  1. dwz交互式弹窗处理
  2. 解决:Word中无法使用“粘贴”快捷键
  3. 使用Tornado+Redis维护ADSL拨号服务器代理池
  4. JAVA毕设项目网上书店管理系统(java+VUE+Mybatis+Maven+Mysql)
  5. PMP备考错题集-作业习题二
  6. [FFmpeg]编译av1的dav1d解码库
  7. 攻防世界_江苏工匠杯_MISC_看雪看雪看雪
  8. HAUT 1262 魔法宝石 (最短路变形 or 暴力)
  9. File System | Debug | 如何查看文件挂载的分区以及分区大小
  10. mysql utf8mb4 bin_Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci与utf8mb4_unicode_ci的选择...