目录

1 前置概念

2 朴素贝叶斯算法

3 拉普拉斯平滑

4 总结


1 前置概念

  • 先验概率:在不知道事务特征的情况下,根据以往的经验,判断出这件事发生的概率,这个概率就是先验概率,即:
  • 后验概率:与先验概率相对应,是知道了事务特征判断出来的从而得出的事件发生的概率就是后验概率,即:
  • 联合概率:两件事同时发生的改率,比如A发生且B发生,可以写作:
  • 贝叶斯定理:贝叶斯定理起初是为了解决逆概率的问题,通过现象倒推本质,比如,如果在一个黑箱里摸球,箱中有3个红球7个黑球,可以轻易得出摸出红球的概率是0.3,现在假设不知道盒中有多少个黑球多少个红球,通过不断的摸球,不断的计算,摸球,再修正自己的结果,最终可以预测到黑盒中红球和黑球的比例。

贝叶斯公式如下:

分析这个公式,可以得到很多有意思的事情。首先叫做先验概率,叫做后验概率,而剩余的部分则剩下了:,观察这个部分,因为我们知道,条件概率公式是:,即两事件的联合概率比上作为条件的那个事件单独的概率,带入条件概率公式可以得到剩余部分变成了:

此时,分析A事件和B事件的关系可以得到:

  • 当A,B相互独立的时候,,此时,后验概率就等于先验概率。
  • 当A,B相交时,两者存在重叠部分,,此时,后验概率就小于先验概率。
  • 当A,B相包含时,,或,此时,后验概率就大于于先验概率。

画出文氏图可以很清楚的看出这三种情况:

因此这个剩余部分起到一个修正先验概率的作用,因此叫做可能性函数。

2 朴素贝叶斯算法

朴素贝叶斯是一种生成式模型,是在贝叶斯算法上做了简化,即假设定给定目标值的条件下,各个特征相互独立,这个简化使得各个特征对分类结果的影响较为平均,一定程度上降低了分类器的分类效果,但是极大的简化了算法的复杂度。引入CS229中的例子做解释。

使用朴素贝叶斯做垃圾邮件的分类器,首先构建特征向量,用特征向量来描述一封邮件。选取字典或者历史邮件中嘴常用的10000个词,一封邮件中出现的词标为1,未出现的词标为0,这样就得到了一个10000维的向量,每个元素的值为0或1,这个向量就是可以用来描述一封邮件的特征向量。

其中, 是向量中第 i 个元素,

目标是建模计算出  和  ,然后根据这两项计算出,这样就可以使用贝叶斯公式计算出后验概率了。首先使用朴素贝叶斯的假设,假设  给定  的情况下,是相互独立的,因此:

模型参数化:

由此写出联合似然函数:

使用极大似然估计法求解得到:

因此,使用贝叶斯公式计算概率如下:

由此计算出后概率,选择后验概率最高的类就是朴素贝叶斯的分类结果。

但是这个计算方法有一个致命的问题,就是假如有一个单词第一次出现,他在特征向量中的索引是  (随便取的字母无特殊含义),那么 ,也就是说,这就导致带入贝叶斯公式后分子分母均为0,导致模型崩溃。

3 拉普拉斯平滑

为解决上提到的问题,引入了Laplace Smoothing。假设y的取值有k个,引入之后公式做如下调整:

即在分母加上y的取值范围大小,在分子加上1,分子+1是防止概率为0,分母+分类数是为了使得所有概率相加等于1。

修正各分量的公式如下:

4 总结

朴素贝叶斯是一个非常简单,非常 “quick and dirty” 的算法,他不需要多次迭代来学习数据,只需要计数就可以得出预测结果。写完这个博客感觉有点不知所云,所以我再来总结一下。

首先朴素贝叶斯最核心的一个思想就是朴素贝叶斯假设,也叫做条件独立性假设。朴素贝叶斯是一个最简单的概率图模型之一,概率图模型去解释最为简单明了,是一个y到x的有向概率图。或者也可以简单理解为在给定目标值y的情况下,各个特征x之间是相互独立的,用上面的例子解释就是,在一封邮件中,假设各个单词的出现概率是相互独立的,一个单词的出现对其他单词没有影响。这个假设的唯一目的就是为了简化计算,当特征数量足够多的时候,如果不使用这个假设,计算量会十分庞大。公式如下:

整个预测的核心方法就是使用贝叶斯定理对后验概率进行计算,就是计算在给定特征的条件下,预测目标取得各个目标值的概率:

其中,y如果取值是0或1,则是服从伯努利分布,如果y的取值范围为多个类别,则是服从类别分布(categorial distribution);如果x是离散型,则同样,两个特征则x服从伯努利分布,多个特征则x服从类别分布;如果x是连续型,则服从高斯分布。根据这些假设便可用MLE估计出,然后用贝叶斯公式就可以计算出后验概率了。

概率生成模型-朴素贝叶斯(Naive Bayes)相关推荐

  1. 朴素贝叶斯(naive bayes)

    朴素贝叶斯(naive bayes) 标签: Python 机器学习 主要參考资料:<机器学习实战><统计学习方法> 1.朴素贝叶斯分类原理 朴素贝叶斯法是基于贝叶斯定理和特征 ...

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

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

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

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

  4. 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇

    [手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...

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

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

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

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

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

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

  8. 朴素贝叶斯(Naive Bayes),“Naive”在何处?

    加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法(Naive Bayes). Naive的发音是"乃一污",意思是"朴素的"."幼稚的".&q ...

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

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

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

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

最新文章

  1. vscode快速注释_Python快速入门(一)
  2. 2019年上半年收集到的人工智能自然语言处理方向干货文章
  3. 走近酷点KoolPoint,让我们深度挖掘网管软件的设计细节
  4. 在ubuntu14.04 64位虚拟机中安装mysql
  5. android 区分系统应用,Android区分系统应用和安装应用
  6. AI视觉在教育场景中的创新应用
  7. 数据结构与算法--解决问题的方法-顺时针打印矩阵
  8. 帧同步和状态同步(二)案例分析
  9. 利用Sqoop在数据库和Hive、HDFS之间做ETL操作
  10. php自动发邮件系统,一个简单的自动发送邮件系统(二)_php基础
  11. h5文字垂直居中_CSS居中的常用方式以及优缺点
  12. oracle导数据不释放内存,关于ORACLE数据库delete后释放空间问题
  13. CheckBoxPreference--数据存储
  14. windscribe使用方法详细指导【新手入门手把手教程】
  15. 传递闭包c语言算法解析,找关系的传递闭包 用c语言编 一个关系的传递闭包
  16. 未联网环境下:离线安装Zsh和Oh My Zsh
  17. python 档案管理系统_用Python编写人才档案管理系统?
  18. 自监督学习中的 Contrastive Learning 对比学习(持续更新)
  19. 基于Java毕业设计大学生兼职网站源码+系统+mysql+lw文档+部署软件
  20. pcb排版技巧_借鉴大师的排版技巧

热门文章

  1. 建站篇-用户认证系统-管理员登陆后台
  2. 快递如何筹备双十一:德邦快递另类营销
  3. 关于EL表达式中requestScope和param区别
  4. Java- String类概述
  5. linux 使用 ioctl 参数
  6. HDU4812 D tree 【点分治 + 乘法逆元】
  7. Django_基本配置保存
  8. MSSQL自动备份数据库(转载)
  9. 一步步学Qt,第九天-QSTL与STL-Qvector,vector
  10. 孙鑫VC学习笔记:第十一讲 (二) 图形的保存与重绘方法一