说起贝叶斯定理,不得不说条件概率,所谓“条件概率”(Conditional probability),指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。条件概率计算公式为P(A|B) = P(AB)/P(B)。

条件概率公式是一个定义公式,或者说是公理化的,不好证明和推导。只能通过逻辑来理解了,AB都发生的概率可以理解成B发生的概率乘以B发生的情况下A发生的概率,也即P(AB)=P(B)P(A|B),两边除以P(B),得到P(A|B)=P(AB)/P(B)。

举个例子:根据大量数据统计,大熊猫活到十岁的概率是0.8,活到十五岁的概率是0.6,若现有一只大熊猫已经十岁了,则他活到十五岁的概率是多少?

根据条件概率公式:P(15岁|10岁)=P(15岁*10岁)/P(10岁),大熊猫活到十五岁,显然就活过了十岁,所以P(15岁*10岁)=P(15岁),则P(15岁|10岁)=P(15岁)/P(10岁)=0.6/0.8=0.75。

理解了条件概率后,我们再来看看贝叶斯定理。

贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 )提出,即:P(A|B)=P(B|A)P(A)/P(B)。
       有了条件概率公式,贝叶斯定理的推导和证明非常简单。
       根据条件概率定义:

P(A|B)=P(AB)/P(B),同理P(B|A)=P(BA)/P(A)

则:P(AB)=P(A|B)P(B),P(BA)=P(B|A)P(A)

P(AB)表示A、B同时发生的概率,P(BA)表示B、A同时发生的概率,根据交换律,P(AB)=P(BA)

所以,P(A|B)P(B)=P(B|A)P(A)

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

贝叶斯定理本身和其证明过程都简单明了,看起来不起眼,但在实际应用中却显示出了令人吃惊的强大!

在举实例之前,先了解下贝叶斯定理中的一些概念,把贝叶斯公式作下变形,得到如下形式:

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

其中,把P(A)称为“先验概率”(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为“后验概率”(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为“调整因子”,调整因子可以大于1,也可以小于1,即B事件发生后,对A事件发生的概率是增强作用还是削弱作用。

即贝叶斯定理可表述成:

后验概率 = 调整因子 * 先验概率

当然还有把P(B|A)称为“似然度”,P(B)称为“标准化常量”等。但个人认为不掺杂太多的概念,先把贝叶斯定理理解成“后验概率 = 调整因子 * 先验概率”的方式更利于对该定理的理解。

贝叶斯定理在做判断上的应用:

(1)有两个碗,1号碗里有30颗水果糖和10块巧克力糖,2号碗里有20颗水果糖和20块巧克力糖。然后把碗盖住。随机选择一个碗,从里面摸出了一颗水果糖。问题:这颗水果糖来自1号碗的概率是多少?

我们希望得到概率P(1号碗|水果糖),但怎样进行计算并非显而易见。问题如果换成在1号碗中水果糖的概率则简单的多,P(水果糖|1号碗)=30颗水果糖/(30颗水果糖和10块巧克力糖)=3/4,但可惜的是条件概率并不满足交换律,P(1号碗|水果糖)和P(水果糖|1号碗)并不相同。有时,如果P(A|B)不好计算,而P(B|A)较好计算,那么可以试试贝叶斯定理,提供一种从P(B|A)得到P(A|B)的方法。

P(1号碗|水果糖)=(P(水果糖|1号碗)/P(水果糖))*P(1号碗)

1).P(水果糖|1号碗)前面算过=3/4;

2).两个碗的选择是随机的,所以P(1号碗)=1/2;

3).P(水果糖),两个碗总糖果数是30颗水果糖+10块巧克力糖+20颗水果糖+20块巧克力糖=80,水果糖的数量是30+20=50,因此P(水果糖)=50/80=5/8;(注意这里是特例,因为选择两个碗的机会相等,两个碗中糖果的数量又都一样,一般情况下需要使用全概率公式计算。)

4).因此,P(1号碗|水果糖)=((3/4)/(5/8))*(1/2)=3/5。

5).这个例子我们需要关注的是信息条件:抓出的是水果糖。如果没有这个条件的存在,先验概率P(1号碗)=1/2(50%),有个这个条件后,后验概率提升到了3/5(60%)。

看到这里,很多朋友就要问了,能解决这个例子又有什么用呢?现实世界可不是摸个水果糖这么简单。我们再看下一个例子:

(2)北京地区肝癌发病率为万分之四(0.0004),使用甲胎蛋白法检测,患者确实得病的情况下,99%呈现阳性,患者没有得病的情况下,0.1%呈现阳性。现在一个患者肝癌检测出阳性,问题:该患者患肝癌的概率是多少?

我们把这两个应用对应下:

有两个碗(一个患肝癌碗,一个不患肝癌碗),1号碗里有水果糖99个(阳性糖99个),巧克力糖1个(阴性糖1个),2号碗里有水果糖1个(阳性糖1个),巧克力糖999个(阴性糖999个),随机选择一个碗,从里面摸出了一颗水果糖(阳性糖)。问题:这颗水果糖(阳性糖)来自1号碗(患肝癌碗)的概率是多少?

看到没,除了水果糖和巧克力糖的数量不一样,其他是不是一模一样的!

我们来计算下:

P(患肝癌|阳性)=(P(阳性|患肝癌)/P(阳性))*P(患肝癌)

1).P(阳性|患肝癌)=0.99;

2).P(患肝癌)=0.0004

3).P(阳性)的计算稍微复杂些,在这第二个例子中,患肝癌碗和不患肝癌碗的选择机会是不均等的,2个碗中糖果的数量也不一样。一般的,采用全概率公式来计算P(B)。设事件A为患肝癌,A-为不患肝癌,显然A和A-是互斥和完备的,构成全集空间,则根据全概率公式(推导过程见最后):P(B)=P(A)P(B|A)+P(A-)P(B|A-)。P(阳性)=P(患肝癌)P(阳性|患肝癌)+P(不患肝癌)P(阳性|不患肝癌)=0.0004*0.99+(1-0.0004)*(0.001)=0.001392

4).因此,P(患肝癌|阳性)=(P(阳性|患肝癌)/P(阳性))*P(患肝癌)=((0.99)/(0.001392))*(0.0004)=28.45%。

上面疾病检测的例子在网上有很多,基本都从“假阳性”的方面说明阳性结果不足以说明病人得病。但从贝叶斯思想的角度上看,患肝癌的先验概率P(患肝癌)=0.0004(0.04%)的概率很低,在检测结果呈阳性事件发生后,患肝癌的后验概率达到了28.45%,即呈阳性的事件大大增强了患肝癌的概率,这时候需要的是引起高度重视。当然,从结果上看,检测结果呈阳性而真实患肝癌的概率不到30%,这也是为什么肝癌检测第一次呈阳性的人,还需要做第二次检测的原因。

附:全概率公式的推导

设红色部分A和绿色部分A-构成全集空间S。

则B可分为2部分:白色斜线部分和黑色横线部分。这两部分分别等于P(BA)和P(BA-)。

因此,P(B)=P(BA)+P(BA-),根据条件概率公式:

P(B|A)=P(BA)/P(A),P(B|A-)=P(BA-)/P(A-),则:

P(BA)=P(B|A)P(A),P(BA-)=P(B|A-)P(A-)

所以:P(B)=P(B|A)P(A)+P(B|A-)P(A-)

参考文献:

(1)贝叶斯推断及其互联网应用(一):定理简介http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html

(2)精准的判断,离不开精准的概率计算:《得到App》-《卓老板聊科技》

用于精准判断的贝叶斯定理相关推荐

  1. kdj值应用口诀_KDJ买卖绝学!记住这些操作 精准判断quot;顶部和底部quot; 让你远离亏损...

    人们往往都"反感自己的行为遭到否定".因为当"自己的行为"和"周围的信息"之间产生分歧时,人们便会感到很痛苦.为了逃避这种痛苦,人们往往会把 ...

  2. jsf用于页面判断的标签_用于操作和导航的JSF命令组件标签

    jsf用于页面判断的标签 JSF provides two command component tags for performing action and navigation. They are ...

  3. jsf用于页面判断的标签_JSF –在JSF视图页面中添加标签,图像,按钮和文本字段

    jsf用于页面判断的标签 There are various UI components that JSF framework includes by default. Let us see some ...

  4. python- 工作/休息/调休日怎么精准判断

    python的第三方模块chinesecalendar,提供了判断工作日.休息日.节假日的方法. 不仅可以判断法定节假日,还可以返回节假日的名称,对调休日也可以做出判断,十分好用. 具体用法如下: 1 ...

  5. 垃圾邮件是如何用贝叶斯方法过滤掉的

    垃圾邮件曾经是一个令人非常头痛的问题,长期困扰着邮件运营商和用户.据统计,在2005年,用户收到的电子邮件中80%以上是垃圾邮件. 但你有没有感觉到,这些年来,你收到的垃圾邮件越来越少了,甚至已经几乎 ...

  6. 原生JS大揭秘—数据类型

    JS中九个内置对象 在ECMAScript规范(ES5)中定义了六种数据类型: 其中原始值类型有5种,引用类型有1种 (一)Number (有包装对象 - new Number()) 数值型,包括整形 ...

  7. 计算机用于尖端科技,【判断题】用演绎法教问句的方法适用于中高级型学生

    参考答案如下 判断[单选题]石挡土墙的工程计算规则是按设计图示尺寸以( )计算. 题用[单选题]一个完整的认识的过程,需要经过两次飞跃.下列选项中属于第二次飞跃的是 ( ) 演绎用于[多选题]出纳人员 ...

  8. python中的成员运算符用于判断指定序列_Python中的成员运算符用于判断指定序列中是否包含某个值。...

    [多选题]下列关于鲜活商品的说法哪些是正确的 [单选题]企业接受新投资者投资时其实际缴纳的出资额大于其所享有注册资本所占份额的部分应计入 [单选题]企业的管理费用.财务费用和销售费用应属于企业的[   ...

  9. 支持快速精准纳米孔新型冠状病毒测序的ARTIC Network工作流

    自新型冠状病毒爆发以来,Oxford Nanopore Technologies一直致力于和中国及全球的公共卫生实验室共同协作,支持新型冠状病毒的测序工作. 2020年2月5日,首个基于ARTIC快速 ...

最新文章

  1. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除
  2. C Primer Plus_第8章_字符输入输出和输入确认_编程练习
  3. cpu java poi 导出_java基于poi导出excel透视表代码实例
  4. HDU 2094 产生冠军 (map容器)
  5. 移动银行木马活跃度升级 恐成黑客攻击跳板
  6. Algorithm:C++语言实现之分治法相关问题(给定实数x和整数n,分治法求xn)
  7. target evaluations
  8. kafka性能测试(转)KAFKA 0.8 PRODUCER PERFORMANCE
  9. 【软件测试】软件测试札记
  10. PHP字符串offset取值特性
  11. 诱导公式的本质【转载】
  12. flutter 拖拽布局_使用Flutter模仿SOUL可任意拖动的悬浮按钮
  13. ActiveMQ_2安装
  14. FPGA与CPLD的区别
  15. Mysql 的uuid()函数以及replace()函数使用
  16. 考研经验-东南大学软件学院软件工程(这些基础课和专业课的各种坑和复习技巧你应该知道)
  17. yytext table html,展开label,利用YYText实现文字显示不完末尾添加全文
  18. 偏最小二乘法_实例讲解:简明扼要最小二乘法计算过程
  19. 所有程序员都应该知道的 6 个软件开发步骤
  20. 使用代理服务器哪些风险?

热门文章

  1. 如何通过缓存来提升系统性能
  2. 蓝桥杯java第三届决赛第一题--星期日
  3. web项目的中绝对路径和相对路径
  4. 使用CSS样式对表格进行美化并对伪类的使用进行解析
  5. 网络爬虫初步:从访问网页到数据解析
  6. Redis之GEO存储地理位置信息
  7. Redis之慢查询分析
  8. Oracle 的关联子查询(correlated subquery) 简介.
  9. opensuse 升级内核
  10. mysql 1366 utf8_mysql出现ERROR 1366 (HY000):的解决办法