看了几天的LDA,云里雾里的,总算理清一些了。
在LDA里面,先看一个文档时怎么生成的。
对于一篇文档,首先我们要选择文档的长度,然后由于一篇文档可能对应多个主题,所以其次我们得选择对应这个文档的主题的分布,也就是对应哪些主题的概率大,最后再根据主题对应的词的分布生成每一个单词。在这里,主题其实就是一个所有单词的一个概率分布,比如topic1 = [0.1,0.2,0.3,0.4],topic2 = [0.2,0.3,0.3,0.2],这里意思是只有4个单词,那么两个主题的区别就是对应的概率分布的区别。
那么在实际当中,并不知道一篇文档对应的topic分布,那么我们怎么去找出这个分布呢?
在parameter estimation for text analysis中介绍的Gibbs sampling中,先假设每一个单词对应的topic的概率是一样的,这相当于在一个收敛的马尔科夫链中那个初始状态,然后我们利用一个根据当前统计得出的状态转移矩阵来做状态转移,这里的状态就对应单词的topic,也就是将我们原来统一赋值的topic进行更改,这样的转换不断进行,直到Gibbs sampling收敛,最后再根据当前的每个单词的topic计算出topic-word矩阵和doc-topic矩阵。这里为什么会收敛,可以参考Rickjin的LDA数学八卦。
下面的对应的采样伪代码:
对应的参数
待续