贝叶斯定理是一种在已知其他概率的情况下求概率的方法:

首先,对于贝叶斯定理,还是要先了解各个概率所对应的事件。

  P(A|B) 是在 B 发生的情况下 A 发生的概率;

  P(A) 是 A 发生的概率;

  P(B|A) 是在 A 发生的情况下 B 发生的概率;

  P(B) 是 B 发生的概率。

贝叶斯法则的原理    

根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。

因此,

同理可得,

所以,

即,

这就是条件概率的计算公式。

全概率公式    

由于后面要用到,所以除了条件概率以外,这里还要推导全概率公式。

假定样本空间S,是两个事件A与A'的和。

上图中,红色部分是事件A,绿色部分是事件A',它们共同构成了样本空间S。

在这种情况下,事件B可以划分成两个部分。

在上一节的推导当中,我们已知

所以,

这就是全概率公式。它的含义是,如果A和A'构成样本空间的一个划分,那么事件B的概率,就等于A和A'的概率分别乘以B对这两个事件的条件概率之和。

将这个公式代入上一节的条件概率公式,就得到了条件概率的另一种写法:

病人分类的例子    

 

让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。某个医院早上收了六个门诊病人,如下表。

症状 职业 疾病
打喷嚏 护士 感冒
打喷嚏 农夫 过敏
头疼 建筑工人 脑震荡
头疼 建筑工人 感冒
打喷嚏 教师 感冒
头疼 教师 脑震荡

现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大? 根据贝叶斯定理:

P(A|B) = P(B|A) P(A) / P(B)可得:P(感冒|打喷嚏x建筑工人)     = P(打喷嚏x建筑工人|感冒) x P(感冒)     / P(打喷嚏x建筑工人)

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

P(感冒|打喷嚏x建筑工人)     = P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)    / P(打喷嚏) x P(建筑工人)

这是可以计算的。

P(感冒|打喷嚏x建筑工人)     = 0.66 x 0.33 x 0.5 / 0.5 x 0.33     = 0.66

因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。
这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。

贝叶斯滤波器    

首先,BF是什么?

BF是依据机器人传感器获取的观测数据,利用Bayes公式(概率论)去估计机器人的状态的一种手段。

这里的关键点在于,BF假设了机器人当前的状态服从某一个概率分布,将机器人状态估计问题建模为一个概率分布的估计问题,从而利用概率论的数学工具来解决机器人的状态估计。

那么为什么要用BF呢?

这是因为,机器人的运动模型以及传感器的观测模型常常受到噪声干扰,而这种噪声都是随机性的。这样建模就可以有利于我们把噪声的分布、统计特性给估计出来,从而去除噪声,得到真实观测以及真实状态。

那么,BF具体是怎么对机器人状态估计问题建模的呢?

举一个例子,我做了一只小狗机器人,它身上装了GPS,可以时刻返回小狗机器人的位置。为了遥控它,我还给它装了一个遥控接收装置(根据小狗之前在的位置加上遥控量,也能算出小狗的位置)。但是,我遇到两个问题。一是,我花的钱太少了,买到GPS不太准,本来小狗应该在(5,3)的位置,但是测量的结果却是(5.1,2.8)。二是,小狗机器人接收到指令是前进1米,但是实际走的却可能是0.98米。小狗机器人的观测过程和运动过程中都存在噪声的干扰,这使得我想要知道我的小狗跑到哪里变得很困难,需要借助滤波手段来估计小狗位置。

基于这个例子,由于受到噪声污染,小狗机器人位置和GPS的观测可以被建模为概率分布,以表征其不确定性,即:

其中,x代表小狗机器人的位置,以及y代表GPS测量到的小狗机器人的位置。下标代表的是时间。
这两个式子分别可以称为小狗机器人系统的动态模型(通常用状态方程描述,即从一个状态如何变化到另一个状态)和观测模型(通常用观测方程描述,即当前状态下能够获取到怎么样的观测)。
表达的意思是:k时刻小狗的位置服从以1到k-1时刻的小狗位置以及1到k-1时刻的GPS测量值为条件的一个概率分布;另外,k时刻GPS的测量值服从以1到k时刻的小狗位置以及1到k-1时刻的GPS测量值为条件的一个概率分布。

当然,上面这种建模方式是比较一般化的情况,而有些情况下(例如本例),k时刻的状态和观测未必和很久以前的状态与观测有关系,这时可以对这种建模方式进行一定简化。

简化一:状态量的马尔科夫性

假设k时刻小狗的位置只与k-1时刻的小狗的位置有关,由此:

简化二:观测量的条件独立性 
假设k时刻GPS的位置的值只与k时刻小狗的位置有关,由此:

上述两个简化的含义非常直观,通常的机器人状态估计问题基本能进行这样的简化。

当然,机器人状态估计不一定只能用求解概率分布的方法。最小二乘(观测与状态误差最小)也是常用的方法,卡尔曼滤波最早实际上是从最小二乘法的基础上推导出来的。

BF基本方程    

首先,我们需要明确BF的目标是什么? 
估计机器人状态的概率分布。在小狗的例子中,就是通过手头信息估计出k时刻小狗位置的概率分布。而我们手头的信息就包括,1到k-1时刻小狗的位置以及1到k时刻 GPS的测量值

  
批处理方法

因此,我们首先想到的方法大概是:

这种方法也就是所谓的批处理贝叶斯方法。但是这种方法每次都要拿所有的测量值来重新计算概率分布,对于计算机是个沉重的负担。因此,有了改进的基于递归的贝叶斯滤波方法。

递归方法

事实上,在k时刻,我们除了GPS的测量值以外,

还有k-1时刻对小狗位置的估计。(需要注意,当k=1时,由于k-1=0时刻没有观测值,小狗位置的概率分布比较特殊,与观测无关。这个分布由人为给定,被当做小狗位置的先验分布。)

因此,我们根据k-1时刻的小狗位置分布和k时刻的GPS观测可以利用递归的方法得到k时刻的位置分布,这也就是BF的核心。估计k时刻小狗位置的计算过程包括两步,如下:

1-Step:预测 
这一步是用去得到,注意这里并没有用到k时刻的观测值。

其中,代表了状态由k-1时刻到k时刻的转移概率,也就是上文中介绍了简化了的小狗动态模型,这里的不确定性是由小狗运动过程中的噪声引入的。

这一步之所以称为预测步,可以理解为,在已知k-1时刻机器人位置的情况下,根据机器人本身运动学模型(通常是状态方程),去预测k时刻机器人的位置。在这里被作为先验分布,p(xk|y1:k−1)p(xk|y1:k−1)是由机器人运动学模型预测得到的预测分布。

2-Step:更新 
这一步是用观测值ykyk去更新预测分布,从而得到k时刻机器人位置的后验分布

其中,代表了依据k时刻状态观测到的概率,也就是小狗机器人GPS的观测模型,这里的不确定性是由GPS观测过程中的噪声引入的。

这一步之所以称为更新是因为这步中用到了k时刻的观测量,从而将原本的预测分布更新为了后验分布。而这个后验分布,将作为估计k+1时刻小狗机器人位置的先验分布,从而开始下一轮的递归解算。

总结 
BF的整个过程可以描述为,首先选定一个最初状态的先验分布,进行预测步,得到k=1的预测分布,再用k=1的观测去更新预测分布得到k=1的后验分布,然后将这个后验分布作为先验分布,去预测k=2的预测分布,然后以此类推。。。

参考资料:    

机器学习(10)之趣味案例理解朴素贝叶斯

https://mp.weixin.qq.com/s/s0v_afLVqtJhZyn3qHlseQ

可怕的贝叶斯:

http://dy.163.com/v2/article/detail/CU0MJOCV05118CTM.html

算法——贝叶斯:

https://www.cnblogs.com/skyme/p/3564391.html

贝叶斯滤波器:

http://blog.csdn.net/qq_30159351/article/details/53395515

机器人运动估计系列(番外篇)——从贝叶斯滤波到卡尔曼

http://blog.csdn.net/handsome_for_kill/article/details/78997533

贝叶斯相关文稿:

http://blog.csdn.net/bingecuilab/article/details/52061164

转载于:https://www.cnblogs.com/TIANHUAHUA/p/8528904.html

贝叶斯定理到贝叶斯滤波器相关推荐

  1. 贝叶斯系列——贝叶斯定理、贝叶斯决策、朴素贝叶斯、贝叶斯网络、贝叶斯滤波器

    写一个贝叶斯系列,整理一下贝叶斯定理.贝叶斯决策.朴素贝叶斯.贝叶斯网络.贝叶斯滤波器 众所周知,概率分为两个学派,频率学派(大数定理)和贝叶斯学派(贝叶斯公式),我们不去判断哪个学派说的更对,但是在 ...

  2. 【滤波】离散贝叶斯滤波器

    本文参考自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第2章节02-Discrete-Bayes(离散贝叶斯). %matplotlib inline # ...

  3. 机器人控制算法——Bayes Filter贝叶斯滤波器

    机器人控制算法--Bayes Filter贝叶斯滤波器 概率方法 Probabilistic Approaches. Recursive Bayes Filter. Prediction and Co ...

  4. python 排序统计滤波器_马尔可夫链+贝叶斯滤波器的Python展示

    知乎上已经有很多的学习笔记,但读完后总有一种这东西不是我的我理解不了的感觉,所以想试着写一篇文章来加深一下自己的理解,也记录下学习中的盲点. 非常推荐大家去Github看一个项目: https://g ...

  5. C++中贝叶斯滤波器包bfl的使用(1)-线性卡尔曼滤波器

    摘要 bfl是内置在ROS系统中的一个贝叶斯滤波器包,被使用在robot_pose_ekf中.本文是将该包单独提出来,操作一次整个包的教程(英文教程地址).这个教程由3部分组成,第一部分,也就是本文, ...

  6. [翻译][学习卡尔曼与贝叶斯滤波器][前言]

    [翻译][学习卡尔曼与贝叶斯滤波器--基于Python实践][前言] 开源飞控交流:562983648 项目链接:Github 注:这是一个互动式教程,博客只能显示静态页面.需要得到完整功能请下载项目 ...

  7. 贝叶斯思想概述:从贝叶斯定理到贝叶斯网络

    翻译 | AI科技大本营(ID:rgznai100) 参与 | 刘畅 假设世界上存在一种非常罕见的疾病,你患有这种疾病的几率只有千分之一.你想知道你是否被感染了,所以你做了一个99%准确的测试...且 ...

  8. 机器学习之贝叶斯(贝叶斯定理、贝叶斯网络、朴素贝叶斯)

    一.概率知识点复习 (1)条件概率 就是事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B),读作"在B条件下A的概率". (2)联合概率 可以简单的理解为事 ...

  9. C++中贝叶斯滤波器包bfl的使用(2)-预测模型非线性的扩展卡尔曼滤波器

    摘要 线性卡尔曼滤波器的教程已经翻译完.可是在实际生产生活中,线性状态转移和测量是很少见的,此时就需要扩展卡尔曼滤波器(EKF)登场了.同时在robot_pose_ekf包中使用的也是EKF. 接下来 ...

最新文章

  1. android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例
  2. Powerdesigner 需求分析(RQM)
  3. swift operation
  4. C++ 基础 : 函数重载、引用、内联函数、auto、范围for循环
  5. 1-4 多文档界面处理(2)
  6. leetcode题库1014-- 最佳观光组合
  7. 承载物联之城 阿里云为无锡建设统一物联网基础平台
  8. 修改JBoss-7.1.1 http访问端口并取消JBoss内网访问限制
  9. KNN(五)--层次Kmean
  10. 高并发架构系列:最全消息队列有哪些?详解消息队列的选型与应用
  11. 小谈暴风影音并给个小建议
  12. 根据设计稿,用JS计算rem的值
  13. JavaScript实现猜数字游戏(猜一位和四位数字)
  14. 云计算大数据学习中心作业2
  15. 使Celery 4在Windows上运行的2种方法
  16. Python开发环境Spyder3安装方法
  17. 教你一步一步实现图标无缝变形切换
  18. android 自定义LabelView实现各类小标签,重要功能已标注
  19. 浅谈VMware的NAT模式
  20. 【Python】摄氏度与华氏度互相转化

热门文章

  1. mysql文档 主从_Mysql主从文档
  2. 在wamp里面配置feehicms
  3. orb-slam a versatile and accurate monocular slam system
  4. python pdfplumber 打开文件失败_喜大普奔 | 如何在Win10下利用Python打开grib文件
  5. XDeepFM 模型,字节跳动短视频内容理解和推荐系统
  6. html绘制圆形和弧形的代码,html5 canvas用来绘制弧形的代码实现
  7. python入门到应用实践_Python 3.x入门到应用实践
  8. android微信照片未发送成功,解决Android整合微信分享无法发送图片问题
  9. [转载]Qt之鼠标样式_vortex_新浪博客
  10. 火线精英显示服务器一断,火线精英bug大全解析