bayes公式与机器学习 - 再从零开始理解

从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A)

到硕士期间,机器学习课上对P(B|A)P(A)冠以“先验概率”,而不知“先验”二字到底从何而来。

再到工作了几年之后重回校园,重新拾起对求知的热情,重新用向小白讲述Bayes公式的态度,让自己对它有最朴素的理解。尽量让像我一样刚入门的小白同学们,能用生活中最朴素的例子找到bayes公式中,“先验”二字的由来。

要理解bayes公式,需从全概率公式讲起:

\[
P(A_i|B)=\frac {P(B|A_i)P(A_i)}{\displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j)}
\]
其中的全概率公式:
\[
\displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j) = P(B)
\]

这里,可理解:
\(A_j \rightarrow Class_j\) (这是你样本可能从属的类别)
$B \rightarrow Events \space or \space Data $ (这是你看到的样本的表象)

2.进一步理解

2.1 设有一幅扑克牌(这是一种等概率的情况)

摸到一张J,想知道它属于♥️这一类的概率。
这里,A是现象,是观察到的属性。♥️,♣️,♦️,♠️是对所有除了大王小王外的扑克牌的四个类别。
任务就是要根据现象J,对这张牌进行归类,求这张牌属于♥️这一类的概率。

\[
P(A|B) \text{就是看到J的情况下,属于} \heartsuit \text{的概率}
\]
这是我们要求的量。
\[
P(A|B)=\frac {P(B|A)P(A)}{P(B)}
\]
\(P(B|A)\) - 在已知♥️的牌中,有几个J,显然,1/13

\(P(A)\) - 在整副牌中,红桃出现的概率:13/54

\(P(B)\) - 在整副牌中,J出现的概率:4/54
这里这个P(B)可以是如下公式计算的:
\[
\displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j) = P(B)
\]
即,\(A_j\)代表的是♥️,♣️,♦️,♠️中的某一个类别。例如,j=1, 我们认为是♥️,则,P(B|A1) = 1/13
P(A1) = 13/54
此时,
\[
P(B|A_1) \times P(A_1) = \frac1{13} \times \frac {13}{54} = \frac{1}{54}
\]
当 j = 1,2,3,4 时,由于这里每个
$
P(B|A_j)
$
都是相等的,所以
\[
P(B) = 4 \times \frac{1}{54} = \frac{4}{54}
\]
所以,上面的P(A|B) 就能算出来了。因为P(B|A) ,P(A) ,P(B)都知道了。

==以上是一个等概率的问题。更一般地,我们要用Bayes公式解决不等概率、根据观察对对象进行分类的问题。==

2.2 设有三棵橘子树(这是更一般的场景)

有甲乙丙三颗橘子树,到了秋收的季节,老农对他们进行采摘。
第一年:

  • 甲橘子树出来的果子多数都偏红,口感好。
  • 乙橘子树出来的果子多数都普通,口感一般。
  • 丙橘子树出来的果子多数都偏黄,口感不好。

果农从此知道P(A), P(A|B), P(B)

第二年:
       新来的果农和老农一起工作,他们拿起一个橘子,要判断这个果子出自甲乙丙三棵果树里的哪一棵。

找一个案例编程实现

  1. 用Bayes公式完成分类任务的例子

todo.. (网上的例子很多了,就不知道何时来todo了,呵呵)

bayes公式 - 再从零开始理解的更多相关文章

  1. 用bayes公式进行机器学习的经典案例

    用bayes公式进行机器学习的经典案例 从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A) 到硕士期间,机器学习课上对P(B|A)P ...

  2. 从零开始理解JAVA事件处理机制(2)

    第一节中的示例过于简单<从零开始理解JAVA事件处理机制(1)>,简单到让大家觉得这样的代码简直毫无用处.但是没办法,我们要继续写这毫无用处的代码,然后引出下一阶段真正有益的代码. 一:事 ...

  3. 最大似然判别法和Bayes公式判别法

    最大似然判别法 Bayes公式判别法

  4. 从零开始理解JAVA事件处理机制(3)

    我们连续写了两小节的教师-学生的例子,必然觉得无聊死了,这样的例子我们就是玩上100遍,还是不知道该怎么写真实的代码.那从本节开始,我们开始往真实代码上面去靠拢. 事件最容易理解的例子是鼠标事件:我们 ...

  5. 从零开始理解JAVA事件处理机制(1)

    “事件”这个词已经被滥用了.正因为“事件”的被滥用,很多人在用到事件的时候不求甚解,依样画葫芦,导致学习工作了很多年,还是不清楚什么是事件处理器.什么是事件持有者.所以,如果你对于Event这个词还是 ...

  6. 再深刻理解下web3.js中estimateGas如何计算智能合约消耗的gas量

    我们可使用web3.js框架的estimateGas函数获得一个以太坊智能合约的Gas估计值 ,通过执行一个消息调用或交易,该消息调用或交易直接在节点的VM中执行,并未在区块链中确认,函数会返回估算使 ...

  7. 从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

    自从小白向师兄学习了李群李代数和相机成像模型的基本原理后,感觉书上的内容没那么难了,公式推导也能推得动了,感觉进步神速,不过最近小白在学习对极几何,貌似又遇到了麻烦... 小白:师兄,对极几何这块你觉 ...

  8. 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现

    关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.h ...

  9. 【转】你真的理解Python中MRO算法吗?

    你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...

随机推荐

  1. 使用Vivado的block design

    使用Vivado的block design (1)调用ZYNQ7 Processing System (2)配置ZYNQ7系统 (3)外设端口配置 根据开发板原理图MIO48和MIO49配置成了串口通 ...

  2. mha error

    MasterFailover.pm 1473 $ret =1474 $_server_manager->change_master_and_start_slave( $target, $late ...

  3. zabbix moniter

    zabbix moniter http://blog.csdn.net/xiegh2014/article/category/6945291/2

  4. Android adb 模拟滑动 按键 点击事件

    模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: usage: input ... input text <string>       input keyeven ...

  5. 构建Jenkins自动化编译管理环境

    今天研究了一下Jenkins,有了一个粗浅的认识,顺手把构建的过程说一下,后续慢慢补充: (1)Secure CRT 连接到Linux服务器 要注意的一点是,要搞好一个文件传输的路子,否则不好传东西. ...

  6. RTB业务知识之2-Impression概念和关键属性

    一.定义-impression This object describes an ad placement or impression being auctioned. A single bid re ...

  7. C#对Mongodb数组对象操作

    Mongo对数据的存储非常随意,需要修改对象中的数组对象时,就会变得比较复杂. 类中的类对象可以直接通过“.”例如:Department.User.name 类中的对象User是数组时可以用Depar ...

  8. 【推荐】asp.net 页面的生命周期

    当一个页面请求发送到WEB服务器时,不论该事件是由页面提交还是由页面重定向而激发的,页面在其被创建到释放的过程中都会运行一系列的事件.一个ASP.NET页面从被创建到释放的过程包含10个事件. (1) ...

  9. JVM异常之:直接内存溢出

    示例: package com.dxz.jvm; import java.lang.reflect.Field; import sun.misc.Unsafe; /** * @Described:直接 ...

  10. org.apache.ibatis.binding.BindingException: Parameter 'idList' not found解决办法

    https://blog.csdn.net/qq_28379809/article/details/83342196 问题描述 使用Mybatis查询数据库报错: org.apache.ibatis. ...