目录

先验概率与后验概率

条件概率公式、全概率公式、贝叶斯公式

什么是朴素贝叶斯(Naive Bayes)

拉普拉斯平滑(Laplace Smoothing)

应用:遇到连续变量怎么办?(多项式分布,高斯分布)

Python代码(sklearn库)

先验概率与后验概率

引例

想象有 A、B、C 三个不透明的碗倒扣在桌面上,已知其中有(且仅有)一个瓷碗下面盖住一个鸡蛋。此时请问,鸡蛋在 A 碗下面的概率是多少?答曰 1/3。

现在发生一件事:有人揭开了 C 碗,发现 C 碗下面没有蛋。此时再问:鸡蛋在 A 碗下面的概率是多少?答曰 1/2。注意,由于有“揭开C碗发现鸡蛋不在C碗下面”这个新情况,对于“鸡蛋在 A 碗下面”这件事的主观概率由原来的 1/3 上升到了1/2。这里的先验概率就是 1/3,后验概率是 1/2。

也就是说“先”和“后”是相对于引起主观概率变化的那个新情况而言的。

条件概率公式、全概率公式、贝叶斯公式

条件概率公式:

在事件B发生的条件下,A发生的概率

换一种写法:

理解了条件概率公式后,用一个引例介绍后面两个公式:村子里有三个小偷

,事件B={村子失窃},已知小偷们的偷窃成功率依次是

,除夕夜去偷的概率依次是

全概率公式:

求:村庄除夕夜失窃的概率

贝叶斯公式:

求:在村子失窃的条件下,偷窃者是某个小偷的概率

什么是朴素贝叶斯(Naive Bayes)

引例

有一个训练集包含100个人,特征1是皮肤颜色(黑、黄)、特征2是个人资产情况(富、穷),标记是地区(非洲、亚洲)。在训练集中有60个非洲人(黑穷*47, 黑富*1, 黄穷*11, 黄富*1),有40个亚洲人(黑穷*1, 黄穷*32, 黄富*7)。请分别训练一个朴素贝叶斯模型。(作者这里不存在任何人种歧视的观点)

先计算先验概率:

再计算每一个特征的条件概率:

到此,已经完成了朴素贝叶斯模型所有参数的计算,模型学习完毕。

假设新来了一个人,他的特征是【[黑,穷],地区=?】,请用朴素贝叶斯模型预测一下他的地区。

根据计算结果,模型会将这个人的地区预测为非洲。

二娃:你这个例子扯了这么半天,虽然我看明白了整套训练和预测的过程,可是,如何哪里体现了“朴素”和“贝叶斯”呢?

先说“朴素”,在例子中的体现就是:假设特征间是独立的(忽略皮肤颜色和资产情况的联系)。从而变成了“低配版的贝叶斯模型”,称为“朴素贝叶斯”。优点是可以减少需要估计的参数的个数;缺点是会牺牲一定的分类准确率。

再说“贝叶斯”,例子中公式的推倒都是朴素贝叶斯,如果是贝叶斯的话预测的公式是:

可以发现,朴素贝叶斯模型需要计算的参数个数为:

是线性增长的;而贝叶斯模型需要计算的参数个数为:

是指数增长的,实际是不可行的。

翠花:能不能用简练的语言叙述朴素贝叶斯的工作原理?

训练:先根据数据集,计算标记(地区)的先验概率,再计算每一个特征(肤色和财产)的条件概率。

预测:当一个训练集外的黑穷人来报道,假设特征间是独立的,朴素贝叶斯模型会预测他的老家是非洲的,原理就是“非洲人里黑人的比例 * 非洲人里穷人的比例 > 亚洲人里黑人的比例 * 亚洲人里穷人的比例”。这个乘积其实就是后验概率,贝叶斯模型会将实例分到后验概率最大的类中。

李航《统计学习方法》中的定义

朴素贝叶斯(naive Bayes) 法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。

拉普拉斯平滑(Laplace Smoothing)

继续上文的引例,考虑一个这样的问题:如果已知“某人的地区完全依靠其肤色的就能确定,资产情况是一个对判断地区没有参考价值的特征”,当来了一个黑穷人的时候,我们要算

如果根据训练集计算出

,发现(式1)

解决这一问题的方法是使用平滑操作,即令先验概率公式变为:

每个特征的条件概率公式变为:

式子中

,等价于在随机变量各个取值的频数上赋予一个正数,当

时,称为拉普拉斯平滑。

这里附一个李航《统计学习方法》中的例子

应用:遇到连续变量怎么办?(多项式分布,高斯分布)

首先了解下多项式分布、正态分布

多项式分布:

我们扔一个骰子,重复扔n次,点数1~6的出现次数分别为(x1,x2,x3,x4,x5,x6)时的概率构成多项式分布。

正态分布(高斯分布):

正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

引例中的朴素贝叶斯模型假设特征的条件概率分布满足多项式分布。

当特征是连续变量的时候,运用多项式朴素贝叶斯分类器模型就会导致很多待估测的参数是0(不做平滑的情况下),此时即使做平滑,所得到的条件概率也难以描述真实情况。所以处理连续的特征变量,应该采用高斯朴素贝叶斯分类器模型(假设特征的条件概率分布满足正态分布)。

举个例子(维基百科):

我们要做一个性别分类,观测的特征包括:身高、体重、脚的尺寸。

现有训练集:

根据训练集计算一些参数:

要对测试集进行性别预测:

计算过程:

结果:预测为女性的概率高于预测为男性的概率,因此,将其预测为女性。

Python代码(sklearn库)

#-*- coding: utf-8 -*-

importnumpy as npfrom sklearn.datasets importload_irisfrom sklearn importnaive_bayes

iris=load_iris()

trainX=iris.data

trainY=iris.target

clf=naive_bayes.GaussianNB() #高斯分布,没有参数#clf=naive_bayes.MultinomialNB() #多项式分布

clf.fit(trainX,trainY)print "训练准确率:" +str(clf.score(trainX,trainY))print "测试准确率:" +str(clf.score(trainX,trainY))'''训练准确率:0.96

测试准确率:0.96'''

python贝叶斯模型_【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)...相关推荐

  1. python词频统计代码_机器学习必备宝典-《统计学习方法》的python代码实现及课件...

    <统计学习方法>可以说是机器学习的入门宝典,许多机器学习培训班.互联网企业的面试.笔试题目,很多都参考这本书.本站根据网上资料用python复现了课程内容,并提供本书的代码实现.课件下载. ...

  2. python print rdd_【Spark机器学习速成宝典】基础篇02RDD常见的操作(Python版)

    #-*-coding=utf-8 -*- from pyspark importSparkConf, SparkContext sc= SparkContext('local')#map(func): ...

  3. 【机器学习速成宝典】模型篇02线性回归【LR】(Python版)

    目录 什么是线性回归 最小二乘法 一元线性回归 多元线性回归 什么是规范化 Python代码(sklearn库) 什么是线性回归(Linear regression) 引例 假设某地区租房价格只与房屋 ...

  4. 白话 贝叶斯公式_【白话机器学习】算法理论+实战之朴素贝叶斯

    来自于: AI蜗牛车团队(作者:Miracle8070) 公众号: AI蜗牛车 原文链接:[白话机器学习]算法理论+实战之朴素贝叶斯​mp.weixin.qq.com 有兴趣的同学可以关注我的公众号: ...

  5. 【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯

    [阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文介绍了机器学习中的朴素贝叶斯的基本原理,并对3种贝叶斯模型根据鸢尾花实例进行了比较. 目录 朴 ...

  6. [python机器学习及实践(2)]Sklearn实现朴素贝叶斯

    1.朴素贝叶斯简介 朴素贝叶斯(Naive Bayes)是一个基于贝叶斯理论的分类器.它会单独考量每一唯独特征被分类的条件概率,进而综合这些概率并对其所在的特征向量做出分类预测. 因此,朴素贝叶斯的基 ...

  7. 【白话机器学习】算法理论+实战之朴素贝叶斯

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  8. 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)

    第4章 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础--贝叶斯定理.最后,我们 ...

  9. 机器学习实战刻意练习 —— Task 02. 朴素贝叶斯

    机器学习实战刻意练习 第 1 周任务   分类问题:K-邻近算法   分类问题:决策树 第 2 周任务   分类问题:朴素贝叶斯   分类问题:逻辑回归 第 3 周任务   分类问题:支持向量机 第 ...

最新文章

  1. 基于Spring boot 2.1 使用redisson实现分布式锁
  2. 利用Sql Server2005发送邮件
  3. linux在shell中获取系统时间,linux在shell中获取时间
  4. Namespace declaration statement has to be the very first statement in the script
  5. 字符url编码_HTML URL编码字符参考
  6. 使用SQL Server更改跟踪创建SQL Server审核
  7. 日立电梯服务器显示地址偏移异常,日立电梯所显示的故障报警代码
  8. Qt 5.15版本安装教程
  9. html过滤检索类似excel,利用jQuery实现仿Excel表格排序筛选代码
  10. 【三色N95pro显示器驱动板烧录-维修小记】
  11. 世人笑我太疯癫,我笑他人看不穿
  12. 商贸零售行业2021年投资策略:市场下沉、渠道效率升级,新品牌新业态乘风而起
  13. Handle初解,看完你就懂了handle
  14. 从头开始,彻底理解服务端渲染原理
  15. 图像处理笔试题面试题
  16. 华为G520联通版刷机包 新蜂V2.3 基于官方精简优化 稳定流畅
  17. 20180925_Python练习题-三:一个商场在降价促销。如果购买金额50~100元(包含50元和100元)之间,会给10%的折扣;如果购买金额大于100元,会給20%折扣。编写一程序,询问购买价
  18. 第一步商用计算机,清华同方T46H博仕商用笔记本u盘把win7系统改为win10系统的操作步骤...
  19. day1学习vue2笔记 vue指令
  20. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

热门文章

  1. mysql用18位存储uuid_MySQL中存储UUID的最佳实践
  2. 使用OpenCV对工业相机进行视频录制
  3. java写excel文件,报Warning: MS Office Drawing on sheet Sample not supported - omitting
  4. MQ-2气体传感器特性解析
  5. android 右边抽屉,Android实现右边抽屉Drawerlayout效果
  6. 应聘高级Android工程师历程感言,大厂面试题汇总
  7. android美图软件推荐,Android摄影软件推荐:美图秀秀与魔图精灵等
  8. Linux中在Virtualbox 5.0上安装Windows10
  9. 灰度变换——对数变换
  10. 小程序+音视频2:live-player