引子:

1、孩子的性别问题

已知一对夫妻生了2个孩子,其中一个是女孩,那么另一个也是女孩的概率的多少?

普遍大家会觉得生男生女都一样,所以另一个也是女孩的概率是1/2。而另一部分稍微聪明一点的人认为:根据排列组合,两个孩子生男生女一共有4种可能性,所以都是女生的概率是1/4。

然而恭喜你们,完美得避开了正确答案。

我们来看看这究竟是怎么一回事,不考虑数学公式,我们来看看两个孩子中其中一个是女孩的可能性有哪些。

首先,小夫妻生了老大和老二,但题干中并没有说明哪个是女孩。

给出所有生孩子可能出现的情况:

(老大,老二) = { 男男, 女女, 男女, 女男 };

在其中,出现女孩的情况有三个:

{女女, 男女, 女男 };

在这三种情况里,满足其中一个是女孩,那么另一个也是女孩的情况只有一种。

所以正确答案是1/3;

用条件公式概率公式来描述:

思路1:

即:在其中一个是女孩的情况下,夫妻生的双胞胎都是女孩的概率是1/3。

思路2:

P(AB) :表示两个都是女孩的概率 = 1/4;

P(B):其中一个是女孩 = 3/4;

请将这两个红色的公式深深得植入大脑后开始本章的学习。

2、古典概率中著名的三门问题

参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率?

数学公式分析:

第一次选中车,第二次中选车的联合概率,用公式表达:

P(1车,2车) = 第一次选中车的概率 × (第一次选中车的条件下,第二次还选中车的概率);用公式表达:

分析:第一次抽到车的概率1/3,第二次如果换抽到车的概率是0。

同理:第一次选中羊,第二次选中车的联合概率公式:

分析:第一次抽到羊的概率2/3,第二次抽如果换,必然抽到车。

获奖概率:P(2车) - 如果第二次换门,抽奖获得车的概率。

同理,如果第二次换门,抽奖获得羊的概率:P(2羊)

结论:从概率角度来看,换个门是有价值的。

衍生一个问题:一共1000个门里,有999只草泥马,只有一辆劳斯莱斯。

你选了一扇门后,我去掉了另外998个装有草泥马的门。

现在剩下一扇你刚才选的门,以及另外一扇没有打开的门。

现在你换不换?

傻子才不换...

例子想要说明的重点:

在给定条件的情况下,很多生活中看似显而易见的概率问题会发生重大的变化。

在模型求解的过程中,会遇到2种问题:判别式模型和生成式模型。

判别式模型: P(Y|X) - 条件概率,即在发生了X的条件下,生成了Y的概率。

生成式模型: P(X,Y) - 联合概率,即考虑X和Y同时发生的概率。

很多模型都是基于判别式和生成式进行构建的。很多分类的问题用的是判别式模型。聚类问题多数采用生成式模型。

一、贝叶斯定理相关公式

先验概率P(A):在不考虑任何情况下,A事件发生的概率。

条件概率P(B|A):A事件发生的情况下,B事件发生的概率。

后验概率P(A|B):在B事件发生之后,对A事件发生的概率的重新评估。

有时候 P(B|A) 不太好求,但右边式子中的情况都比较好求,这时候可以通过贝叶斯公式转化问题:

P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A)

贝叶斯公式

全概率:如果A和A'(A的补集)构成样本空间的一个划分,那么事件B的概率为:A和A'的概率分别乘以B对这两个事件的概率之和。

例子中的:

就是求全概率的一种情况。

即:

基于条件概率的贝叶斯定律数学公式:

例子:后验概率问题 - P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A);

有两个碗,第一个碗中装有30个水果糖和10个巧克力糖,第二个碗中装有20个水果糖和20个巧克力糖,现在随机选择一个碗,从中取出一颗糖,发现是水果糖,请求出这颗水果糖来自一号碗的概率有多大?

思路:

1、已知每个碗中取出水果糖的概率,已知每次选碗也是随机。

2、那么先求出随机取碗条件下,取出是水果糖的全概率。

3、再根据P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A) 公式反推后验概率问题:水果糖来自一号碗的概率有多大。

二、朴素贝叶斯算法

朴素贝叶斯(Naive Bayes, NB)是基于“特征之间是独立的”这一朴素假设,应用贝叶斯定理的监督学习算法。朴素贝叶斯本质就是一个分类算法。

对应给定的样本X的特征向量x1,x2,...,xn;该样本X的类别y的概率可以由贝叶斯公式得到:

朴素贝叶斯算法推导:

特征属性之间是独立的,所以得到:

在给定样本的情况下,P(x1,x2,...,xm)是常数,所以得到:

P(x1,x2,xn)是一个定值,所以式子左右成正比

从而:

用TF-IDF分词和词袋法来分析上述公式的应用:

分析 - 朴素贝叶斯算法

朴素贝叶斯算法流程/定义如下:

1、设x={a1,a2,...,an}为待分类项,其中a为x的一个特征属性。

2、类别集合为C={y1,y2,...,yn};

3、分别计算P(y1|x),P(y2|x),....,P(yn|x)的值(贝叶斯公式)

4、如果P(yk|x)=max{P(y1|x),P(y2|x),....,P(yn|x)},那么认为x为yk类型。

三、高斯朴素贝叶斯

Gaussian Naive Bayes是指当特征属性为连续值时,而且分布服从高斯分布,那么在计算P(x|y)的时候可以直接使用高斯分布的概率公式:

因此只需要计算出各个类别中此特征项划分的各个均值和标准。

P(xk|yk) 怎么求?

1、先找到yk这个分类结果的样本,找到这些样本对应的xk属性,求这些xk的均值和标准差,最后代入g(x,η,σ);

2、分别计算P(x1|yk)× ....× P(xn|yk) × P(yk)的值,这个公式和P(yk|x1,x2,...,xn)成正比;

3、当分类个数为m个时,分别计算k=1~m的 P(x1|yk)× ....× P(xn|yk) × P(yk)的值,取其中最大概率时的K值,即最终的分类结果。

四、伯努利朴素贝叶斯

Bernoulli Naive Bayes是指当特征属性为离散值时,而且分布服从伯努利分布,那么在计算P(x|y)的时候可以直接使用伯努利分布的概率公式:

伯努利分布是一种离散分布,只有两种可能的结果。1表示成功,出现的概率为p;0表示失败,出现的概率为q=1-p;其中均值为E(x)=p,方差为Var(X)=p(1-p);

五、多项式朴素贝叶斯

Multinomial Naive Bayes是指当特征属性服从多项分布,从而,对于每个类别y,参数为θy=(θy1,θy2,...,θyn),其中n为特征属性数目,那么P(xi |y)的概率为θyi; 该算法一般用于文本分类。

分析和总结:

如果数据中既有连续的特征,又有离散的特征,我们该如何去做分类?

本质上来说,我们计算的是每一个特征对应的概率。如图:

当遇到连续值特征时,我们用高斯去算P(xi|y)。

遇到离散值特征时,我们用多项式或伯努利去算P(xi|y)。

但问题是我们的API中没有自动得集成这些功能,在这种情况下该怎么去做分类呢?

首先,我们要人为得去分析特征到底属于什么类型的数据。如果特征是一个连续值比较多的数据集,我们统一使用高斯就行了。反之统一用用多项式或伯努利。或者高级一点,对数据进行分箱操做。

贝叶斯算法c语言,01 贝叶斯算法 - 朴素贝叶斯相关推荐

  1. Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说

    Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报  分类: 机器学习(19)  听说朴 ...

  2. matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)

    原理知道一百遍不如自己动手写一遍,当然,现在基本上不需要自己来写算法的底层code了,各路大神们已经为我等凡夫俗子写好了,直接调用就行. 这里介绍在MATLAB中和Python中应用贝叶斯算法的小例子 ...

  3. python朴素贝叶斯分布对数据的要求_python之朴素贝叶斯对展会数据分类

    1.目的 在公司实习,分别从国内国外两个网站爬取了一些展会数据,在数据处理上目前需要将其按照各个类别分类好,并提供对应展会地址的经纬度. 国内数据如下: 01.png 国内数据比较少,占四百多条,在类 ...

  4. 贝叶斯在计算机视觉中的应用,KNN与朴素贝叶斯在计算机视觉的鱼苗计数中的应用探索.doc...

    KNN与朴素贝叶斯在计算机视觉的鱼苗计数中的应用探索 ( 引言 每年鱼种养殖场或渔农都要根据自己的养殖需要购入鱼苗培育成鱼种,但购买时要做到鱼苗的准确计数很难.有些不法商贩和鱼苗繁殖场往往利用渔农的大 ...

  5. 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及 Python 实现

    相对于「 基于词典的分析 」,「 基于机器学习 」的就不需要大量标注的词典,但是需要大量标记的数据,比如: 还是下面这句话,如果它的标签是: 服务质量 - 中 (共有三个级别,好.中.差) �r(�s ...

  6. 机器学习实验二:朴素贝叶斯和SVM——肿瘤分类与预测(朴素贝叶斯)

    实操项目 1--肿瘤分类与预测(朴素贝叶斯) 实验要求 采用朴素贝叶斯方法,对美国威斯康星州的乳腺癌诊断数据集进行分类,实现针对乳腺癌检测的分类器,以判断一个患者的肿瘤是良性还是恶性. [实验要求] ...

  7. 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及Python实现

    朴素贝叶斯 1.贝叶斯定理 假设对于某个数据集,随机变量C表示样本为C类的概率,F1表示测试样本某特征出现的概率,套用基本贝叶斯公式,则如下所示: 上式表示对于某个样本,特征F1出现时,该样本被分为C ...

  8. matlab绘制贝叶斯曲线,Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

    原文链接:http://tecdat.cn/?p=15508 绘制ROC曲线通过Logistic回归进行分类 加载样本数据.load fisheriris通过使用与versicolor和virgini ...

  9. 最近最久未使用页面置换算法C语言,LRU页面置换算法模拟-最近最久未使用置换算法...

    LRU页面置换算法模拟-最近最久未使用置换算法 LRU页面置换算法模拟-最近最久未使用置换算法|课程设计|计算机数据库课程设计 一.设计目的 1.用C语言实现最近最久未使用(LRU)置换算法. 2.了 ...

最新文章

  1. 【每日一算法】有效的括号
  2. php合并数组中相同的元素
  3. ios腾讯云文件服务器,使用axios 上传文件到腾讯云
  4. java sliplist_Java List retainAll()用法及代码示例
  5. 常用计算机文章搜索方法总结
  6. CC2530, 各种智能家居通信技术比较
  7. HDCMS导航高亮显示!解决办法
  8. web通信 长连接、长轮询
  9. 在iOS设备上如何使用Chrome浏览器的书签
  10. sqlite3学习笔记-方法介绍和测试代码
  11. java 获取dataset_Java OHLCDataset.getX方法代码示例
  12. 深度学习可解释性资料整合
  13. java分布式和集成式_【分布式java应用笔记】分布式与soa
  14. 数据库---基础知识
  15. 计算机网络管理员技师题库那个好,计算机网络管理员高级技师题库.docx
  16. Mariadb 安装 启动 及错误 1067 问题解决
  17. C语言重难点知识梳理与常见题目/项目游戏解析
  18. CCF CSP20190301小中大(100分)(python)
  19. hibernate-validate如何校验controller+service+分组校验+自定义注解实现校验规则等
  20. 高精度1------高精度乘法

热门文章

  1. 嵌入式培训如何学?什么人适合转行嵌入式开发?
  2. android H264(3): 流媒体播放器设计方案
  3. arduino设备跑 ros service server 的波折记
  4. Vue之鼠标悬停显示页面加载时间
  5. 了解利用API接口通过网格策略的增长模式
  6. 中国工业钩环市场深度研究分析报告
  7. 如何打包浏览器的扩展程序
  8. k8s集群二进制部署 1.17.3
  9. 多可文档管理的数据备份
  10. vue支付宝html,vue 解决在微信内置浏览器中调用支付宝支付的情况