Topic model 在搜索和广告,用户兴趣理解,推荐系统中有着非常泛的应用。它可以成为retrieval的方法,成为点击模型的信号,也是推荐系统中基于内容推荐的重要算法。Topic model最近这些年很火的原因是其在语料准备上比supervised model更容易,不需要人工的标注信息。对于我们应用模型的工程师而言,在原理上搞清楚几种常见的topic model的区别很重要,虽然影响实际应用效果的因素更主要的与训练语料,应用场景有关,但弄清几个算法的区别是使用topic model的前提条件。 topic models中,对unigram model和PLSA的理解非常重要。LDA虽然推理方式最复杂,公式最多,但只是个纸老虎,个人觉得理解前两者(及其区别)比理解后者也许更困难。
Naive Bayes和Mixture unigram Model
我们可以先想想如果做的是一个文本分类的问题,已知label及被observed的词们。我们怎么解?svm? logistic regression? 思路对了,就用很直接的线性分类模型就行了。用logistic regression实际上是用下面的模型在训练模型的参数(见下图)
,如果是从generative model的角度,我们会用naive bayes. 但是如果大多数词们在两类中的分布区分性较高(P(w|c_1)>>P(w|c_2)),对于很多train/test sample就会有over confidence的问题。关于over confidence,可以举这样一个例子,两个词共同出现的概率很大( P(w_1,w_2|c_i) > P(w_1|c_i)P(w_2|c_i) ),另假设 P(w_1|c_1)=P(w_2|c_1)=0.1 及P(w_1|c_2)=P(w_2|c_2)=0.01,求后验P(t|w1,w2)时我们会过多的估计,求解
。但由于实际情况w1和w2共现的可能性远比0.1*0.1来得大很多(极端情况下w1,w2总是共同出现,则后验概率只有90%而已),所以这个估计太乐观了。 更进一步地,如果没有label,就是我们所说的mixture unigram model(见下图)。
PLSA
前面提到了PLSA,按照各种论文中介绍PLSA基本都是从产生式模型着手,先选d,再先t,再选w,每次选择都引入一个分布。有个简单的解释是P(W|d)可以看成P(W|t)的线性组合(simplex),这并不是从图的角度来理解模型。从图模型的角度,可以有两种理解PLSA的方法,一种是论文中常用的方法,把表达document的随机变量D引入,其实这个引入及把(d,w)当成一个事件,对于理解这个问题没有任何好处。一个很简单的疑问就是,我们如果把观测看成是(d,w1,w2,w3..)而不是(d,w1) (d,w2) (d,w3),不是更符合现实吗?这两种理解有什么区别。其实把观测看成什么都无所谓,从likelihood function或EM的后验的形式看我们很容易知道这两者是等价的。(d,w1,w2,w3)的方式容易让人理解模型本身,(d,w1),(d,w2)…的方式容易让人理解计算过程,也和LSA更接近一些。其实,如果我们把PLSA画成下图的形式,跟d没有关系。
不论是unigram model还是PLSA,我们都可以用perplexity这个度量在训练集和测试集上看模型likelihood function上对数据解释的是否好.通常来说,如果模型中的topic数量相同, PLSA在训练集上的perplexity会比unigram model好. PLSA为每个词都设计了一个hidden topic,如果加一个约束,即一个document对应的topic必须相同,那么它等价于unigram model.
LDA
PLSA可能发生的问题是overfitting,加入multinomial的conjugate prior是解决overfitting的一个思路。尝试对PLSA的参数加入一些先验,就会得到LDA最基本的形式。理解LDA的难点不仅在于如何理解gibbs sampling 或是variation bayes 或EP. 而在于理解后验P(T|W)无法拆解成P(t_j|w_i)来解. P(W)没有闭式解,所以就只能依赖蒙特卡罗等方法做近似.