贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时直接而又高效,很多高级自然语言处理模型也可以从它演化而来。因此,学习贝叶斯方法,是研究自然语言处理问题的一个非常好的切入口。

其实朴素贝叶斯=贝叶斯公式+条件独立假设

1.贝叶斯公式
大学概率学统计就已经学过贝叶斯公式,没学过也没关系,该公式就一行:
P(Y|X)=P(X|Y)*P(Y)/P(X)
它是由联合概率推导出来的:
P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)
其中 P(Y) 叫做先验概率, P(Y|X) 叫做后验概率, P(Y,X) 叫做联合概率

2.机器学习角度理解贝叶斯公式:
X:具有某些特征,Y:属于某类的标签。于是贝叶斯公式就变成:
P(“属于某类”|“具有某特征”)=P(“具有某特征”|“属于某类”)*P(“属于某类”)/P(“具有某特征”)
对于二分类问题最终判断判断 P(“属于某类”|“具有某特征”)是否大于1/2。

3垃圾邮件识别
现在我们举个例子,判断**“我司可办理正规发票(保真)17%增值税发票点数优惠!”这样的一份邮件是不是垃圾邮件。那么这样的一个例子具有某些特征:X=“我司可办理正规发票(保真)17%增值税发票点数优惠!”,属于某类标签:Y=垃圾邮件
根据刚提到的概率模型就是判断
概率P**(“垃圾邮件”|“我司可办理正规发票(保真)17%增值税发票点数优惠!”)是否大于1/2。

4.分词
为了完成垃圾邮件的识别,我们先了解下什么是分词。分词也是中文NLP中最重要的技术之一,就是将一句话拆分成若干个词语的组合。比如句子**“我司可办理正规发票(保真)17%增值税发票点数优惠!”就变成(“我”,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”))。那么在python平台上有一个非常常用 的分词工具就是jieba**。
分词完后,贝叶斯公式就变成:
5.条件独立假设
虽然已经把一句话转换成不同词语的组合,或者说一组向量,但我们现在还不知道分词后的概率怎么求,现在就用简单粗暴的方法:条件独立假设求上面的概率,也就是很朴素的近似。我们用S表示垃圾邮件,用H表示正常邮件,那么垃圾邮件的近似公式(贝叶斯公式分子第一项)就表示如下:

终究是传说中的条件独立假设。基于正常邮件的条件独立假设也一样。
式中的每一项都特别好求,只需统计各类邮件中关键词出现的概率就行了,比如:

在垃圾邮件分类的例子中,先验概率(贝叶斯公式分子第二项)都先等:P(S)=P(H)=1/2。
而其中P((”我“,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”)) 对于正常邮件和垃圾邮件值都是一样的,所以可以不用计算。
将这些公式代入贝叶斯公式就可以求出概率是不是大于1/2来判断该邮件,是不是垃圾邮件了。

6.朴素贝叶斯,朴素在何处
最后来讨论下加上条件独立假设的贝叶斯方法为什么叫朴素贝叶斯方法。
将句子(“我”,“司”,“可”,“办理”,“正规发票”) 中的 (“我”,“司”)与(“正规发票”)调换一下顺序,就变成了一个新的句子(“正规发票”,“可”,“办理”, “我”, “司”)。新句子与旧句子的意思完全不同。但由于乘法交换律,朴素贝叶斯方法中算出来二者的条件概率完全一样!也就是说,在朴素贝叶斯眼里,“我司可办理正规发票”与“正规发票可办理我司”完全相同。朴素贝叶斯失去了词语之间的顺序信息。这就相当于把所有的词汇扔进到一个袋子里随便搅和,贝叶斯都认为它们一样。因此这种情况也称作词**袋子模型(bag of words)。**词袋子模型与人们的日常经验完全不同。比如,在条件独立假设的情况下,“武松打死了老虎”与“老虎打死了武松”被它认作一个意思了。恩,朴素贝叶斯就是这么单纯和直接。

朴素贝叶斯的优缺点
朴素贝叶斯的主要优点有:
1)朴素贝叶斯模型有稳定的分类效率。
2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。
朴素贝叶斯的主要缺点有:   
1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
4)对输入数据的表达形式很敏感。

引用及参考
[1] 《统计学习方法》李航著
[2] https://blog.csdn.net/zrh_CSDN/article/details/81007851
[3] https://www.bilibili.com/video/av27193854?p=2

垃圾邮件分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)相关推荐

  1. 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测

    目录 一.简介和环境准备 简介: 环境: 二.实战演练 2.1使用葡萄(Wine)数据集,进行贝叶斯分类 1.数据导入 2.模型训练 3.模型预测 2.2模拟离散数据集–贝叶斯分类 1.数据导入.分析 ...

  2. 机器学习一:朴素贝叶斯(Naive Bayes)

    朴素贝叶斯 Naive Bayes 1. Introduction 1.1 离散属性 1.2 连续属性 1.2.1 Gaussian Naive Bayes 1.2.2 Multinomial Nai ...

  3. 【机器学习】朴素贝叶斯(Naive Bayes)

    在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系, ...

  4. 机器学习笔记——朴素贝叶斯(Naive Bayes)

    1贝叶斯算法简介 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算 ...

  5. 机器学习(十)分类算法之朴素贝叶斯(Naive Bayes)算法

    贝叶斯定理 首先我们来了解一下贝叶斯定理: 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? 了解一下公式 事件B发生的条件下,事件A发生的概率为: 这里写图片描述 同 ...

  6. 关于机器学习中的朴素贝叶斯以及拉普拉斯平滑

    看过我博文的同学可能知道机器学习之中,存在着判别学习以及生成学习,其主要区别我在另一篇文章中有详细描述,今天我们要讨论的是,在高斯判别分析之中,特征向量x是连续的,实数域上的向量,那么如果这个特征向量 ...

  7. 机器学习朴素贝叶斯算法_机器学习中的朴素贝叶斯算法

    机器学习朴素贝叶斯算法 朴素贝叶斯算法 (Naive Bayes Algorithm) Naive Bayes is basically used for text learning. Using t ...

  8. 机器学习算法: 朴素贝叶斯(Naive Bayes)

    朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...

  9. 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes

    文章目录 0. 前言 1. 朴素贝叶斯算法 2. 半朴素贝叶斯算法 2.1. ODE 2.2. SPODE 2.3. TAN 2.4. AODE 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔 ...

最新文章

  1. spi flash 无法写入数据_非易失性Flash详解
  2. python3.9 执行python3.6生成的随机森林模型model.pkl报错,警告版本不一致
  3. 解决在Yii2中使用PHPExcel出现Class ‘app\controllers\PHPExcel‘ not found的问题
  4. 20051020:该办宽带了
  5. 二叉树的遍历(前,中,后)
  6. The way of Webpack learning (IV.) -- Packaging CSS(打包css)
  7. Taro+react开发(66):注意定义margin的位置
  8. james-2.3.2中的配置
  9. oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例
  10. 上市之后,青云存储平台QingStor也要“进军”云原生
  11. ado.net的操作查询数据 0127
  12. 深度学习 | 深度学习算法中英文对照表
  13. Java获取外网ip地址
  14. 阿里云mysql导出表,mysql导出数据库表数据
  15. 百度开发者大会高层讲稿
  16. c语言计算机结题报告怎么写,结题报告格式及如何写结题报告
  17. 微信IPAD协议安卓协议DEMO,登录篇#1
  18. 【事件图谱】事件抽取与事件关系抽取
  19. 云南省科协第十届学术年会在曲靖开幕
  20. asp行驶证识别,驾驶证识别api代码demo示例,还可以识别车牌

热门文章

  1. 水池数目---深搜思想
  2. SuperSocket 1.5 Documentation译文 2 ----- 实现你的AppServer和AppSession
  3. C++虚函数表,虚表指针,内存分布
  4. Python列表,元组,字典的区别
  5. c语言类型名占字节,在C语言中,不同类型数据所占字节数
  6. jacoco入门_代码覆盖度工具jacoco的入门
  7. Github代码上传和下载
  8. 【Opencv实战】入门也能学会的「黑白上色」教程与手法核心~(收藏不谢)
  9. 【django】配置前端静态文件【6】
  10. 【python】队列——用顺序表实现队列操作