说说LDA这名字
LDA(Latent Dirichlet Allocation)
Latent – 隐
Dirichlet – 狄利克雷
Allocation – 分配
先说说贝叶斯网络
被认为是最早的graphical model,把变量和变量之间的关系用图来表示
再说说Dirichlet分布
LDA里面的D就是指的Dirichlet分布,它基本上就是一个分布的分布。
Dirichlet分布的公式长这样(下图),其中x的数量=
α
\alpha
α的数量
Dirichlet分布可以有多维度,它的特点是各个维度上相加的和等于1。举个栗子:
上图就是一个三维的Dirichlet分布。当
α
\alpha
α(向量)的值取(1,1,1)的时候(左上角的图,即第一个图,一个俯视图),它的侧视图就是右上角的图,在红色那个面上取点,而取到每一个点的概率是相同的。当
α
\alpha
α的值取(2,2,2)的时候,就是中间上方的那个图,咱们可以看出颜色上有和第一个图不同的地方,其中约中间越黑,越黑它取点的概率就越大,而其周边基本是白色,表示的就是取点的概率小。同理,当
α
\alpha
α值取不同的时候,如下面三个图,它们在上面取点的概率也各不相同。
再比如,第一个图(左上角),当我们采样取点出一个点的时候,它的坐标是(x1, x2, x3), 这三个值相加的和等于1 (x1 + x2 + x3 = 1), 因此如果是多(n)维的话,取点的坐标是(x1, x2, x3,…,xn),其加和也会是1(x1 + x2 + x3 + … + xn = 1)。所以Dirichlet分布可以看成是分布的概率分布。
再说回LDA
关于topic
现在假如我们有100份小学生的作文,每篇作文有20~30个不同的topic。这个topic不是说每篇作文那指定的topic,比如记一件难忘的事儿,不是这个,而是一堆词的合集。
LDA是一个生成模型。说多层的贝叶斯模型。
我们假定一套文本是LDA模型,我们建出来个LDA,然后用现有的数据,看看能不能推测出LDA里的topic的分布和topic词的分布
θ
\theta
θ服从Dir(
α
\alpha
α)分布,
α
\alpha
α给定一个K,K代表维度,K维度的
α
\alpha
α这样一个超参的时候,我们可以生成一个K维的向量
θ
\theta
θ,这个
θ
\theta
θ的各个分量的和等于1,因此我们可以把
θ
\theta
θ当成一个概率分布。
z服从P(
θ
\theta
θ),意思是在给定
θ
\theta
θ分布的时候,取样一个z,z就是一个topic
到这一步稍微总结下:先从Dirichlet分布里采样个
θ
\theta
θ出来,再从
θ
\theta
θ分布里踩样个z出来。z是个topic,topic里又包含一堆词。
θ
\theta
θ如图中最右边圈圈里的红黄蓝分布图,每个颜色代表一个topic,红+黄+蓝=1。z就是右手边第二个图里各种颜色的topics。但是具体这颜色(topic)里取哪一个词呢,就得借助
β
\beta
β了,就是左一那个图,里面包含了所有词的系数。每种颜色(topic)里都包含了一堆词。
因此一个词是结合这z和
β
\beta
β一起生成出来的。
当把
β
\beta
β又升华一波,让它也有一个上层的Dirichlet分布,整个模型就成了主题模型。这时候
β
\beta
β就成了另一个超参了
Simplex
Topic是词的概率分布,文本是topic的概率分布
一个topic包含了一堆词,其中每个词(word)都有一个概率,所有的词的概率加起来是1,这个叫做simplex. 同理,文本也是如此。分别是word simplex和topic simplex。
LSA 和 PLSA
LSA的核心是SVD(奇异值分解),PLSA是在LSA的基础上引入了概率