bayes公式 - 再从零开始理解
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)
第二年:
新来的果农和老农一起工作,他们拿起一个橘子,要判断这个果子出自甲乙丙三棵果树里的哪一棵。
找一个案例编程实现
- 用Bayes公式完成分类任务的例子
todo.. (网上的例子很多了,就不知道何时来todo了,呵呵)
bayes公式 - 再从零开始理解的更多相关文章
- 用bayes公式进行机器学习的经典案例
用bayes公式进行机器学习的经典案例 从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A) 到硕士期间,机器学习课上对P(B|A)P ...
- 从零开始理解JAVA事件处理机制(2)
第一节中的示例过于简单<从零开始理解JAVA事件处理机制(1)>,简单到让大家觉得这样的代码简直毫无用处.但是没办法,我们要继续写这毫无用处的代码,然后引出下一阶段真正有益的代码. 一:事 ...
- 最大似然判别法和Bayes公式判别法
最大似然判别法 Bayes公式判别法
- 从零开始理解JAVA事件处理机制(3)
我们连续写了两小节的教师-学生的例子,必然觉得无聊死了,这样的例子我们就是玩上100遍,还是不知道该怎么写真实的代码.那从本节开始,我们开始往真实代码上面去靠拢. 事件最容易理解的例子是鼠标事件:我们 ...
- 从零开始理解JAVA事件处理机制(1)
“事件”这个词已经被滥用了.正因为“事件”的被滥用,很多人在用到事件的时候不求甚解,依样画葫芦,导致学习工作了很多年,还是不清楚什么是事件处理器.什么是事件持有者.所以,如果你对于Event这个词还是 ...
- 再深刻理解下web3.js中estimateGas如何计算智能合约消耗的gas量
我们可使用web3.js框架的estimateGas函数获得一个以太坊智能合约的Gas估计值 ,通过执行一个消息调用或交易,该消息调用或交易直接在节点的VM中执行,并未在区块链中确认,函数会返回估算使 ...
- 从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?
自从小白向师兄学习了李群李代数和相机成像模型的基本原理后,感觉书上的内容没那么难了,公式推导也能推得动了,感觉进步神速,不过最近小白在学习对极几何,貌似又遇到了麻烦... 小白:师兄,对极几何这块你觉 ...
- 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现
关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.h ...
- 【转】你真的理解Python中MRO算法吗?
你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...
随机推荐
- CentOS 服务器安全设置 --摘抄自https://www.kafan.cn/edu/8169544.html
一.系统安全记录文件 操作系统内部的记录文件是检测是否有网络入侵的重要线索.如果您的系统是直接连到Internet,您发现有很多人对您的系统做Telnet/FTP登录尝试,可以运行”#more /va ...
- 超细讲解Django打造大型企业官网
本文为知了课堂黄勇老师讲的<超细讲解Django打造大型企业官网>的笔记. 第一章 Django预热 1.创建virtualenv虚拟环境 2.URL组成部分详解 3.Django介绍 4 ...
- T-SQL like charindex patindex 性能比较
事实上在网上可以找到很多这方面的资料,在这边就不多说了~主要观点在性能方面还是比较倾向于charindex,下面就测试下: 测试环境:共50批次,每批次50000数据,测试总共250万数据. 一.li ...
- 51nod 1132 覆盖数字的数量 V2
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1132 题意是给定a,b,l,r求[l,r]内有几个整数可以表示成ax+b ...
- 【IIS错误】未能加载文件或程序集“AAAAA”或它的某一个依赖项。试图加载格式不正确的程序。
未能加载文件或程序集“AAAAA”或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的 ...
- NodeJs递归删除非空文件夹
此篇博文由于第一次使用fs.unlink()删除文件夹时报“Error: EPERM: operation not permitted, unlink”错误而写,这是因为fs.unlink()只能删除 ...
- [C#]App.Config
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm. ...
- Android:防止过快点击造成多次事件 问题
自定义一个NoDoubleClickListener,继承自OnClickListener: public abstract class NoDoubleClickListener implement ...
- vue 父组件给子组件传值 Vue父组件给子组件传方法 Vue父组件把整个实例传给子组件
Home.vue <template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> <v-header ...
- 00012 - ps命令详解
使用权限:所有使用者使用方式:ps [options] [--help]说明:显示瞬间行程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A 列出所 ...