隐含狄利克雷分布

隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。

LDA首先由Blei, David M.、吴恩达和Jordan, Michael I于2003年提出[1],目前在文本挖掘领域包括文本主题识别、文本分类以及文本相似度计算方面都有应用。

数学模型[编辑]

LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

LDA贝叶斯网络结构

另外,正如Beta分布二项式分布的共轭先验概率分布,狄利克雷分布作为多项式分布的共轭先验概率分布。因此正如LDA贝叶斯网络结构中所描述的,在LDA模型中一篇文档生成的方式如下:

  • 从狄利克雷分布{\displaystyle \alpha }\alpha 中取样生成文档i的主题分布{\displaystyle \theta _{i}}\theta _{i}
  • 从主题的多项式分布{\displaystyle \theta _{i}}\theta _{i}中取样生成文档i第j个词的主题{\displaystyle z_{i,j}}z_{​{i,j}}
  • 从狄利克雷分布{\displaystyle \beta }\beta 中取样生成主题{\displaystyle z_{i,j}}z_{​{i,j}}的词语分布{\displaystyle \phi _{z_{i,j}}}\phi _{​{z_{​{i,j}}}}
  • 从词语的多项式分布{\displaystyle \phi _{z_{i,j}}}\phi _{​{z_{​{i,j}}}}中采样最终生成词语{\displaystyle w_{i,j}}w_{​{i,j}}

因此整个模型中所有可见变量以及隐藏变量的联合分布

{\displaystyle p(w_{i},z_{i},\theta _{i},\Phi |\alpha ,\beta )=\prod _{j=1}^{N}p(\theta _{i}|\alpha )p(z_{i,j}|\theta _{i})p(\Phi |\beta )p(w_{i,j}|\theta _{z_{i,j}})}p(w_{i},z_{i},\theta _{i},\Phi |\alpha ,\beta )=\prod _{​{j=1}}^{​{N}}p(\theta _{i}|\alpha )p(z_{​{i,j}}|\theta _{i})p(\Phi |\beta )p(w_{​{i,j}}|\theta _{​{z_{​{i,j}}}})

最终一篇文档的单词分布的最大似然估计可以通过将上式的{\displaystyle \theta _{i}}\theta _{i}以及{\displaystyle \Phi }\Phi 进行积分和对{\displaystyle z_{i}}z_{i}进行求和得到

{\displaystyle p(w_{i}|\alpha ,\beta )=\int _{\theta _{i}}\int _{\Phi }\sum _{z_{i}}p(w_{i},z_{i},\theta _{i},\Phi |\alpha ,\beta )}p(w_{i}|\alpha ,\beta )=\int _{​{\theta _{i}}}\int _{​{\Phi }}\sum _{​{z_{i}}}p(w_{i},z_{i},\theta _{i},\Phi |\alpha ,\beta )

根据{\displaystyle p(w_{i}|\alpha ,\beta )}p(w_{i}|\alpha ,\beta )的最大似然估计,最终可以通过吉布斯采样等方法估计出模型中的参数。

使用吉布斯采样估计LDA参数[编辑]

在LDA最初提出的时候,人们使用EM算法进行求解,后来人们普遍开始使用较为简单的Gibbs Sampling,具体过程如下:

  • 首先对所有文档中的所有词遍历一遍,为其都随机分配一个主题,即zm,n=k~Mult(1/K),其中m表示第m篇文档,n表示文档中的第n个词,k表示主题,K表示主题的总数,之后将对应的n(k)m+1, nm+1, n(t)k+1, nk+1, 他们分别表示在m文档中k主题出现的次数,m文档中主题数量的和,k主题对应的t词的次数,k主题对应的总词数。
  • 之后对下述操作进行重复迭代。
  • 对所有文档中的所有词进行遍历,假如当前文档m的词t对应主题为k,则n(k)m-1, nm-1, n(t)k-1, nk-1, 即先拿出当前词,之后根据LDA中topic sample的概率分布sample出新的主题,在对应的n(k)m, nm, n(t)k, nk上分别+1。

{\displaystyle p(z_{i}=k|z_{-i},w)}p(z_{i}=k|z_{​{-i}},w){\displaystyle (n_{k,-i}^{(t)}+\beta _{t})(n_{m,-i}^{(k)}+\alpha _{k})/(\sum _{t=1}^{V}n_{k,-i}^{(t)}+\beta _{t})}(n_{​{k,-i}}^{​{(t)}}+\beta _{t})(n_{​{m,-i}}^{​{(k)}}+\alpha _{k})/(\sum _{​{t=1}}^{​{V}}n_{​{k,-i}}^{​{(t)}}+\beta _{t})

  • 迭代完成后输出主题-词参数矩阵φ和文档-主题矩阵θ

{\displaystyle \phi _{k,t}=(n_{k}^{(t)}+\beta _{t})/(n_{k}+\beta _{t})}\phi _{​{k,t}}=(n_{k}^{​{(t)}}+\beta _{t})/(n_{k}+\beta _{t})

{\displaystyle \theta _{m,k}=(n_{m}^{(k)}+\alpha _{k})/(n_{m}+\alpha _{k})}\theta _{​{m,k}}=(n_{m}^{​{(k)}}+\alpha _{k})/(n_{m}+\alpha _{k})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值