当前位置: 首页 > news >正文

(转)机器学习的数学基础(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/


相关文章:

  • LeetCode --- Remove Element
  • WebService是什么
  • oracle监控脚本
  • 获取配置文件的值配置文件在项目目录下,如果打成jar包会在jar包所在的同级目录下...
  • JavaScript 键值对
  • TCP digest
  • hdu 4421 BitMagic
  • 多线程异步执行脚本
  • QQ浏览器--x5内核定制meta标签说明
  • 【闲聊产品】之五:谁来背黑锅?
  • js 数组排除重复值(string)
  • 最简单的兼容firefox和ie的锚点方法
  • ENTBOOST 2014.180L发布,开源企业IM免费企业即时通讯
  • EXTJS项目实战经验总结一:日期组件的change事件:
  • [DevEpxress]GridControl 显示Gif动画
  • .pyc 想到的一些问题
  • Brief introduction of how to 'Call, Apply and Bind'
  • create-react-app项目添加less配置
  • HTTP中的ETag在移动客户端的应用
  • Mac转Windows的拯救指南
  • miaov-React 最佳入门
  • socket.io+express实现聊天室的思考(三)
  • Vue组件定义
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 如何解决微信端直接跳WAP端
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 删除表内多余的重复数据
  • 我与Jetbrains的这些年
  • 用Python写一份独特的元宵节祝福
  • 在Mac OS X上安装 Ruby运行环境
  • gunicorn工作原理
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • $forceUpdate()函数
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (52)只出现一次的数字III
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (力扣)循环队列的实现与详解(C语言)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (未解决)macOS matplotlib 中文是方框
  • (转)树状数组
  • .Net core 6.0 升8.0
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @AutoConfigurationPackage的使用
  • @ConditionalOnProperty注解使用说明
  • @Conditional注解详解
  • @Controller和@RestController的区别?
  • @Pointcut 使用