贝叶斯公式设b_数据分析经典模型——朴素贝叶斯

编辑导语:做过数据分析的人,想必对贝叶斯模型都不会陌生。贝叶斯预测模型是运用贝叶斯统计进行的一种预测,不同于一般的统计方法,其不仅利用模型信息和数据信息,而且充分利用先验信息。通过实证分析的方法,将贝叶斯预测模型与普通回归预测模型的预测结果进行比较,结果表明贝叶斯预测模型具有明显的优越性。

48d7eeac0e582b7c757d95bba78b22d7.png

说到贝叶斯模型,就算是不搞数据分析的都会有所耳闻,因为它的应用范围实在是太广泛了。

大数据、机器学习、数据挖掘、数据分析等领域几乎都能找到贝叶斯模型的影子,在疾病诊断、金融投资、日常生活中也都会用到。

贝叶斯公式不仅可以帮助人们确定导致某一事件发生的最可能的原因,而且在数量上刻画了随着新信息的加入,人们对一个事物的认识如何从先验概率过渡到后验概率。

要了解贝叶斯,我们先来看看条件概率。

一、条件概率

条件概率是指事件A在事件B发生的条件下发生的概率,条件概率表示为:P(A|B)。

来看下面这个例子:

假设现在有一个装了7个石块的罐子,其中4块是红色的,3块是白色的,如图:

eed86f0d9d6de39b2d38770e1e4e852f.png

问题1:如果从罐子中随机取出一块石头,那么是白色的可能性是多少?

回答1:由于取石头有7种可能,其中3块是白色,所以取出白色石头的概率为3/7。

问题2:取出红色的概率是多少?

回答2:很显然,答案是4/7。

我们用P(white)来表示取到白色石头的概率,用P(red)来表示取到红色石头的概率,那么:P(white)=3/7,P(red)=4/7。

很简单,对吧?

问题来了:现在,我们把这7块石头放到两个桶中,上述概率该如何计算呢?

e8f0316e4864ebd13a68c157f0de7542.png

问题分析:要计算P(white)或者P(red),事先得知道石头所在桶的信息会不会改变结果?

假定计算的是从B桶取到白色石头的概率,这个概率可以记作P(white|B),我们称之为“在已知石头出自B桶的条件下,取出白色石头的概率”,这就是条件概率。

从上图可以看出P(white|A)=2/4,P(white|B)=1/3,依然很简单。

条件概率的计算公式如下:

P(white|B)=P(white and B)/P(B)

我们来验证下上述公式:

  • P(white and B)=球是白色且球是从B桶中取到的=1/7;
  • P(B)=从B桶中取到球的概率=3/7;
  • P(white|B)=P(white and B)/P(B)=(1/7)/(3/7)=1/3;

为了方便起见,我们将white替换为A,条件概率可以表示为P(A|B)=P(A and B)/P(B)。

二、贝叶斯公式

知道了条件概率,现在,我们来推算贝叶斯公式:

1. 第一步

条件概率公式两边都乘以P(B),可以得到:

P(A and B)=P(A|B)*P(B)

这个公式表示,条件A 和 B同时发生的概率等于B条件下A事件发生的概率乘以B事件发生的概率。

2. 第二步

顺序调换。假设条件A 和条件B是两个独立的事件,所以我们可以将上述公式顺序调换,即:

P(A and B)=P(B and A)=P(B|A)*P(A)

这个公式表示,条件A 和 B同时发生的概率等于B条件下A事件发生的概率乘以B事件发生的概率。

3. 第三步

重新代入条件概率公式:

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

代入第二步的公式:

P(A and B)=P(B|A)P(A)

可以得到:

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

贝叶斯公式告诉我们如何交换条件概率的条件与结果,即如果已知P(B|A),要求P(A|B),那么可以使用上述计算方法。

上述公式中,每个概率又有不同的说法:

  • P(A)被称为先验概率;
  • P(B|A)被称为后验概率;
  • P(B)被称为全概率。

三、贝叶斯公式的应用

以下摘一段 wikipedia 上对贝叶斯的简介:

所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。

在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。

而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。

这个问题,就是所谓的逆概问题。

贝叶斯是机器学习的核心方法之一。

这背后的深刻原因在于,现实世界本身就是不确定的,人类的观察能力是有局限性的。

沿用刚才那个袋子里面取球的比方,我们往往只能知道从里面取出来的球是什么颜色,而并不能直接看到袋子里面实际的情况。

这个时候,我们就需要提供一个猜测(hypothesis)。所谓猜测,当然就是不确定的,但也绝对不是两眼一抹黑瞎蒙——具体地说,我们需要做两件事情:

以病人的分类为例,某个医院早上收了六个门诊病人,如下表:

872434a0230fd4a78ab47e0a42b7c77e.png

现在又来了第七个病人,是一个打喷嚏的建筑工人,请问他患上感冒的概率有多大?

根据贝叶斯定理:

可得:

ba60c58acbadd09a852afeff3cf18d7e.png

假定”打喷嚏”和”建筑工人”这两个特征是独立的,因此,上面的等式就变成了:

78f99809aff52c447e61dd75fcf4a55b.png

这是可以计算的。

因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒;同理,可以计算这个病人患上过敏或脑震荡的概率,比较这几个概率,就可以知道他最可能得什么病。

这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。

本文由 @CARRIE 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QGraphicsProxyWidget paintEvent(from 1+1 =2)

标题不好取,起源于CSDN中看到有网友提问:如果将一个QWidget同时显示在 QGraphicsView 和其他和view同级的普通的Widget中。 QGraphicsProxyWidget QGraphicsProxyWidget 是为将 QWidget 嵌入到 QGraphicsScene 中而引入的代理。 将 event 在二者之间进行…

Asterisk使用数据库配置方法

安装: 1、安装 unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel ,为了使asterisk支持数据库存储(必须先安装) 2、安装 mysql 并设置好 C_INCLUDE_PATH 和 LD_LIBRARY_PATH 3、从 http://www.asterisk.org/downloads 下载…

linux文件系统_Linux的文件系统简介

inux操作系统的本质可以说就是文件系统的集合,文件系统既包含文件的数据也包含文件系统的结构。在Linux文件系统中,EXT2文件系统、虚拟文件系统、/proc文件系统是三个具有代表性的文件系统。/proc文件系统是一个伪文件系统,它只存在内存当中&…

matlab如何测两点的角度_根据2点经纬度,计算方位角,以及计算2条线的夹角

以真北为0度起点,由东向南向西顺时针旋转360度,主要是用于控制象限。根据2点经纬度,计算方位角[csharp]////// 给定2点,获得经纬度/// /// 起点经纬度,都是以度为单位/// 终点经纬度,都是以度为单位/// pri…

VMWare 环境下devstack创建虚拟机报错及修改nova-api返回数据得条目

1、在生产环境中, 由于某个tenant下创建了有1300条得security-group通过查询nova得数据库可以看出确实有1300条得存在,但是通过curl调用的时候发现返回得数目只有1000条 可以通过修改nova.conf文件得osapi_max_limit 项修改返回得条目限制,默…

使用数据库保存Asterisk sip账号信息(odbc方式)

在默认情况下,Asterisk的配置文件都保存在/etc/asterisk目录中,以ini文件的格式保存。我们也可以使用数据库来保存大多数Asterisk配置信息。 Asterisk使用数据库保存配置信息有两种方法:静态和动态,对于不经常修改的配置数据&…

删除按钮_汪涵拜师学艺第七篇:往来单位查询删除按钮和新增判断的设计!

老师好!大家好!我叫汪涵:今天给大家分享往来单位查询删除按钮和新增判断的设计!在开始具体内容之前,请让我先分享我们的价值观:用自律和勤奋来改变命运,不走捷径,有爱心,…

python requests https_解决python的requests模块访问私有SSL证书产生的报错问题

如题访问部分私有SSL证书网站时报如下错误requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)测试环境kali linux 1.1.0Python 2.7.8python-openssl 0.13-2deb7u1requests 2.3.0测试代码#/usr/bin/python#codingutf-8imp…

Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法

这两天在Ubuntu上安装Oracle把人折腾毁了,即使照着网上的教程来,还是出了很多问题。好在最后终于搞定了。写出来总结一下,免得以后忘了。 标题注明32位是因为网上教程几乎全是以64位安装为例的,32位系统下照着做是绝对会安装失败的…

dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header

话不多说自己看代码封装的比较简单,比较适合入门学习Dio。import package:dio/dio.dart;import Api.dart;/** 封装 restful 请求** GET、POST、DELETE、PATCH* 主要作用为统一处理相关事务:* - 统一处理请求前缀;* - 统一打印请求信息&#x…

解决asterisk sip呼叫 488 no acceptable here

这两天实验了一下asterisk static realtime方案,将sip.conf的信息保存到mysql数据库里。但是呼叫的时候,总是 报 488 no acceptable here。 这是我的sip.conf文件,数据库里和sip.conf文件一模一样,但是就是不行。 [general] c…

怎么安装python3.6.5_Centos7 安装Python3.6.5

一、centos7 安装 Python3.6.5教程1、在安装Python之前,需要先安装一些后面遇到的依赖问题(如果有依赖问题,按照提示安装):yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-d…

关于浏览器模式和文本模式的困惑

什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和文本模式,对于这两个名词,综合相关文档解释如下: 浏览器模式(Browser Mode),用于切换IE针对该网页的…

mysql 关联索引_mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...

情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?根据查询字段的位置不同来决定,如查询a, a,b a,b,c a,c 都可以走索引的&#…

A20 看门狗

前言 说到看门狗,应该不会陌生,看门狗说白了就是一个定时器,但是它有一个非常重要的功能就是复位系统。在A20里,看门狗的操作非常简单,只有两个寄存器,不需要操作时钟相关的东西,系统起来后可以…

python拼接大量ts文件_Python爬取.ts文件,合并为mp4

目标:爬影视网站ts文件到本地,合并成mp4文件下载ts文件本着不重复造轮子的精神(好吧其实是我懒),想用迅雷批量下载爬取,但是迅雷提供的通配符过于简单无法构造URL,只能自己写脚本如下:# -*- coding: utf-8 …

android学习笔记之ProgressDialog的使用

在很多PC软件或手机软件中,我们都会看见 “加载中...” 类似的对话框,当然,在android应用程序中也是如此。如果我们想在android应用程序中使用这样的效果,那么就需要用到ProgressDialog。首先,我们来看一下ProgressDia…

asterisk 互联问题

asterisk A 和asterisk B互联。 A下面有账户1001,B下面有账户2001 当1001呼叫2001时,B的sip.conf里不能有1001。 当2001呼叫1001时,A的sip.conf里不能有2001。 否则,呼叫无法呼叫成功。 下面为截图 实际和在振铃时&#xff0…

清除python shell中的内容_如何使用python脚本定时清空文件内容?

我们一直在对大家强调关于python脚本的使用,但是有部分同学提出疑问,就是关于上期跟大家说的shell脚本没有实质性的使用效果,如果在实际应用里,要怎么使用这个脚本,它又能实现什么效果,其实针对这个内容&am…

ACCESS中不支持left join解决方案

今天在做基于 access数据库项目中,做外连接时,发现Access不支持两个以上的 left join 在网上查一下,有哥们说每个 left join 要加 () 在修改之前(不能执行,ms sql 里执行以通过) select table1.fildes1, table1.fildes2,table2.fildes1, table2.fildes2,table3.fildes…