LDA( Latent Dirichlet Allocation)主题模型 学习报告
1 问题描述
LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,是一种主题模型,它可以将文档集中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
人类是怎么生成文档的呢?LDA的这三位作者在原始论文中给了一个简单的例子。比如假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习训练,获取每个主题Topic对应的词语。如下图所示:
然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的重复这两步,最终生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题下的词):
而当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。
LDA就是要干这事:根据给定的一篇文档,推测其主题分布。
2 pLSA模型生成文档
介绍LDA之前我们先了解一下pLSA模型,因为pLSA加上贝叶斯框架,便是LDA。
一些定义:
- 表示海量文档中某篇文档被选中的概率。
- 表示词 在给定文档 中出现的概率。
- 表示具体某个主题 在给定文档 下出现的概率。
- 表示具体某个词 在给定主题 下出现的概率,与主题关系越密切的词,其条件概率 越大。
利用上述的第1、3、4个概率,我们便可以按照如下的步骤得到“文档-词项”的生成模型:
- 按照概率 选择一篇文档
- 选定文档 后,从主题分布中按照概率 选择一个隐含的主题类别
- 选定 后,从词分布中按照概率 选择一个词
所以pLSA中生成文档的整个过程便是选定文档生成主题,确定主题生成词。
3 根据文档反推其主题分布
反过来,既然文档已经产生,那么如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是主题建模的目的:自动地发现文档集中的主题(分布)。
换言之,人类根据文档生成模型写成了各类文章,然后丢给了计算机,相当于计算机看到的是一篇篇已经写好的文章。现在计算机需要根据一篇篇文章中看到的一系列词归纳出当篇文章的主题,进而得出各个主题各自不同的出现概率:主题分布。即文档d和单词w是可被观察到的,但主题z却是隐藏的。
如下图所示(图中被涂色的d、w表示可观测变量,未被涂色的z表示未知的隐变量,N表示一篇文档中总共N个单词,M表示M篇文档):
上图中,文档d和词w是我们得到的样本(样本随机,参数虽未知但固定,所以pLSA属于频率派思想。区别于下文要介绍的LDA中:样本固定,参数未知但不固定,是个随机变量,服从一定的分布,所以LDA属于贝叶斯派思想),可观测得到,所以对于任意一篇文档,其 是已知的。
从而可以根据大量已知的文档-词项信息 ,训练出文档-主题 和主题-词项 ,如下公式所示:
故得到文档中每个词的生成概率为:
由于 可事先计算求出,而 和 未知,所以
就是我们要估计的参数(值),通俗点说,就是要最大化这个θ。
用什么方法进行估计呢,常用的参数估计方法有极大似然估计MLE、最大后验证估计MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量z,所以我们可以考虑EM算法。
4 LDA模型
事实上,理解了pLSA模型,也就差不多快理解了LDA模型,因为LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本(正因为LDA被贝叶斯化了,所以才需要考虑历史先验知识,才加的两个先验参数)。
LDA模型中一篇文档生成的方式:
- 按照先验概率 选择一篇文档
- 从狄利克雷分布(即Dirichlet分布) 中取样生成文档 的主题分布 ,换言之,主题分布 由超参数为 的Dirichlet分布生成
- 从主题的多项式分布 中取样生成文档 第 j 个词的主题
- 从狄利克雷分布(即Dirichlet分布) 中取样生成主题 对应的词语分布 ,换言之,词语分布 由参数为 的Dirichlet分布生成
- 从词语的多项式分布 中采样最终生成词语 ”
从上面两个过程可以看出,LDA在PLSA的基础上,为主题分布和词分布分别加了两个Dirichlet先验。
但在贝叶斯框架下的LDA中,我们不再认为主题分布(各个主题在文档中出现的概率分布)和词分布(各个词语在某个主题下出现的概率分布)是唯一确定的(而是随机变量),而是有很多种可能。但一篇文档总得对应一个主题分布和一个词分布,LDA为它们弄了两个Dirichlet先验参数,这个Dirichlet先验为某篇文档随机抽取出某个主题分布和词分布。文档d产生主题z(准确的说,其实是Dirichlet先验为文档d生成主题分布Θ,然后根据主题分布Θ产生主题z)的概率,主题z产生单词w的概率都不再是某两个确定的值,而是随机变量。
换言之,LDA在pLSA的基础上给这两参数( 、 )加了两个先验分布的参数(贝叶斯化):一个主题分布的先验分布Dirichlet分布 ,和一个词语分布的先验分布Dirichlet分布 。
所以,pLSA跟LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者用的是频率派思想,后者用的是贝叶斯派思想。
好比,我去一朋友家:按照频率派的思想,我估计他在家的概率是1/2,不在家的概率也是1/2,是个定值。而按照贝叶斯派的思想,他在家不在家的概率不再认为是个定值1/2,而是随机变量。比如按照我们的经验(比如当天周末),猜测他在家的概率是0.6,但这个0.6不是说就是完全确定的,也有可能是0.7。如此,贝叶斯派没法确切给出参数的确定值(0.3,0.4,0.6,0.7,0.8,0.9都有可能),但至少明白在哪个范围或哪些取值(0.6,0.7,0.8,0.9)更有可能,哪个范围或哪些取值(0.3,0.4) 不太可能。进一步,贝叶斯估计中,参数的多个估计值服从一定的先验分布,而后根据实践获得的数据(例如周末不断跑他家),不断修正之前的参数估计,从先验分布慢慢过渡到后验分布。
5 LDA参数估计:Gibbs采样
理清了LDA中的物理过程,下面咱们来看下如何学习估计。 类似于pLSA,LDA的原始论文中是用的变分-EM算法估计未知参数,后来发现另一种估计LDA未知参数的方法更好,这种方法就是:Gibbs Sampling。Gibbs抽样是马尔可夫链蒙特卡尔理论(MCMC)中用来获取一系列近似等于指定多维概率分布(比如2个或者多个随机变量的联合概率分布)观察样本的算法。给定一个文档集合,w是可以观察到的已知变量, 和 是根据经验给定的先验参数,其他的变量z,θ和φ都是未知的隐含变量,需要根据观察到的变量来学习估计的。根据LDA的图模型,可以写出所有变量的联合分布:
注:上述公式中及下文中, 等价上文中定义的 , 等价于上文中定义的 , 等价于上文中定义的 ,等价于上文中定义的 。
因为 产生主题分布θ,主题分布θ确定具体主题,且 产生词分布φ、词分布φ确定具体词,所以上述式子等价于下述式子所表达的联合概率分布 :
其中,第一项因子 表示的是根据确定的主题 和词分布的先验分布参数 采样词的过程,第二项因子 是根据主题分布的先验分布参数 采样主题的过程,这两项因子是需要计算的两个未知参数。
由于这两个过程是独立的,所以下面可以分别处理。
第一个因子 ,可以根据确定的主题 和从先验分布 取样得到的词分布Φ产生:
由于样本中的词服从参数为主题 的独立多项分布,这意味着可以把上面对词的乘积分解成分别对主题和对词的两层乘积:
其中, 是词 t 在主题 k 中出现的次数。
回到第一个因子上来。目标分布 需要对词分布Φ积分,且结合我们之前定义的Dirichlet 分布的归一化系数 的公式
可得:
这个结果可以看作K个Dirichlet-Multinomial模型的乘积。
现在开始求第二个因子
。类似于
的步骤,先写出条件分布,然后分解成两部分的乘积:
其中, 表示的单词 i 所属的文档, 是主题 k 在文章 m 中出现的次数。
对主题分布Θ积分可得:
综合第一个因子和第二个因子的结果,得到 的联合分布结果为:
接下来,有了联合分布 ,咱们便可以通过联合分布来计算在给定可观测变量 w 下的隐变量 z 的条件分布(后验分布) 来进行贝叶斯分析。
换言之,有了这个联合分布后,要求解第m篇文档中的第n个词(下标为 的词)的全部条件概率就好求了。
先定义几个变量。 表示除去 的词, , 。
然后,排除当前词的主题分配,即根据其他词的主题分配和观察到的单词来计算当前词主题的概率公式为:
且有:
最后一步,便是根据Markov链的状态 获取主题分布的参数Θ和词分布的参数Φ。
换言之,根据贝叶斯法则和Dirichlet先验,以及上文中得到的 和 各自被分解成两部分乘积的结果,可以计算得到每个文档上Topic的后验分布和每个Topic下的词的后验分布分别如下(据上文可知:其后验分布跟它们的先验分布一样,也都是Dirichlet 分布):
其中, 是构成文档m的主题数向量, 是构成主题k的词项数向量。
此外,Dirichlet性质,如下:
“ 如果 ,同样可以证明有下述结论成立:
即:如果 ,则 中的任一元素 的期望是:
可以看出,超参数
的直观意义就是事件先验的伪计数(prior
pseudo-count)。 ”
所以,最终求解的Dirichlet 分布期望为:
然后将 和 的结果代入之前得到的 的结果中,可得:
仔细观察上述结果,可以发现,式子的右半部分便是
,这个概率的值对应着 的路径概率。如此,K 个topic 对应着K条路径,Gibbs Sampling 便在这K 条路径中进行采样,如下图所示:
就这样,Gibbs Sampling通过求解出主题分布和词分布的后验分布,从而成功解决主题分布和词分布这两参数未知的问题。
附录:
一、四个分布
这里解释下二项分布、多项分布、beta分布、Dirichlet 分布这4个分布。
- 二项分布(Binomial distribution)。
二项分布是从伯努利分布推进的。伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布,其中的随机变量只有两类取值,非正即负{+,-}。而二项分布即重复n次的伯努利试验,记为 。简言之,只做一次实验,是伯努利分布,重复做了n次,是二项分布。二项分布的概率密度函数为:
对于k = 0, 1, 2, ..., n,其中的 是二项式系数(这就是二项分布的名称的由来),又记为 。
多项分布,是二项分布扩展到多维的情况。
多项分布是指单次试验中的随机变量的取值不再是0-1的,而是有多种离散值可能(1,2,3...,k)。比如投掷6个面的骰子实验,N次实验结果服从K=6的多项分布。其中
多项分布的概率密度函数为:
- Beta分布,二项分布的共轭先验分布。
beta分布介绍
详细见参考文献12
用一句话来说,beta分布可以看作一个概率的概率分布,当你不知道一个东西的具体概率是多少时,它可以给出了所有概率出现的可能性大小。
举一个简单的例子,熟悉棒球运动的都知道有一个指标就是棒球击球率(batting average),就是用一个运动员击中的球数除以击球的总数,我们一般认为0.266是正常水平的击球率,而如果击球率高达0.3就被认为是非常优秀的。
现在有一个棒球运动员,我们希望能够预测他在这一赛季中的棒球击球率是多少。你可能就会直接计算棒球击球率,用击中的数除以击球数,但是如果这个棒球运动员只打了一次,而且还命中了,那么他就击球率就是100%了,这显然是不合理的,因为根据棒球的历史信息,我们知道这个击球率应该是0.215到0.36之间才对啊。
对于这个问题,我们可以用一个二项分布表示(一系列成功或失败),一个最好的方法来表示这些经验(在统计中称为先验信息)就是用beta分布,这表示在我们没有看到这个运动员打球之前,我们就有了一个大概的范围。beta分布的定义域是(0,1)这就跟概率的范围是一样的。
接下来我们将这些先验信息转换为beta分布的参数,我们知道一个击球率应该是平均0.27左右,而他的范围是0.21到0.35,那么根据这个信息,我们可以取α=81,β=219
之所以取这两个参数是因为:
- beta分布的均值是α/(α+β)=81/(81+219)=0.27
- 从图中可以看到这个分布主要落在了(0.2,0.35)间,这是从经验中得出的合理的范围。
在这个例子里,我们的x轴就表示各个击球率的取值,x对应的y值就是这个击球率所对应的概率。也就是说beta分布可以看作一个概率的概率分布。
那么有了先验信息后,现在我们考虑一个运动员只打一次球,那么他现在的数据就是”1中;1击”。这时候我们就可以更新我们的分布了,让这个曲线做一些移动去适应我们的新信息。beta分布在数学上就给我们提供了这一性质,他与二项分布是共轭先验的(Conjugate_prior)。所谓共轭先验就是先验分布是beta分布,而后验分布同样是beta分布。结果很简单:
Beta(α0+hits,β0+misses)
其中α0和β0是一开始的参数,在这里是81和219。所以在这一例子里,α增加了1(击中了一次)。β没有增加(没有漏球)。这就是我们的新的beta分布Beta(81+1,219),我们跟原来的比较一下:
可以看到这个分布其实没多大变化,这是因为只打了1次球并不能说明什么问题。但是如果我们得到了更多的数据,假设一共打了300次,其中击中了100次,200次没击中,那么这一新分布就是: beta(81+100,219+200)
注意到这个曲线变得更加尖,并且平移到了一个右边的位置,表示比平均水平要高。一个有趣的事情是,根据这个新的beta分布,我们可以得出他的数学期望为:α/(α+β )= (82+100 ) / ( 82+100+219+200)=.303 ,这一结果要比直接的估计小于100/(100+200)=.333 。你可能已经意识到,我们事实上就是在这个运动员在击球之前可以理解为他已经成功了81次,失败了219次这样一个先验信息。
因此,对于一个我们不知道概率是什么,而又有一些合理的猜测时,beta分布能很好的作为一个表示概率的概率分布。
Dirichlet分布,是beta分布在高维度上的推广。
Dirichlet分布的的密度函数形式跟beta分布的密度函数如出一辙:
其中
至此,我们可以看到二项分布和多项分布很相似,Beta分布和Dirichlet 分布很相似,而至于“Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布”这点在下文中说明。
二、共轭先验分布
在贝叶斯概率理论中,如果后验概率P(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。
三、似然函数
详细见参考文献2
概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。
在这种意义上,似然函数可以理解为条件概率的逆反。在已知某个参数B时,事件A会发生的概率写作:
因此,我们可以反过来构造表示似然性的方法:已知有事件A发生,运用似然函数我们估计参数B的可能性。形式上,似然函数也是一种条件概率函数,但我们关注的变量改变了。
注意到这里并不要求似然函数满足归一性。一个似然函数乘以一个正的常数之后仍然是似然函数。
考虑投掷一枚硬币的实验。通常来说,已知投出的硬币正面朝上和反面朝上的概率各自是0.5,便可以知道投掷若干次后出现各种结果的可能性。比如说,投两次都是正面朝上的概率是0.25。用条件概率表示,就是:
其中H表示正面朝上。
在统计学中,我们关心的是在已知一系列投掷的结果时,关于硬币投掷时正面朝上的可能性的信息。我们可以建立一个统计模型:假设硬币投出时会有pH的概率正面朝上,而有1-pH的概率反面朝上。这时,条件概率可以改写成似然函数:
也就是说,对于取定的似然函数,在观测到两次投掷都是正面朝上时, pH=0.5的似然性是0.25(这并不表示当观测到两次正面朝上时pH=0.5的概率是0.25)。
似然函数的重要性不是它的具体取值,而是当参数变化时函数到底变小还是变大。对同一个似然函数,如果存在一个参数值,使得它的函数值达到最大的话,那么这个值就是最为“合理”的参数值。在这个例子中,似然函数实际上等于:
也就是说,当连续观测到两次正面朝上时,假设硬币投掷时正面朝上的概率为1是最合理的。类似地,如果观测到的是三次投掷硬币,头两次正面朝上,第三次反面朝上,那么似然函数将会是:
其中T表示反面朝上。这时候,似然函数的最大值将会在ph=2/3的时候取到。也就是说,当观测到三次投掷中前两次正面朝上而后一次反面朝上时,估计硬币投掷时正面朝上的概率ph=2/3是最合理的。
四、EM算法的简单介绍
详细见参考文献14
EM算法,全称为Expectation-maximization algorithm,为期望最大算法,其基本思想是:首先随机选取一个值去初始化待估计的值 ,然后不断迭代寻找更优的 使得其似然函数likelihood 比原来的 要大。换言之,假定现在得到了 ,想求 ,使得
EM的关键便是要找到 的一个下界 (注: ,其中,X表示已经观察到的随机变量),然后不断最大化这个下界,通过不断求解下界 的极大化,从而逼近要求解的似然函数 。
所以EM算法的一般步骤为:
- 1. 随机选取或者根据先验知识初始化 ;
- 2. 不断迭代下述两步
- ①给出当前的参数估计 ,计算似然函数 的下界
- ②重新估计参数θ,即求 ,使得
- 3. 上述第二步后,如果 收敛(即 收敛)则退出算法,否则继续回到第二步。
上述过程好比在二维平面上,有两条不相交的曲线,一条曲线在上(简称上曲线 ),一条曲线在下(简称下曲线 ),下曲线为上曲线的下界。现在对上曲线未知,只已知下曲线,为了求解上曲线的最高点,我们试着不断增大下曲线,使得下曲线不断逼近上曲线,下曲线在某一个点达到局部最大值并与上曲线在这点的值相等,记录下这个值,然后继续增大下曲线,寻找下曲线上与上曲线上相等的值,迭代到 收敛(即 收敛)停止,从而利用当前下曲线上的局部最大值当作上曲线的全局最大值(换言之,EM算法不保证一定能找到全局最优值)。如下图所示:
以下是详细介绍。
假定有训练集 ,包含m个独立样本,希望从中找到该组数据的模型p(x,z)的参数。
然后通过极大似然估计建立目标函数--对数似然函数:
这里,z是隐随机变量,直接找到参数的估计是很困难的。我们的策略是建立 的下界,并且求该下界的最大值;重复这个过程,直到收敛到局部最大值。
令Qi是z的某一个分布,Qi≥0,且结合Jensen不等式,有:
为了寻找尽量紧的下界,我们可以让使上述等号成立,而若要让等号成立的条件则是:
换言之,有以下式子成立: ,且由于有:
所以可得:
最终得到EM算法的整体框架如下:
OK,EM算法还会在本博客后面的博文中具体阐述。接下来,回到pLSA参数的估计问题上。
五、EM算法估计pLSA的两未知参数
详细见参考文献14
首先尝试从矩阵的角度来描述待估计的两个未知变量和。
- 假定用 表示词表 在主题 上的一个多项分布,则 可以表示成一个向量,每个元素表示词项出现在主题中的概率,即
- 用 表示所有主题 在文档 上的一个多项分布,则 可以表示成一个向量,每个元素表示主题出现在文档中的概率,即
这样,巧妙的把和转换成了两个矩阵。换言之,最终我们要求解的参数是这两个矩阵:
由于词和词之间是相互独立的,所以整篇文档N个词的分布为:
再由于文档和文档之间也是相互独立的,所以整个语料库中词的分布为(整个语料库M篇文档,每篇文档N个词):
其中,
表示词项
在文档
中的词频,
表示文档di中词的总数,显然有
。
从而得到整个语料库的词分布的对数似然函数(下述公式中有个小错误,正确的应该是:N为M,M为N):
现在,我们需要最大化上述这个对数似然函数来求解参数 和 。对于这种含有隐变量的最大似然估计,可以使用EM算法。EM算法,分为两个步骤:先E-step,后M-step。
- E-step:假定参数已知,计算此时隐变量的后验概率。
利用贝叶斯法则,可以得到:
- M-step:带入隐变量的后验概率,最大化样本分布的对数似然函数,求解相应的参数。
观察之前得到的对数似然函数 的结果,由于文档长度 可以单独计算,所以去掉它不影响最大化似然函数。此外,根据E-step的计算结果,把 代入 ,于是我们只要最大化下面这个函数 即可(下述公式中有个小错误,正确的应该是:N为M,M为N):
这是一个多元函数求极值问题,并且已知有如下约束条件(下述公式中有个小错误,正确的应该是:M为N):
熟悉凸优化的朋友应该知道,一般处理这种带有约束条件的极值问题,常用的方法便是拉格朗日乘数法,即通过引入拉格朗日乘子将约束条件和多元(目标)函数融合到一起,转化为无约束条件的极值问题。
这里我们引入两个拉格朗日乘子 和 ,从而写出拉格朗日函数(下述公式中有个小错误,正确的应该是:N为M,M为N):
因为我们要求解的参数是 和 ,所以分别对 和 求偏导,然后令偏导结果等于0,得到(下述公式中有个小错误,正确的应该是:N为M,M为N):
消去拉格朗日乘子,最终可估计出参数 和 (下述公式中有个小错误,正确的应该是:N为M,M为N):
综上,在pLSA中:
- 由于和未知,所以我们用EM算法去估计这个参数的值。
- 而后,用表示词项出现在主题中的概率,即,用表示主题出现在文档中的概率,即,从而把转换成了“主题-词项”矩阵Φ(主题生成词),把转换成了“文档-主题”矩阵Θ(文档生成主题)。
- 最终求解出、。
六 随机采样方法
详细见参考文献5、13
随机模拟也可以叫做蒙特卡罗模拟(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行编程实现。 随机模拟中有一个重要的问题就是给定一个概率分布p(x),我们如何在计算机中生成它的样本。一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的。 通过线性同余发生器可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,这些序列的各种统计指标和均匀分布 Uniform(0,1) 的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。
下面总结这么几点:
1、蒙特卡洛数值积分
2、均匀分布,Box-Muller 变换
3、Monte Carlo principle
4、接受-拒绝抽样(Acceptance-Rejection sampling)
5、重要性抽样(Importance sampling)
6、马尔科夫链,马尔科夫稳态
7、MCMC——Metropolis-Hasting算法
8、MCMC——Gibbs Sampling算法
参考资料
- Blei, David M.; Ng, Andrew Y.; Jordan, Michael I. Latent Dirichlet allocation(LDA原始论文):http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf。
- Blei. Probabilistic Topic Models:http://www.cs.princeton.edu/~blei/papers/Blei2012.pdf,一网友的翻译:http://www.cnblogs.com/siegfang/archive/2013/01/30/2882391.html;
- 似然函数维基百科:https://zh.wikipedia.org/wiki/%E4%BC%BC%E7%84%B6%E5%87%BD%E6%95%BO;
- rickjin的LDA数学八卦http://emma.memect.com/t/9756da9a47744de993d8df13a26e04e38286c9bc1c5a0d2b259c4564c6613298/LDA;
- 随机采样方法整理与讲解(MCMC. Gibbs Sampling等:http://www.cnblogs.com/xbinworld/p/4266146.html?utm source=tuicool&utm一 medium=referral
- 机器学习班第12次课上,邹博讲主题模型LDA的PPT:http://pan.baidu.com/s/1jGghtQm;
- 主题模型之pLSA:http://blog.jqian.net/post/plsa.html;
- 主题模型之LDA:http://blog.jqian.net/post/lda.html;
- LDA的EM推导:http://www.cnblogs.com/hebin/archive/2013/04/25/3043575.html;
- Machine Learning读书会第8期上,沈博讲主题模型的PPT:http://vdisk.weibo.com/s/zrFL6OXKgKMAf;
- 二项分布和多项分布,beta分布的对比:http://www.cnblogs.com/wybang/p/3206719.html;
- 带你理解beta分布http://blog.csdn.net/a358463121/article/details/52562940
- LDA-math-MCMC和Gibbs Sampling:
http://cos.name/2013/01/Ida-math-mcmc-and-gibbs-samp1ing/
- 通俗理解LDA
http://blog.csdn.net/v_july_v/article/details/41209515?utm_source=tuicool&utm_medium=referral;