转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. 机器学习的数学基础(1)--Dirichlet分布

    机器学习的数学基础(1)--Dirichlet分布 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础知识:conjugate priors共轭先验 共轭先验是 ...

  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. POJ 3177 Redundant Paths 双联通分量 割边

    http://poj.org/problem?id=3177 这个妹妹我大概也曾见过的~~~我似乎还没写过双联通分量的blog,真是智障. 最少需要添多少条边才能使这个图没有割边. 边双缩点后图变成一 ...

  2. 【转】说下lua使用场景

    [今日话题]说下lua使用场景 – flea 1. 我们有用,一些逻辑相对简单,没有复杂的数据交互,访问频次超高的接口实现,可以用lua,省得用phpfpm,太重,浪费资源. – 付坤   2. 也可 ...

  3. bzoj 3996 最小割

    公式推出来后想了半天没思路,居然A是01矩阵..... 如果一个问题是求最值,并那么尝试先将所有可能收益加起来,然后矛盾部分能否用最小割表达(本题有两个矛盾,第一个是选还是不选,第二个是i,j有一个不 ...

  4. Codeforces Round #FF (Div. 1) A. DZY Loves Sequences 动态规划

    A. DZY Loves Sequences 题目连接: http://www.codeforces.com/contest/446/problem/A Description DZY has a s ...

  5. Linux下nmon工具安装及nmon analyser的使用

    步骤一:下载nmon及nmon analyser工具 nmon:http://nmon.sourceforge.net/pmwiki.php 根据自己系统的版本下载相应的版本即可 nmon analy ...

  6. Java外部类可以访问内部类private变量

    在讲Singleton时我举例时用过这样一段代码: public class SingletonDemo { private static class SingletonHolder{ private ...

  7. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别

    面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...

  8. configure: error: lzo enabled but missing

    注意:yum安装的无效,需要手动下载源码安装. wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz tar zx ...

  9. 如何在ubuntu安装phpstorm

    第一步:使用组合键ctrl+alt+t 打开Terminal,cd /home/xxx(当前登录用户名)/downloads(下载目录) 第二步:下载 phpstorm 附截止发文最新版本链接:htt ...

  10. OC学习那些事:第一个OC类

    一.创建一个新的OC类: 1.点击File->New File,打开Choose a template for your new file窗口,选择Objective-C class,点击Nex ...