Online Bayesian Probit Regression介绍之Factor Graph
下面就开始讲讲概率图中的Factor Graph。概率图博大精深,非我等鼠辈能够完全掌握,我只是通过研究一些通用的模型,对概率图了解了一点皮毛。其实我只是从概率这头神兽身上盲人摸象地抓掉几根毛,我打算就讲讲我抓掉这几根毛。
Factor Graph 是概率图的一种,概率图有很多种,最常见的就是Bayesian Network (贝叶斯网络)和Markov Random Fields(马尔可夫随机场)。在概率图中,求某个变量的边缘分布是常见的问题。这问题有很多求解方法,其中之一就是可以把Bayesian Network和Markov Random Fields 转换成Facor Graph,然后用sum-product算法求解。
Bayesian Network,Bayesian Network比较容易理解,主要是描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)
Bayesian Network的联合概率分布可以用贝叶斯链式法则来表示

例如:

p(A,B)=p(A)p(B|A)

p(A,B,C)=p(A)p(B|A)p(C|A,B)
Markov Random Fields是无向的概率图,和Bayesian Network一样,用圈表示变量,但是边于是无向的,只是表示变量之间有关系,不一定是条件概率的关系。但是也可以表示变量之间的条件独立性,但是没有有向图那么直观。
对于Markov Random Fields只是看到一些介绍,没又真正试过,所以不敢多说。
下面重点介绍Factor Graph和sum-product的算法
Factor Graph 是个二部图,有两类节点(圆代表variable,方块代表function)和无向边构成

例如上图的Factor Graph可以写成如下的联合概率分布:

其中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,可以是条件概率也也可以是其他关系(如Markov Random Fields中的势函数)。
基于Factor Graph可以用sum-product算法可以高效的求各个变量的边缘分布。
sum-product算法,也叫belief propagation,有两种消息,一种是变量(Variable)到函数(Function)的消息(就是方块到圆的消息):mx→f,另外一种是函数(Function)到变量(Variable)的消息:mf→x

Factor Graph如果是树形的,也就是无环的,一定会存在叶子节点,一般从以下两种情况开始:

这时变量到函数的消息为: mx→f=1

这时变量到函数的消息为:mf→x=f(x)
如果Factor Graph是无环的,从以上两种叶子节点一定可以准确的求出任意一个变量的边缘分布,但是如果是有环的,是无法用sum-product算法准确求出来边缘分布的,但是我们也可以用sum-product算法来求,一般是选择环中的某个消息,随机赋个初值,然后用sum-product算法,迭代下去,因为有环,一定会到达刚才赋初值的那个消息,然后更新那个消息,继续迭代,这样下去,直到没有消息再改变为止,这种算法叫loopy belief propagation。LBF不能保证收敛,但是很多情况下它是收敛的。
举个例子,如下图,我们要求p(x3)



这不是偶然现象

Factor Graph和sum-product基本概率就到这里,估计没有学过和用过概率图的,到这步已经是云里雾里了,但是没有关系,我觉得一切理论,只用把它运用到实际中,才能算真正懂得。






此条目是由 admin 发表在 BPR 分类目录的。将固定链接加入收藏夹。
Online Bayesian Probit Regression介绍之Factor Graph的更多相关文章
- Factor Graph因子图
参考链接1: 参考链接2: 参考ppt3: Factor Graph 是概率图的一种,概率图有很多种,最常见的就是Bayesian Network (贝叶斯网络)和Markov Random Fiel ...
- 贝叶斯线性回归(Bayesian Linear Regression)
贝叶斯线性回归(Bayesian Linear Regression) 2016年06月21日 09:50:40 Duanxx 阅读数 54254更多 分类专栏: 监督学习 版权声明:本文为博主原 ...
- [ML] Bayesian Linear Regression
热身预览 1.1.10. Bayesian Regression 1.1.10.1. Bayesian Ridge Regression 1.1.10.2. Automatic Relevance D ...
- [Scikit-learn] 1.1 Generalized Linear Models - Bayesian Ridge Regression
1.1.10. Bayesian Ridge Regression 首先了解一些背景知识:from: https://www.r-bloggers.com/the-bayesian-approach- ...
- factor graph model
主实验 文慧:用户,商品,评分,review,ranking. 数据集:数据规模,论文源代码
- 机器学习理论基础学习17---贝叶斯线性回归(Bayesian Linear Regression)
本文顺序 一.回忆线性回归 线性回归用最小二乘法,转换为极大似然估计求解参数W,但这很容易导致过拟合,由此引入了带正则化的最小二乘法(可证明等价于最大后验概率) 二.什么是贝叶斯回归? 基于上面的讨论 ...
- [ML] Bayesian Logistic Regression
简单概率分类 Ref: 逻辑回归与朴素贝叶斯有什么区别? Ref: 机器学习笔记——逻辑回归(对数几率回归)和朴素贝叶斯分类器的对比 首先,搞清楚一个问题. naive bayes 能分类:逻辑回归也 ...
- 微软的一篇ctr预估的论文:Web-Scale Bayesian Click-Through Rate Prediction for Sponsored Search Advertising in Microsoft’s Bing Search Engine。
周末看了一下这篇论文,觉得挺难的,后来想想是ICML的论文,也就明白为什么了. 先简单记录下来,以后会继续添加内容. 主要参考了论文Web-Scale Bayesian Click-Through R ...
- GMIS 2017 大会陈雨强演讲:机器学习模型,宽与深的大战
https://blog.csdn.net/starzhou/article/details/72819374 2017-05-27 19:15:36 GMIS 2017 10 0 5 ...
随机推荐
- 深入浅出数据结构C语言版(15)——优先队列(堆)
在普通队列中,元素出队的顺序是由元素入队时间决定的,也就是谁先入队,谁先出队.但是有时候我们希望有这样的一个队列:谁先入队不重要,重要的是谁的"优先级高",优先级越高越先出队.这样 ...
- Hashtable、synchronizedMap、ConcurrentHashMap 比较
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp18 Hashtable.synchronizedMap.Concurren ...
- 第1阶段——u-boot分析之make指令(2)
通过make 100ask24x0_config 指令配置好芯片选型后,使用make指令来生成uboot.bin文件 本文学习目标: 对Makefile文件进行基本了解,掌握make指令是怎么实现生成 ...
- Ubuntu操作系统下安装JDK、tomcat、mysql
1.先从安装虚拟机开始 01.首先打开VMware虚拟机. 02.然后,进入home主页,点击"create a New Virtual Machine"一栏,就会弹出一个 ...
- 深入理解计算机系统(2.3)------布尔代数以及C语言运算符
本篇博客我们主要讲解计算机中的布尔代数以及C语言的几个运算符. 1.布尔代数 我们知道二进制值是计算机编码.存储和操作信息的核心,随着计算机的发展,围绕数值0和1的研究已经演化出了丰富的数学知识体系. ...
- 使用BootStrap框架设置全局CSS样式
一.排版 标题 HTML 中的所有标题标签,<h1> 到 <h6> 均可使用.另外,还提供了 .h1 到 .h6 类,为的是给内联(inline)属性的文本赋予标题的样式. & ...
- 团队作业4——第一次项目冲刺(Alpha版本)4.28
团队作业4--第一次项目冲刺(Alpha版本) Day seven: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第七天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今 ...
- 201521123051《Java程序设计》第七周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 使用工具:百度脑图 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...
- 201521123030《Java程序设计》 第2周学习总结
本周学习总结 String常量,创建之后不能再进行修改 使用+连接字符串会产生新字符串,要大量使用重复性连接应用StringBuilder,检测字符串相等应用equal方法. 枚举类型变量的取值在一个 ...
- 201521123032 《Java程序设计》第14周学习总结
0. 本周课程设计发布 Java课程设计 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓 ...