LDA主题模型
看了知乎上的的《达观数据》写的LDA主题模型介绍的文章,趁着刚看完记录下一些感受和理解,免得之后忘了,然后最近我也要利用这个模型做一个出行目的模式的探究,因此这个过程中有新的理解也会不断加入。
1.关于《达观数据》LDA文章的一些个别地方的备注与笔记
- LDA这个模型主要是用一些文本数据(一些文档(document),每篇文档中有很多word组成),然后用这些文本数据去做训练,训练LDA模型,训练LDA模型的过程其实是要知道topic的分布和各个topic下的各个word的分布。topic的分布需要知道参数 θ \theta θ,已知topic下的word分布需要知道参数 ϕ \phi ϕ,然后利用训练好的模型做推断的过程实际上是用训练好的 ϕ \phi ϕ作为测试集的 ϕ \phi ϕ,然后需要计算出测试集的 θ \theta θ,知道了测试集中的 θ \theta θ后,其实也就是知道了该文档的topic的分布,也就是知道这篇文档属于各个topic的概率。于是利用LDA模型可以推断文档的主题。
- LDA模型的直观解释:首先初始化topic分布的参数,然后初始化各个topic下word分布的参数。知道了参数分布后,便可以开始生成文档了,首先利用topic的分布估计一篇文档每个word是各个topic的概率,然后在每个word每个topic概率下估计是各个word的概率,于是就可以按照这样的思路不断生成word,直到组成这一篇文档,但是我们知道,刚开始随机初始化的参数下生成的文档和真实的文档肯定差异巨大,因此需要不断地迭代去改进参数,直到最后在某一组参数下,生成的文档和真实的文档很吻合(收敛),那么此时的参数就是最优的参数了,这样LDA模型也就训练好了。这个过程在《达观数据》的文章里是这样描述的:
- 《达观数据》LDA主题模型介绍的文章里的这一部分——“3.3.4 使用Gibbs Sampling进行采样”实际上就是使用Gibbs Sampling方法来使随机初始化的参数逐渐达到收敛的过程,我的理解是这实际上就是一种利用训练集计算出最优的参数的方法。最后的公式如下图所示:
也就是一篇文档中各个word属于某种topic的概率,其实也就是这篇文档所属主题的概率分布了。
-
这篇文章写得更通俗一点,没有很多的数学解释,可以看看加深理解。但是这一篇博客上似乎认为LDA模型是求出Dirichlet 的参数
α
\alpha
α和
β
\beta
β,并以此训练好模型去预测的,而知乎中的文章则是认为
α
\alpha
α和
β
\beta
β是超参数,训练时学习的是
ϕ
\phi
ϕ,也就是word的分布的参数。《达观数据》的文章的思路如下:
目前我还不能确定哪种说法更准确,还需要进一步查阅一些资料。
经过网上一些资料的查阅,以上两篇文章的说法应该都是正确的,首先,
α
\alpha
α和
β
\beta
β确实应该都是超参数,****博客中所写的应该和原文差不多,就是用EM算法来最优化超参数,而知乎的文章写的则是不去最优化超参数,首先人为设定超参数,然后在此基础上去训练模型,并在测试集上测试。若使用EM算法最优化超参数的话,则不用设置两个超参数了,否则建议设置为
α
=
50
/
K
\alpha=50/K
α=50/K和
β
=
0.01
\beta=0.01
β=0.01。这个链接的文章说明了原作中是用EM算法最优化超参数的。
该博客则是进行了LDA模型各种参数的调节方法。
该博客中有一个python实现的例子可以一看。
参考文献
1.https://zhuanlan.zhihu.com/p/31470216
2.https://blog.****.net/huagong_adu/article/details/7937616