学习中。。。。。。
隐式狄利克雷划分
Latent Dirichlet Allocation,简称LDA。注意不要和Linear Discriminant Analysis搞混了。
这方面的文章,首推rickjin(靳志辉)写的《LDA数学八卦》一文。全文篇幅长达55页,我实在没有能力写的比他更好,因此这里就做一个摘要好了。
http://vdisk.weibo.com/s/q0sGh/1360334108?utm_source=weibolife 书的下载链接。
注:靳志辉,北京大学计算机系计算语言所硕士,日本东京大学情报理工学院统计自然语言处理方向博士。2008年加入腾讯,主要工作内容涉及统计自然语言处理和大规模并行机器学习工具的研发工作。目前为腾讯社交与效果广告部质量研发中心总监,主要负责腾讯用户数据挖掘、精准广告定向、广告语义特征挖掘、广告转化率预估等工作。
他写的另一篇文章《正态分布的前世今生》,也是统计界著名的科普文,非常值得一看。
马氏链及其平稳分布
Markov chain的定义如下:
即状态转移的概率只依赖于前一个状态的随机过程。
注:上面是1阶Markov过程的定义。类似的还可以定义n阶Markov过程,即状态转移的概率只依赖于前n个状态的随机过程。
Andrey(Andrei) Andreyevich Markov,1856~1922,俄国数学家。圣彼得堡大学博士,导师Pafnuty Chebyshev。最早研究随机过程的数学家之一。圣彼得堡学派的第二代领军人物,俄罗斯科学院院士。
虽然现在将随机过程(stochastic process)划为数理统计科学的一部分,然而在19世纪末期,相关的研究者在学术界分属两个不同的团体。其中最典型的就是英国的剑桥学派(Pearson、Fisher等)和俄国的圣彼得堡学派(Chebyshev、Markov等)。因此将Markov称为统计学家是非常错误的观点。
一些非周期的马氏链,经过若干次的状态转移之后,其状态概率会收敛到一个特定的数值,即平稳分布(stationary distribution)。
如各参考文献所示,这里一般会举社会学上的人口分层问题,引出马氏链的极限和平稳分布的概念。这里要特别注意马氏链收敛定理以及它的具体含义。
细致平稳条件:如果非周期马氏链的转移矩阵P和分布π(x)π(x)满足
则π(x)π(x)是马氏链的平稳分布,上式被称为细致平稳条件(detailed balance condition)。
满足细致平稳条件的马氏链,其后续状态都是平稳分布状态,不会再改变。
注:细致平稳条件,比平稳分布的条件要强,因此它是平稳分布的充分条件,而非必要条件。
参考:
http://blog.****.net/lanchunhui/article/details/50451620
http://blog.****.net/pipisorry/article/details/46618991
MCMC
对于给定的概率分布p(x)p(x),我们希望能有便捷的方式生成它对应的样本。由于马氏链能收敛到平稳分布,于是一个很的漂亮想法是:如果我们能构造一个转移矩阵为P的马氏链,使得该马氏链的平稳分布恰好是p(x)p(x),那么我们从任何一个初始状态x0x0出发沿着马氏链转移,得到一个转移序列x0,x1,x2,⋯xn,xn+1⋯x0,x1,x2,⋯xn,xn+1⋯,如果马氏链在第n步已经收敛了,于是我们就得到了π(x)π(x)的样本xn,xn+1⋯xn,xn+1⋯。
Markov Chain Monte Carlo算法的核心是引入一个参数α(i,j)α(i,j)使得一个普通的马氏链,变成一个满足细致平稳条件的马氏链。即:
以上即为Metropolis算法。
注:Nicholas Constantine Metropolis,1915~1999,希腊裔美籍物理学家。芝加哥大学博士,反复供职于Los Alamos和芝加哥大学。(其实也就这俩地方,只不过这边干几年到那边去,那边教几年书再回这边来,这么进进出出好几个来回而已)“曼哈顿计划”的主要科学家之一,战后主持MANIAC计算机的研制。
αα的大小,决定了马氏链的收敛速度。αα越大,收敛越快。因此又有Metropolis–Hastings算法,其关键公式为:
注:Wilfred Keith Hastings,1930~2016,美国统计学家,多伦多大学博士,维多利亚大学教授。
Gibbs Sampling
这个算法虽然以Gibbs命名,但却是Geman兄弟于1984年研究Gibbs random field时,发现的算法。
注:Josiah Willard Gibbs,1839~1903,美国科学家。他在物理、化学和数学方面都有重大理论贡献。耶鲁大学博士和教授。统计力学的创始人。
Donald Jay Geman,1943年生,美国数学家。美国西北大学博士,布朗大学教授。随机森林算法的早期研究者之一。
Stuart Alan Geman,1949年生,美国数学家。MIT博士,约翰霍普金斯大学教授。美国科学院院士。最早将Markov random field(MRF)应用于机器视觉和机器学习。
因为高维空间中,沿坐标轴方向上的两点之间的转移,满足细致平稳条件。因此,Gibbs Sampling的核心就是沿坐标轴循环迭代采样,该算法收敛之后的采样点即符合指定概率分布。
这里需要特别指出的是,Gibbs Sampling比Metropolis–Hastings算法高效的原因在于:Gibbs Sampling每次沿坐标轴的转移是必然会被接受的,即α=1α=1。
Unigram Model
假设我们的词典中一共有V个词v1,v2,⋯vVv1,v2,⋯vV,那么最简单的Unigram Model是定义一个V面的骰子,每抛一次骰子,抛出的面就对应产生一个词。
频率学派的Unigram Model如下图:
贝叶斯学派的Unigram Model如下图:
这里使用Dirichlet分布的原因在于,数据采用多项分布,而Dirichlet分布正好是多项分布的共轭先验分布。
和wiki上对Dirichlet分布的pdf函数的描述(参见《数学狂想曲(二)》中的公式1)不同,rickjin在这里采用了如下定义:
其中:
可以看出两种描述中的B(α)B(α)和Δ(α→)Δ(α→)是等价的。
下面我们来证明这个结论,即:
证明:这里为了简化问题,令V=3。则根据《数学狂想曲(二)》中的公式1可得:
对该pdf进行积分:
由pdf的定义可知,上面的积分值为1。
因此:
证毕。
从上面的证明过程,可以看出公式1并不是恒等式,而是在Dirichlet分布下才成立的等式。这也是共轭先验分布能够简化计算的地方。
注:本文中所有公式和思路来自于邹博先生的《机器学习升级版》,我只是为了加深记忆和理解写的本文。
犹豫了好久终于要开始介绍LDA了,因为其中的概念和分布关系乍一看乱糟糟的,不太容易说明白,也不知道以什么样的形式能更好的说清楚这个小东西,今天斗胆拿出自己学习的心得同大家分享,不太敢确保让读者能明白,请海涵。
矫情够了,该说说正事了!!!!
LDA模型算是pLSA模型的一个升级版吧,全程是Latent Dirichlet Allocation,从字面上可以看得出,这是一个隐藏的Dirichlet分布模型,那什么是Dirichlet分布呢?
Γ函数
既然要说Dirichlet函数,那么就不得不介绍一下Γ函数,Γ函数式欧拉发现的,举例来说Γ(4)=3!=3*2*1,其实就是一个阶乘函数,Γ函数正统的写法是这样的:
那么这个Γ函数和LDA有什么关系呢?别着急,咱们接着谈。
Beat分布
beat分布的概率密度可以如下表示:
其中系数可以这样计算或表示:
接下来我们不妨对beta的概率分布做个积分求期望:
我们可以得到这个结论,还是很漂亮的,计算过程非常简单,只有一些简单地变换而已,只是看起来有点复杂。后边就要用到这个结论。这其中就有两个参数α和β,后边也会介绍这两个参数到底是个什么鬼。
共轭分布
既然要谈LDA,还有个不得不谈共轭分布,很简单的小概念,下边的式子是贝叶斯公式:
其中P(θ|x)是后验概率,P(x|θ)是先验概率,在贝叶斯的理论体系中,如果先验概率分布和后验概率分布满足同样的分布律的话,我们就说先验分布和后验分布是共轭分布,同时,先验分布又叫做似然函数的共轭先验分布。大白话来说就是:如果一个概率分布Z乘以一个分布Y之后的分布仍然是Z,那么就是共轭分布,仅此而已。
先验分布、后验分布、似然估计这几个概念是什么意思,它们之间的关系是什么?
作者:徐鹏
链接:https://www.zhihu.com/question/24261751/answer/153991968
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作为吃瓜群众,尝试回答下。
用“瓜熟蒂落”这个因果例子,从概率(probability)的角度说一下,
先验概率,就是常识、经验所透露出的“因”的概率,即瓜熟的概率。应该很清楚。
后验概率,就是在知道“果”之后,去推测“因”的概率,也就是说,如果已经知道瓜蒂脱落,那么瓜熟的概率是多少。后验和先验的关系可以通过贝叶斯公式来求。也就是:
P(瓜熟 | 已知蒂落)=P(瓜熟)×P(蒂落 | 瓜熟)/ P(蒂落)
似然函数,是根据已知结果去推测固有性质的可能性(likelihood),是对固有性质的拟合程度,所以不能称为概率。在这里就是说,不要管什么瓜熟的概率,只care瓜熟与蒂落的关系。如果蒂落了,那么对瓜熟这一属性的拟合程度有多大。似然函数,一般写成L(瓜熟 | 已知蒂落),和后验概率非常像,区别在于似然函数把瓜熟看成一个肯定存在的属性,而后验概率把瓜熟看成一个随机变量。
---
再扯一扯似然函数和条件概率的关系。似然函数就是条件概率的逆反。意为:
L(瓜熟 | 已知蒂落)= C × P(蒂落 | 瓜熟),C是常数。具体来说,现在有1000个瓜熟了,落了800个,那条件概率是0.8。那我也可以说,这1000个瓜都熟的可能性是0.8C。
注意,之所以加个常数项,是因为似然函数的具体值没有意义,只有看它的相对大小或者两个似然值的比率才有意义,后面还有例子。
----------------------------------------------------------------------------------------------------
同理,如果理解上面的意义,分布就是一“串”概率。
先验分布:现在常识不但告诉我们瓜熟的概率,也说明了瓜青、瓜烂的概率
后验分布:在知道蒂落之后,瓜青、瓜熟、瓜烂的概率都是多少
似然函数:在知道蒂落的情形下,如果以瓜青为必然属性,它的可能性是多少?如果以瓜熟为必然属性,它的可能性是多少?如果以瓜烂为必然属性,它的可能性是多少?似然函数不是分布,只是对上述三种情形下各自的可能性描述。
那么我们把这三者结合起来,就可以得到:后验分布 正比于 先验分布 × 似然函数。先验就是设定一种情形,似然就是看这种情形下发生的可能性,两者合起来就是后验的概率。
至于似然估计:
就是不管先验和后验那一套,只看似然函数,现在蒂落了,可能有瓜青、瓜熟、瓜烂,这三种情况都有个似然值(L(瓜青):0.6、L(瓜熟):0.8、L(瓜烂):0.7),我们采用最大的那个,即瓜熟,这个时候假定瓜熟为必然属性是最有可能的。
接上面:
举一个小例子来说吧:
我们都知道抛硬币实验,只有反正两种结果,我们可以认为是两点分布,做k次试验,变成二项分布,概率密度函数(似然函数)我们可以这样表示:
那么先验概率可以如下表示:
如此一来,我们就可以计算后验概率(省区了分母,如果不出输出具体概率值可以省略掉):
从结果可以看出,先验分布和后验分布是形式是一样的,后验概率分布满足(x+α,1-x+β)的Beta分布,即伯努利分布的共轭先验分布式Beat分布。注意,千万别把共轭先验分布和共轭分布搞混淆,共轭先验分布式对于一个似然函数来说的,共轭分布是说该似然函数的先验概率和后验概率的关系是共轭。
那么这个α、β到底是什么呢?
其实是个伪计数,何为伪计数呢?
α、β是决定参数θ的超参数,这么解释吧,投硬币试验中θ是正反面的概率,那么后验概率可以如下表示:
可以很明显的看出,α、β是参数θ的指数,那么实践意义其实就是:α、β在没有任何假设的前提下,硬币朝上的概率分配,因此称之为伪计数。
如果将二项分布推广到多项呢?
共轭分布的直接推广
二项分布的共轭先验分布是Beta分布,多项分布的共轭先验分布是Dirichlet分布(终于扣题了)。
Beta分布:
其中:
Dirichlet分布:
其中:
就是从2到k的一个推广,其中α是一个参数向量,共有K个,那么其中α对Dirichlet分布有何影响呢?
从上图可以看出:
当α=1时,退化为均匀分布
当α>1时,p1=p2=p3=...=pk的概率增大
当α<1时,pi=1的概率增大,p非i的概率增大
LDA的解释:
首先给大家看一张关于LDA过程的“从所周知”的图:
解释:
共有m篇文档,k个主题,每篇文档(长度为Nm)都有各自的主题分布比方说40%的武侠、30%爱情、20%科幻、其余的加起来为10%。这个分布式一个多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet的参数为α。
每个主题又有各自的词分布,词分布同样是多项分布,参数服从Dirichlet分布,参数为β。
对于每篇分档,中的第n个词的处理,首先从文档中的主题分布采样一个主题,然后在这主题的词分布中采样一个词,不断重复上述过程,知道m篇文档都完成。
那么主题和词是怎么采的呢?
这里先简单介绍一下Gibbs Sampling的过程,后边的采样文章会深入的介绍采样。
Gibbs采样
Gibbs Sampling算法的运行方式是每次概率向量的一个维度,给定其他维度的变量值采样当前维度的值,不断迭代知道收敛输出待估计的参数。
Gibbs在LDA中,初始时随机给文本中的每个词分配主题z0,然后统计每个主题出现的词t的数量以及每个文档m下出现的主题z的数量,每一轮计算,即排除当前词的主题分布,根据其他所有词的主题分布估计当前词分配各个主题的概率。
当得到当前词属于所有主题z的概率分布后,根据这个概率分布为该次采样一个新的主题。
用同样方法更新下一个词的主题,知道发现每个文档的主题分布和每个主题的词分布收敛,算法终止,输出待估计的参数θ和φ,同时每个单词的主题Zmn也可以得到。
实际中应用会设置最大迭代次数,每一次计算的公式称为Gibbs updating rule。
那么具体是怎么更新的呢?耐住性子,接着往下看。
我们知道,给定α和β,可以控制主题分布和词分布:
那么我们可以将后边的这两个因子分开来计算:
Gibbs updating rule:
那么最后的结果可以得出结论:
这个也就是我们最终写代码的式子。
我个人觉得这块其实不难,只是我们先搞清楚LDA的过程,再搞明白Gibbs的过程,那么套用思路就可以了,只不过是符号显得很复杂而已,耐心花点时间看一看,其实也就那么回事。
注意:
LDA对于短的文章来说效果不是很好,因为还没等收敛就已经结束了,我们可以通过短文拼接来改善。
终于介绍完了,细心地你一定看到我提到过“采样”,没错,采样时贝叶斯学派的做法,后续文章我将会介绍采样相关的文章。
另外一篇:
- 词是离散数据的基本单元,可以定义为词库的索引{1,.....V},我们把词表示成单位向量,其中只有一维为1,其他为0。词库里的第v个词,表示成一个V -维向量w (,,)
- 文本是由N个词组成的序列,其中 为序列的第n个词。
- 语料库由M个文本组成