[Bayes] Multinomials and Dirichlet distribution
From: https://www.cs.cmu.edu/~scohen/psnlp-lecture6.pdf 不错的PPT,图示很好。
伯努利分布 和 多项式分布
Binomial Distribution的共轭先验Beta Distribution。
贝塔分布的范围符合色子的每一面的概率理解。
同理:
Multinomials Distribution的共轭先验Dirichlet Distribution。
Ref: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multinomial.html
>>> np.random.multinomial(20, [1/6.]*6, size=2) # 做size=2次实验,一次是20次抛投
array([[3, 4, 3, 3, 4, 3], # 第一次实验的结果:第一面出现了3次,第二面出现了4次,etc.
[2, 4, 3, 4, 0, 7]]) # 第二次实验同理。
没法做图表示,维度太高了,大于了三维。第三维要留下来表示Pr。
狄利克雷分布:
Dirichlet分布可以看做是分布之上的分布。如何理解这句话,我们可以先举个例子:
- 假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}。现在我们做了10000次投掷的实验,得到的实验结果是六面分别出现了{2000,2000,2000,2000,1000,1000}次,如果用每一面出现的次数与试验总数的比值估计这个面出现的概率,则我们得到六面出现的概率,分别为{0.2,0.2,0.2,0.2,0.1,0.1}。
- 我们想要做10000次试验,每次试验中我们都投掷骰子10000次。我们想知道,出现这样的情况使得我们认为,骰子六面出现概率为{0.2,0.2,0.2,0.2,0.1,0.1}的概率是多少(说不定下次试验统计得到的概率为{0.1, 0.1, 0.2, 0.2, 0.2, 0.2}这样了)。
这样我们就在思考骰子六面出现概率分布这样的分布之上的分布。
而这样一个分布就是Dirichlet分布。
- xi 代表每一面的概率。
- 阿尔法是参数向量。
- 以下B函数是为了归一化!
- 可以看出,每一个结果:(x1, x2... xn)都会相应地给出一个概率!
伽玛函数(Gamma函数),也叫欧拉第二积分,是阶乘函数在实数与复数上扩展的一类函数。
与之有密切联系的函数是贝塔函数(Beta函数),也叫第一类欧拉积分。可以用来快速计算同伽马函数形式相类似的积分。
长得比较诡异。
Ref: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.dirichlet.html
一个三维的向量,随机抽取一个。每一维代表一个面的概率。
>>> s = np.random.dirichlet((10, 5, 3), 20)
>>> s
array([[ 0.52347182, 0.44608268, 0.0304455 ],
[ 0.55583862, 0.35281005, 0.09135134],
[ 0.49311777, 0.32315067, 0.18373157],
[ 0.70968695, 0.22268722, 0.06762583],
[ 0.60323203, 0.26006693, 0.13670104],
[ 0.69403583, 0.21325088, 0.09271329],
[ 0.53413248, 0.23281167, 0.23305585],
[ 0.62858314, 0.18519664, 0.18622022],
[ 0.52497339, 0.20176998, 0.27325663],
[ 0.47283724, 0.39204232, 0.13512045],
[ 0.66621238, 0.24627779, 0.08750983],
[ 0.43605494, 0.46696468, 0.09698038],
[ 0.41539035, 0.37153284, 0.21307682],
[ 0.85737303, 0.11670994, 0.02591703],
[ 0.53161652, 0.28426861, 0.18411488],
[ 0.55155807, 0.16826288, 0.28017905],
[ 0.45716724, 0.33973818, 0.20309457],
[ 0.45320309, 0.26896615, 0.27783076],
[ 0.80522192, 0.10022979, 0.09454829],
[ 0.45790405, 0.42998929, 0.11210666]])
可见,参数某个比较大时,会出现一个高的相对稳定的概率峰值。
>>> s = np.random.dirichlet((10, 1, 1), 20)
>>> s
array([[ 0.8557684 , 0.09807372, 0.04615788],
[ 0.83456424, 0.03670665, 0.12872911],
[ 0.73520196, 0.2017358 , 0.06306224],
[ 0.73759042, 0.18157695, 0.08083263],
[ 0.89338746, 0.00237974, 0.1042328 ],
[ 0.93393029, 0.01373741, 0.0523323 ],
[ 0.96453549, 0.02562915, 0.00983536],
[ 0.90688036, 0.02557378, 0.06754587],
[ 0.96455728, 0.02084742, 0.01459531],
[ 0.82136655, 0.07921894, 0.09941451],
[ 0.78585535, 0.00286702, 0.21127763],
[ 0.91597604, 0.0276861 , 0.05633787],
[ 0.90984927, 0.04313451, 0.04701622],
[ 0.81386422, 0.08610383, 0.10003195],
[ 0.92675313, 0.06861093, 0.00463594],
[ 0.98362761, 0.00299704, 0.01337535],
[ 0.90807198, 0.02043488, 0.07149314],
[ 0.90418455, 0.07209613, 0.02371932],
[ 0.9630694 , 0.00459631, 0.03233429],
[ 0.65105053, 0.05350025, 0.29544922]])
阿尔法和小一点,则less peaked:出现了些许不稳定,某一个Pr的垄断性不是特别强。
>>> s = np.random.dirichlet((5, 1, 1), 20)
>>> s
array([[ 0.7373676 , 0.17431797, 0.08831443],
[ 0.8022481 , 0.02474368, 0.17300822],
[ 0.90968516, 0.06022567, 0.03008917],
[ 0.9011515 , 0.02337192, 0.07547658],
[ 0.98846934, 0.00932316, 0.0022075 ],
[ 0.66322211, 0.24058232, 0.09619557],
[ 0.86661876, 0.0542239 , 0.07915735],
[ 0.48498043, 0.25048716, 0.26453241],
[ 0.79705359, 0.16538074, 0.03756567],
[ 0.68670999, 0.17210651, 0.1411835 ],
[ 0.65227745, 0.20477286, 0.1429497 ],
[ 0.73701086, 0.15733187, 0.10565728],
[ 0.68017492, 0.04459314, 0.27523195],
[ 0.50579841, 0.42922063, 0.06498096],
[ 0.71188347, 0.13582756, 0.15228897],
[ 0.69952146, 0.08344366, 0.21703488],
[ 0.39333132, 0.49440346, 0.11226522],
[ 0.47531785, 0.21319548, 0.31148667],
[ 0.67575678, 0.25481807, 0.06942515],
[ 0.83958139, 0.08429426, 0.07612435]])
共轭,得到后验如下:
[Bayes] Multinomials and Dirichlet distribution的更多相关文章
- The Dirichlet Distribution 狄利克雷分布 (PRML 2.2.1)
The Dirichlet Distribution 狄利克雷分布 (PRML 2.2.1) Dirichlet分布可以看做是分布之上的分布.如何理解这句话,我们可以先举个例子:假设我们有一个骰子,其 ...
- Notes on the Dirichlet Distribution and Dirichlet Process
Notes on the Dirichlet Distribution and Dirichlet Process In [3]: %matplotlib inline Note: I wrote ...
- Dirichlet Distribution
Beta分布: 二项式分布(Binomial distribution): 多项式分布: Beta分布: Beta分布是二项式分布的共轭先验(conjugate prior) Dirichlet Di ...
- [AI] 深度数学 - Bayes
数学似宇宙,韭菜只关心其中实用的部分. scikit-learn (sklearn) 官方文档中文版 scikit-learn Machine Learning in Python 一个新颖的onli ...
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- [Bayes] Concept Search and LSI
基于术语关系的贝叶斯网络信息检索模型扩展研究 LSI 阅读笔记 背景知识 提出一种改进的共现频率法,利用该方法挖掘了索引术语之间的相关关系,将这种相关关系引入信念网络模型,提出了一个具有两层术语节点的 ...
- [IR] Concept Search and LSI
基于术语关系的贝叶斯网络信息检索模型扩展研究 LSI 阅读笔记 背景知识 提出一种改进的共现频率法,利用该方法挖掘了索引术语之间的相关关系,将这种相关关系引入信念网络模型,提出了一个具有两层术语节点的 ...
- [综] Latent Dirichlet Allocation(LDA)主题模型算法
多项分布 http://szjc.math168.com/book/ebookdetail.aspx?cateid=1&§ionid=983 二项分布和多项分布 http:// ...
- Dirichlet Process 和 Dirichlet Process Mixture模型
Dirichlet Process 和 Dirichlet Process Mixture模型 [本文链接:http://www.cnblogs.com/breezedeus/archive/2012 ...
随机推荐
- socket的相关知识理解
http://blog.csdn.net/feiniu55662/article/details/16948639 https://www.baidu.com/baidu?tn=monline_3_d ...
- PHPMailer 使用方法(支持群发):
一.下载函数包 地址:https://github.com/PHPMailer/PHPMailer 二.测试服务器环境 通过phpinfo()函数打印出是否支持Sockets(Socket属于php的 ...
- 2d场景背景无限滚动
之前都是直接借用的DoTween插件,两个背景无限交替位置进行,还有就是三个背景在利用Trigger进行判断显示与否循环: 示例脚本: private List<RectTransform> ...
- vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
我发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个,测试通过,直接上代码 如下是组件代码: <template> <span :endTime=" ...
- bugly中批量隐藏版本
App项目使用Bugly的内测分发功能进行整包的测试,但日积月累之后,版本就会特别多.而线上同时跑的版本可能不过三个左右,那么多版本会干扰到查看崩溃.选择版本,如何隐藏呢? 右上角,更多 –> ...
- A very simple C++ module to encrypt/decrypt strings based on B64 and Vigenere ciper.
A very simple C++ module to encrypt/decrypt strings based on B64 and Vigenere ciper. https://github. ...
- 深入理解JVM(一)——JVM内存模型
JVM内存模型 Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区. ...
- Word批量删除所有书签
Word中的书签功能可快速.准确定位文档中特定的位置,经常用于模板定制.文档产出等. 可一直以来,书签功能存在一个不便的操作,即无法批量删除,只能单个删除,操作极不友好. 解决方案 我用代码暂时还改变 ...
- MDX Cookbook 06 - GENERATE 循环遍历
有时候需要从集合中取出特定的成员但是又不能执行遍历操作,这个时候就可以使用 GENERATE 函数来解决这个问题. 根据地区查询每年的销售额 - SELECT NON EMPTY { , NON EM ...
- top命令详析及排查问题使用演示
1. top基本使用 top命令运行图 第一行:基本信息 第二行:任务信息 第三行:CPU使用情况 第四行:物理内存使用情况 buff/cache: buffers 和 cache 都是内存中存放的数 ...