朴素贝叶斯算法

  • 1 朴素贝叶斯介绍
  • 2 贝叶斯公式
  • 3 拉普拉斯平滑系数
  • 4 朴素贝叶斯api使用
  • 5 朴素贝叶斯算法总结
    • 5.1 朴素贝叶斯优缺点
    • 5.2 朴素贝叶斯疑难点
    • 5.3 与逻辑回归的区别

1 朴素贝叶斯介绍

朴素贝叶斯是一种分类算法,经常被用于文本分类,它的输出结果是某个样本属于某个类别的概率。

2 贝叶斯公式

概率基础复习

  • 联合概率:包含多个条件,且所有条件同时成立的概率

    • 记作:P(A,B)
  • 条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
    • 记作:P(A|B)
  • 相互独立:如果P(A, B) = P(A)P(B),则称事件A与事件B相互独立


下面通过一个案例 “ 判断女神对你的喜欢情况 ” 来理解这个公式

问题如下:女神喜欢的概率?
职业是程序员并且体型匀称的概率?
在女神喜欢的条件下,职业是程序员的概率?
在女神喜欢的条件下,职业是程序员、体重超重的概率?计算结果为:P(喜欢) = 4/7
P(程序员, 匀称) = 1/7(联合概率)
P(程序员|喜欢) = 2/4 = 1/2(条件概率)
P(程序员, 超重|喜欢) = 1/4

思考题:

  • 在小明是产品经理并且体重超重的情况下,如何计算小明被女神喜欢的概率?
    P(喜欢|产品, 超重) = ?

此时我们需要用到朴素贝叶斯进行求解。

那么思考题就可以套用贝叶斯公式这样来解决:

P(喜欢|产品, 超重) = P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重)

计算上式可以发现:

  • P(产品, 超重|喜欢)P(产品, 超重) 的结果均为0,导致无法计算结果。这是因为我们的样本量太少了,不具有代表性。
  • 本来现实生活中,肯定是存在职业是产品经理并且体重超重的人的,P(产品, 超重)不可能为0;
  • 而且事件 职业是产品经理 和事件 体重超重 通常被认为是相互独立的事件,但是,根据我们有限的7个样本计算 P(产品, 超重) = P(产品)P(超重) 不成立。

而朴素贝叶斯可以帮助我们解决这个问题:

  • 朴素贝叶斯,简单理解,就是假定了特征与特征之间相互独立的贝叶斯公式。
  • 也就是说,朴素贝叶斯,之所以朴素,就在于假定了特征与特征相互独立

所以,思考题如果按照朴素贝叶斯的思路来解决,就可以是

P(产品, 超重) = P(产品) * P(超重) = 2/7 * 3/7 = 6/49
p(产品, 超重|喜欢) = P(产品|喜欢) * P(超重|喜欢) = 1/2 * 1/4 = 1/8
P(喜欢|产品, 超重) = P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重) = 1/8 * 4/7 / 6/49 = 7/12

3 拉普拉斯平滑系数

贝叶斯公式如果应用在文章分类的场景当中,我们可以这样看:


下面通过一个案例进行理解

需求:通过前四个训练样本(文章),判断第五篇文章,是否属于China类

P(C|Chinese, Chinese, Chinese, Tokyo, Japan)
= P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C) / P(Chinese, Chinese, Chinese, Tokyo, Japan)
= P(Chinese|C)^3 * P(Tokyo|C) * P(Japan|C) * P(C) / [P(Chinese)^3 * P(Tokyo) * P(Japan)]# 这个文章是需要计算是不是China类,是或者不是最后的分母值都相同:# 首先计算是China类的概率:
P(Chinese|C) = 5/8
P(Tokyo|C) = 0/8
P(Japan|C) = 0/8# 接着计算不是China类的概率:
P(Chinese|C) = 1/3
P(Tokyo|C) = 1/3
P(Japan|C) = 1/3

问题:从上面的例子我们可以得到 P(Tokyo|C)P(Japan|C)都为0,这是不合理的,如果词频列表里面有很多次数都为0,很可能计算结果都为0。

解决办法:拉普拉斯平滑系数

# 这个文章是需要计算是不是China类:
# 该例中,m=6(训练集中特征词的个数,重复不计)首先计算是China类的概率:P(Chinese|C) = 5/8 --> 6/14P(Tokyo|C) = 0/8 --> 1/14P(Japan|C) = 0/8 --> 1/14接着计算不是China类的概率: P(Chinese|C) = 1/3 --> 2/9P(Tokyo|C) = 1/3 --> 2/9P(Japan|C) = 1/3 --> 2/9

4 朴素贝叶斯api使用

sklearn.naive_bayes.MultinomialNB(alpha = 1.0)

  • 朴素贝叶斯分类
  • alpha:拉普拉斯平滑系数

朴素贝叶斯应用案例 —— 商品评论情感分析

5 朴素贝叶斯算法总结

5.1 朴素贝叶斯优缺点

(1)优点

  • 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率
  • 对缺失数据不太敏感,算法也比较简单,常用于文本分类
  • 分类准确度高,速度快

(2)缺点

  • 由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好
  • 需要计算先验概率,而先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳;
  • 先验概率:直观理解,所谓“先”,就是在事情之前,即在事情发生之前事情发生的概率。是根据以往经验和分析得到的概率,“由因求果”。
  • 后验概率:事情已经发生了,事情发生可能有很多原因,判断事情发生时由哪个原因引起的概率,“由果求因”。
  • 先验概率就是通常说的概率,后验概率是一种条件概率,但条件概率不一定是验后概率。贝叶斯公式是由先验概率求后验概率的公式

5.2 朴素贝叶斯疑难点

(1)朴素贝叶斯原理

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。

  • 对于给定的待分类项x,通过学习到的模型计算后验概率分布,
  • 即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为x所属的类别。

(2)朴素贝叶斯朴素在哪里?

在计算条件概率分布 P(X=x∣Y=c_k) 时,NB引入了一个很强的条件独立假设,即,当Y确定时,X的各个特征分量取值之间相互独立。

(3)为什么引入条件独立性假设?

为了避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题。
假设条件概率分为:

(4)在估计条件概率P(X∣Y)时出现概率为0的情况怎么办?

解决这一问题的方法是采用贝叶斯估计。
简单来说,引入λ,

  • 当λ=0时,就是普通的极大似然估计;
  • 当λ=1时称为拉普拉斯平滑。

(5)为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?

  • 人们在使用分类器之前,首先做的第一步(也是最重要的一步)往往是特征选择,这个过程的目的就是为了排除特征之间的共线性、选择相对较为独立的特征;
  • 对于分类任务来说,只要各类别的条件概率排序正确,无需精准概率值就可以得出正确分类;
  • 如果属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算复杂度的同时不会对性能产生负面影响。

5.3 与逻辑回归的区别

(1)区别一:

朴素贝叶斯是生成模型

  • 根据已有样本进行贝叶斯估计学习出先验概率P(Y)和条件概率P(X|Y),
  • 进而求出联合分布概率P(XY),
  • 最后利用贝叶斯定理求解P(Y|X),

而LR是判别模型

  • 根据极大化对数似然函数直接求出条件概率P(Y|X);

(2)区别二:

  • 朴素贝叶斯是基于很强的条件独立假设(在已知分类Y的条件下,各个特征变量取值是相互独立的),
  • 而LR则对此没有要求

(3)区别三:

  • 朴素贝叶斯适用于数据集少的情景,
  • 而LR适用于大规模数据集。

判别式模型与生成模型

机器学习算法(7)—— 朴素贝叶斯算法相关推荐

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

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

  2. k近邻算法与朴素贝叶斯算法

    机器学习--k近邻算法与朴素贝叶斯算法 k近邻算法 朴素贝叶斯 理论基础: 精确率和召回率 交叉验证与网格搜索 k近邻算法 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大 ...

  3. k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优

    k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优 k近邻算法 k近邻算法概述 k近邻算法代码实现 k近邻算法的评价 朴素贝叶斯算法 朴素贝叶斯算法概述 朴素贝叶斯代码实现 朴素贝叶斯的评价 分类模型 ...

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

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

  5. 机器学习 第三讲 机器学习基础、机器学习算法(K-近邻算法、朴素贝叶斯算法)

    文章目录 一.机器学习基础 1.明确几点问题 2.机器学习算法的判别依据 3.机器学习算法分类 4.机器学习开发流程 二.机器学习算法 1.sklearn数据集 (1)数据集划分 (2)sklearn ...

  6. 机器学习算法基础——朴素贝叶斯算法

    26.朴素贝叶斯算法原理 联合概率和条件概率 联合概率:包含多个条件,且所有条件同时成立的概率 记作:P(A,B) P(A,B)=P(A)P(B) 条件概率:就是事件A在另外一个事件B已经发生条件下的 ...

  7. 朴素贝叶斯算法_朴素贝叶斯算法原理

    摘要:本文介绍了贝叶斯公式,并根据公式而产生的朴素贝叶斯分类算法在机器学习中的应用,并列举了朴素贝叶斯分类算法的优缺点. 1贝叶斯公式的理解 贝叶斯定理(Bayes' theorem)是概率论中的一个 ...

  8. k-近邻算法及朴素贝叶斯算法

    目录 一.k-近邻算法的定义 二.k近邻算法实例-预测入住位置 三.k-临近算法优缺点 四.精确率与召回率 1.精确率 2.召回率 3.F1-score 4.classification_report ...

  9. 用python实现朴素贝叶斯算法_朴素贝叶斯算法 python 实现

    应用贝叶斯准则: 使用上面这些定义,可以定义贝叶斯分类准则为: 如果 P(c1|x, y) > P(c2|x, y), 那么属于类别 c1; 如果 P(c2|x, y) > P(c1|x, ...

  10. java mllib 算法_朴素贝叶斯算法原理及Spark MLlib实例(Scala/Java/Python)

    朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...

最新文章

  1. 450刀的eGPU vs 谷歌Colab,谁更划算?
  2. Maven构建Struts2项目
  3. Select2控件的使用
  4. xp系统中的隐藏文件不能显示 解决方案
  5. MySQL的查询缓存
  6. 【渝粤教育】广东开放大学 劳动人事争议处理法 形成性考核 (51)
  7. C#中集合接口关系笔记
  8. mysql 创建分区表_Mysql分区表及自动创建分区Partition
  9. 哪些事情瞬间暴露了你的贫穷?
  10. testflight无法联网怎么办_互联网人最怕的,就是这一刻
  11. 三、Dart Hello World
  12. sas中一些小的选项的含义
  13. MapReduce中一次reduce方法的调用中key的值不断变化分析及源码解析
  14. matlab语法复习
  15. 暗黑复制服务器物品,暗黑2战网环境下复制dupe物品装备
  16. macOS 安卓模拟器 Nox夜神模拟器 共享目录
  17. 《思考的技术》--大前研一读书笔记
  18. matlab优化工具箱安装,matlab优化工具箱安装
  19. 实现echarts图多个legend图例和自定义legend中字体颜色
  20. SpringMvc入门学习(IDEA创建SpringMVC项目)

热门文章

  1. 深信服EDR终端响应平台
  2. html给单选框赋值,layui radio性别单选框赋值方法
  3. 表情live--最好用的手机表情包app
  4. python爬虫系列之初识爬虫
  5. ☀️手把手教你HALCON在VS2017中搭建C++环境☀️《❤️记得收藏❤️》
  6. 电商数据仓库系统总体需求分析
  7. C++编译错误fatal error C1004: 发现意外的文件尾
  8. 用C编写COM(一)
  9. 训练营一期day17
  10. android wifi 打印文件,android – 将文件发送到WiFi打印机