(转)机器学习的数学基础(1)--Dirichlet分布
转http://blog.csdn.net/jwh_bupt/article/details/8841644
这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结。
基础知识:conjugate priors共轭先验
共轭先验是指这样一种概率密度:它使得后验概率的密度函数与先验概率的密度函数具有相同的函数形式。它极大地简化了贝叶斯分析。
如何解释这句话。由于
P(u|D) = p(D|u)p(u)/p(D) (1.0式)
其中D是给定的一个样本集合,因此对其来说p(D)是一个确定的值,可以理解为一个常数。P(u|D)是后验概率----即观察到一系列样本数据后模型参数服从的概率,p(D|u)是似然概率----在给定的模型参数u下样本数据服从这一概率模型的相似程度,p(u)是u的先验概率---- 在我们一无所知的情况下u的概率分布。P(u|D)的函数形式完全由p(D|u)和p(u)的乘积决定。如果p(u)的取值使p(u|D)和p(D|u) 相同的表达形式(关于u的表达形式),就称p(u)为共轭先验。一个最简单的p(u)的取值就是常数1,只不过1是p(u)的一种取值。
在了解了共轭先验的概念后,我们主要针对二项分布和多项分布找到他们的共轭先验呈现出什么样的形式,从而引出Dirichlet分布的概念。
二项分布和Beta分布:
如果随机变量x的取值只能取0或1,则称x为服从二项分布的随机变量:
(1.1式)
其中u为p(x=1)。注意上式中x只能为0或1,因此当x为0时p=1-u,当x为1时p=u。写成上面的乘积形式是为了数学描述的方便。
如果对此二值实验重复进行N次,出现的结果将会有m次1和N-m次0。出现m次1和N-m次0的概率为
(1.2式)
又把它称为伯努利实验。给定一个数据集D={x1,x2,x3……xN},其似然函数可以写为:
(1.3式)
现在来看这个概率模型(这是一个似然概率)。式1.2前面的括号项可以理解为一个概率的归一化系数,它与u无关。我们考虑与u有关的这个部分。为了使后验概率具有相同的数学结构,我们引入beta函数
(1.4式)
这样得到的后验概率就具有以下形式:
(1.5式)
其中l=N-m。可以看出1.5式和1.2式具有相同的形式,都是u和1-u的指数的乘积。因此beta分布就是二项分布的共轭先验分布,其中a和b就是beta分布的参数。
在进入到Dirichlet分布之前,我们再观察一下Beta分布。1.4式与1.2式的形式是一样的(除去前面的归一化系数不管)。而不一样的地方在于 1.2式中要求N和m都为整数,而Beta函数中的a和b可以是任意实数(其中当a为整数时г(a)=(a-1)!)。换句牛逼的总结,Beta函数将伯努利实验的概率从整数扩展到了所有实数。
先验概率取为conjugate prior的好处在于做贝叶斯推断。以 二项分布为例,如果我们只有一个观测样本(假设样本观测值为1),那么后验概率仍然是1.4式的形式,只不过a的值更新为a+1。往后如果再有新的观测数 据,就把上一次的后验概率作为先验,乘以新数据的似然函数,就能更新到新的后验概率(传统的做法则是用先验概率乘以所有数据的似然函数得到后验概率)。这一sequential method与传统做法得到的后验概率结果是完全一致的(注意仅仅在我们讨论的这些例子中是这样,如果先验概率不选择为conjugate prior一般不会有这样的等效(2013.5.9note:不会有这样的等效么?再不确定))。而sequential method的优点则在于每用于更新一次后验概率后观测样本可以不用记录下来----这对于大规模的数据下做模型训练是非常有用的。
而Dirichlet分布就是多项分布的共轭先验分布。因此要理解Dirichlet分布,先看看多项分布。
多项分布和Dirichlet分布
如果x的取值有K种情况,就称x服从多项分布。往往用维数为K的矢量来描述。矢量中仅可能一个xk取值为1,其他都为0,用来描述x取第k个值。这样其概率分布可以描述为:
其中且
。当对多项分布的事件进行多次,取值为1至K项的事件分别发生mk次的概率则为:
与beta分布之于二项分布一样,我们找寻多项分布的共轭先验,其共轭先验应该具有这样的形式:
归一化后的表达形式为:
这个分布就叫做Dirichlet分布,其中α是dirichlet分布的参数,μ是变量。
由于限制且0≤uk≤1,因此u1,u2……uk被限制在单纯形中(下图以k=3为例展示了这个单纯形,注意这个单纯形是一个平面,而不是那个三角体。因为
使得u1,u2,u3虽然有三个参数但实际自由度为2,换句话说可以投影到u1-u2的平面上成为一个平面三角形)。
在上面这个介绍的例子中,可以将Dirichlet分布理解为概率的概率。因为u表示的是多项分布的概率,而Dir(u)表达的是u取某种值情况下的概 率,所以可以理解为概率的概率。举个经典的例子,扔骨子。很显然这是一个多项分布,骨子的呈现只可能是1-6中的一种情况。如果我们将这个事件重复 10000次,其中出现1-6的次数分别为2000,2000,2000,1500,1500,1000,那么u的取值就是 (0.2,0.2,0.2,0.15,0.15,0.1)。那么Dirichlet概率描述的就是u取值为 (0.2,0.2,0.2,0.15,0.15,0.1)的概率。
Dirichlet分布的性质
在此介绍之前再次提醒大家,Dirichlet分布的参数是α,μ才是变量。由于μ是K维的,所以Dirichlet分布是一个K维的概率函数。
Dirichlet分布的参数分为两类,一是尺度scale: ;二是基础度量base measurement:
。base measurement决定了Dirichlet分布的均值,而scale决定了方差(多维情况下是协方差矩阵):
当scale非常小的情况下,均值不变但方差很大,这时容易出现extreme distributions。不过随着观测样本的增多,scale会逐渐变大。
当scale趋于无穷时,方差趋于0,此时概率的分布情况就会十分集中。以下图为例:
Dirichlet分布是LDA的数学基础。就看到了这。
参考资料: Bishop,《Pattern Recognition and Machine Learning》
http://www.cs.cmu.edu/~epxing/Class/10701-08s/recitation/dirichlet.pdf
http://www.xperseverance.net/blogs/2012/03/21/
(转)机器学习的数学基础(1)--Dirichlet分布的更多相关文章
- 机器学习的数学基础(1)--Dirichlet分布
机器学习的数学基础(1)--Dirichlet分布 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础知识:conjugate priors共轭先验 共轭先验是 ...
- 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
在机器学习领域中,概率模型是一个常用的利器.用它来对问题进行建模,有几点好处:1)当给定参数分布的假设空间后,可以通过很严格的数学推导,得到模型的似然分布,这样模型可以有很好的概率解释:2)可以利用现 ...
- Beta分布和Dirichlet分布
在<Gamma函数是如何被发现的?>里证明了\begin{align*} B(m, n) = \int_0^1 x^{m-1} (1-x)^{n-1} \text{d} x = \frac ...
- LDA-math-认识Beta/Dirichlet分布
http://cos.name/2013/01/lda-math-beta-dirichlet/#more-6953 2. 认识Beta/Dirichlet分布2.1 魔鬼的游戏—认识Beta 分布 ...
- mahout系列----Dirichlet 分布
Dirichlet分布可以看做是分布之上的分布.如何理解这句话,我们可以先举个例子:假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}.现在我们做了10000次投掷的实验,得到的实验结果是 ...
- Dirichlet分布深入理解
Dirichlet分布 我们把Beta分布推广到高维的场景,就是Dirichlet分布.Dirichlet分布定义如下 Dirichlet分布与多项式分布共轭.多项式分布定义如下 共轭关系表示如下 D ...
- 伯努利分布、二项分布、Beta分布、多项分布和Dirichlet分布与他们之间的关系,以及在LDA中的应用
在看LDA的时候,遇到的数学公式分布有些多,因此在这里总结一下思路. 一.伯努利试验.伯努利过程与伯努利分布 先说一下什么是伯努利试验: 维基百科伯努利试验中: 伯努利试验(Bernoulli tri ...
- LDA学习之beta分布和Dirichlet分布
---恢复内容开始--- 今天学习LDA主题模型,看到Beta分布和Dirichlet分布一脸的茫然,这俩玩意怎么来的,再网上查阅了很多资料,当做读书笔记记下来: 先来几个名词: 共轭先验: 在贝叶斯 ...
- 联邦学习:按Dirichlet分布划分Non-IID样本
我们在<Python中的随机采样和概率分布(二)>介绍了如何用Python现有的库对一个概率分布进行采样,其中的dirichlet分布大家一定不会感到陌生.该分布的概率密度函数为 \[P( ...
随机推荐
- 【SPFA】POJ1511-Invitation Cards
[题目大意] 给出一张有向图,以1位源点,求“从源点出发到各点的距离”和“与各点返回源点的距离和”相加得到的和. [思路] 毫无疑问是最短路径,但是这数据量就算是SPFA也绝壁会超时啊,抱着必死的心态 ...
- 转 TCP/IP的三次握手与四次挥手详解
TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议.在运用此协议进行数据传输前都会进行连接的建立工作(三次握手):当数据传输完毕,连接的双方都会通 ...
- BZOJ 2142 礼物 组合数学 CRT 中国剩余定理
2142: 礼物 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1450 Solved: 593[Submit][Status][Discuss] ...
- linux octave 4.0安装
octave,linux下的安装.官网:Octive,请参考以下资料: 安装教程:Ubuntu通过源码编译安装Octave 4.0
- WPF中删除打开过的图片
在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常.即使当前文件是打开后关闭过的也不行. 这个问题的原因很简单,是因为WPF的缓存策 ...
- HP Microserver Gen8 Processor FAQ
http://homeservershow.com/forums/index.php?/topic/6596-hp-microserver-gen8-processor-faq/ This guide ...
- datagrid在MVC中的运用09-实现排序
本文体验datagrid的排序. □ 思路 当点击datagrid的标题,视图传递给Controller的Form Data类似这样:page=1&rows=10&sort=Custo ...
- Android实例剖析笔记(三)
摘要:点介绍Activity的生命周期,通过一个简单的实验来摸索状态转换的机制 Activity的生命周期 Activity类中有许多onXXX形式的函数可以重载,比如onCreate,onStart ...
- springboot2.X 在项目启动后执行一段自定义代码
场景: 项目需要在项目启动后从数据库初始化一些数据进入redis , 但是没有很适合 的监听器去实现 , 监听 老是在dao初始化之前触发. 解决方法:自定义类实现 ApplicationRunner ...
- jsp数据库连接大全和数据库操作封装到Javabean
一.jsp连接Oracle8/8i/9i数据库(用thin模式) testOracle.jsp如下: <%@ page contentType="text/html;charset=g ...