机器学习的数学基础(1)--Dirichlet分布

这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结。

基础知识: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/

转载请注明出处:http://blog.csdn.net/jiang1st2010/article/details/8841644

机器学习的数学基础(1)--Dirichlet分布的更多相关文章

  1. (转)机器学习的数学基础(1)--Dirichlet分布

    转http://blog.csdn.net/jwh_bupt/article/details/8841644 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础 ...

  2. 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系

    在机器学习领域中,概率模型是一个常用的利器.用它来对问题进行建模,有几点好处:1)当给定参数分布的假设空间后,可以通过很严格的数学推导,得到模型的似然分布,这样模型可以有很好的概率解释:2)可以利用现 ...

  3. Beta分布和Dirichlet分布

    在<Gamma函数是如何被发现的?>里证明了\begin{align*} B(m, n) = \int_0^1 x^{m-1} (1-x)^{n-1} \text{d} x = \frac ...

  4. LDA-math-认识Beta/Dirichlet分布

    http://cos.name/2013/01/lda-math-beta-dirichlet/#more-6953 2. 认识Beta/Dirichlet分布2.1 魔鬼的游戏—认识Beta 分布 ...

  5. mahout系列----Dirichlet 分布

    Dirichlet分布可以看做是分布之上的分布.如何理解这句话,我们可以先举个例子:假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}.现在我们做了10000次投掷的实验,得到的实验结果是 ...

  6. Dirichlet分布深入理解

    Dirichlet分布 我们把Beta分布推广到高维的场景,就是Dirichlet分布.Dirichlet分布定义如下 Dirichlet分布与多项式分布共轭.多项式分布定义如下 共轭关系表示如下 D ...

  7. 伯努利分布、二项分布、Beta分布、多项分布和Dirichlet分布与他们之间的关系,以及在LDA中的应用

    在看LDA的时候,遇到的数学公式分布有些多,因此在这里总结一下思路. 一.伯努利试验.伯努利过程与伯努利分布 先说一下什么是伯努利试验: 维基百科伯努利试验中: 伯努利试验(Bernoulli tri ...

  8. LDA学习之beta分布和Dirichlet分布

    ---恢复内容开始--- 今天学习LDA主题模型,看到Beta分布和Dirichlet分布一脸的茫然,这俩玩意怎么来的,再网上查阅了很多资料,当做读书笔记记下来: 先来几个名词: 共轭先验: 在贝叶斯 ...

  9. 联邦学习:按Dirichlet分布划分Non-IID样本

    我们在<Python中的随机采样和概率分布(二)>介绍了如何用Python现有的库对一个概率分布进行采样,其中的dirichlet分布大家一定不会感到陌生.该分布的概率密度函数为 \[P( ...

随机推荐

  1. 不支持的关键字:“provider connection string”报错信息及解决方案

    今天在部署公司开发框架的时候 ,登录系统之后调用代办列表的时候就报错了 总线调用契约XX.Service.Contracts.IXXService上的GetXXCount方法时出错. Resoluti ...

  2. oracle学习----trace文件

    1.查看v$diag_info视图,能查看跟踪文件的位置,具体的名称等信息. name列中,Diag Trace是11g跟踪文件所在位置 Default Trace File是当前会话的跟踪文件名 2 ...

  3. JAVA练习

    JAVA基础练习 1.给java,stb,sql三门科目的成绩算出JAVA和SQL的成绩差,JAVA和SQL的成绩共是,三门课的总分是,三门课的平均分是多少 import java.util.Scan ...

  4. Extjs combobox设置默认值

    转载:http://www.54mask.com/extjs-combobox-default-value.html 相信很多人都遇到了在ExtJS框架中设置combo组件默认值的需求,ExtJS框架 ...

  5. dynamic关键字

    public class TestClass { public dynamic Values { get; set; } } public class Test { static void Func( ...

  6. CSS控制长文本内容显示(截取的地方用省略号代替)

    自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,下面介绍的是CSS如何实现处理的方法. 现实中经常出现一些内容比较长的文本,为了使整体布局美观,需要将文本内容控制在一行 ...

  7. 定位相关-CLLocationManager的使用。

    #import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...

  8. 关于arcgis 9.3破解问题详解

    对于初学GIS的同学,安装软件可能会遇到各种各样的问题,对于photoshop,autocad,sketchup,3dmax等软件我们的我们无非是输入特定序列号或者用工具随机生成特定序列号就可以破解, ...

  9. jQuery表格操作

    $("#tableid tr:gt(0)").each(function(i){ $(this).children("td").each(function(j) ...

  10. 暑假集训(1)第五弹 -----Rails(Uva514)

    PopPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只能建立起一条路面铁轨.而且,这导致这个火车站在同一个时刻只能一个轨道投入使用, ...