LDA数学八卦

LDA数学八卦

Game 9 Unigram Model

  1. 上帝 只有一个骰子 ,这个骰子有V个面,每个面对应一个词、各个面的概率不一
  2. 每抛一次骰子,抛的面就对应一个词的产生;如果一篇文档有n个词,上帝就独立地抛n次骰子产生n个词

变量:$\overset{\rightarrow}{p}=(p_1,p_2,…,p_V)$,样本:语料 $\mathscr{W}$

各个面的概率 $\overset{\rightarrow}{p}=(p_1,p_2,…,p_V)$ 抛骰子过程 多项分布 $w \sim Multi(w \vert \overset{\rightarrow}{p})$

对于一篇文档 $d=\overset{\rightarrow}{w}=(w_1,w_2,….,w_n)$ ,故而该文档产生的概率为:
$$p(\overset{\rightarrow}{w})=\prod_{i=1}^n{p(w_i)}$$

$p(w_i)$ 第i个词 $w_i$ 出现一次的概率

语料库中包含m篇文档 $\mathscr{W}=(\overset{\rightarrow}{w_1},\overset{\rightarrow}{w_2},…,\overset{\rightarrow}{w_m})$ 对应的语料概率为:
$$p(\mathscr{W})=\prod_{i=1}^{m}{p(\overset{\rightarrow}{w_i})}$$

在Unigram Model中,假设文档之间是独立的,文档之间的词也是独立的,词袋模型(Bag of words)

故上述问题可进行简化:
统计整个语料共有V个词, 其中第i词 $w_i$ 的词频 $n_i$ ( $i \in(1,V),\sum_{i=1}^{V}n_i=N$ ),整个语料库就是一个多项分布模型:
即 $\overset{\rightarrow}{n}=(n_1,n_2,…,n_k)$ 恰是一个多项分布:
$$p(\overset{\rightarrow}{n})=Multi(\overset{\rightarrow}{n} \vert \overset{\rightarrow}{p},N)=\binom{N}{\overset{\rightarrow}{n}}\prod_{j=1}^{V}{p_j^{n_j}}$$

$$p(\mathscr{W})=\prod_{i=1}^{m}{p(\overset{\rightarrow}{w_i})}=\binom{N}{\overset{\rightarrow}{n}}\prod_{j=1}^{V}{p_j^{n_j}}$$

统计学派:
$$\hat{p_i}=\frac {n_i}{N}$$

Problem:贝叶斯学派认为只有一个骰子的设定不合理,即参数也符合一个分布

Game 10 贝叶斯Unigram Model假设

  1. 上帝有一个装有 无穷多个骰子 的坛子,里面有各式各样的骰子,每个骰子有V个面
  2. 上帝从坛子中抽取一个骰子出来, 然后用这一个骰子不断地抛,然后产生了语料中的所有词

限制放宽: 多个骰子但只有V个面的骰子,而且只用其中一个骰子

先验: $\overset{\rightarrow}{\alpha}$,Dirichlet更新参数: $\overset{\rightarrow}{\rho}$

选中骰子各面抛出的概率服从先验 $\overset{\rightarrow}{\rho} \sim q(\overset{\rightarrow}{\rho})$ ,因此语料的分布概率:

$$p(\mathscr{W})=\int p(\mathscr{W} \vert \overset{\rightarrow}{\rho})q(\overset{\rightarrow}{\rho})d\overset{\rightarrow}{\rho}$$

$$p(\overset{\rightarrow}{n})=Multi(\overset{\rightarrow}{n} \vert \overset{\rightarrow}{\rho},N)$$

假设此处 $\overset{\rightarrow}{\rho} \sim q(\overset{\rightarrow}{\rho})=Dir(\overset{\rightarrow}{\alpha})$ ,其中 $\alpha_i$ 为被选中骰子抛出第i面的概率。

$$Dir(\overset{\rightarrow}{\rho} \vert \overset{\rightarrow}{\alpha})= \frac {1}{\Delta(\overset{\rightarrow}{\alpha})} \prod_{k=1}^{V}\rho_k^{\alpha_{k}-1}$$

$$\Delta(\overset{\rightarrow}{\alpha})=\int{\prod_{k=1}^V{\rho_k^{\alpha_k-1}}}d\overset{\rightarrow}{\rho} \quad\quad \tiny{归一化因子,令Dir符合一个分布,[0,1]}$$

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouxD5T0I-1634471260497)(./img/UnigramModel的概率图模型.png)]

语料词频: $\overset {\rightarrow}{n}$

$$p(\overset{\rightarrow}{\rho} \vert \mathscr{W}, \overset{\rightarrow}{\alpha})=Dir(\overset{\rightarrow}{\rho} \vert\overset{\rightarrow}{\alpha} + \overset{\rightarrow}{n})$$

故:
$$E(\overset{\rightarrow}{\rho})=(\frac {n_i+\alpha_i}{\sum_{j=1}^V(n_j+\alpha_j)})_{i=1}^V$$
语料产生的概率:

$$
\begin{aligned}
p(\mathscr{W} \vert \overset{\rightarrow}{\alpha}) &= \int p(\mathscr{W} \vert \overset{\rightarrow}{\rho},\overset{\rightarrow}{\alpha})d\overset{\rightarrow}{\rho}\
&=\int p(\mathscr{W} \vert \overset{\rightarrow}{\rho}) p(\overset{\rightarrow}{\rho} \vert \overset{\rightarrow}{\alpha}) d\overset{\rightarrow}{\rho}\
&=\int \prod_{k=1}^V{\rho_k^{n_k}Dir(\overset{\rightarrow}{p}\vert \overset{\rightarrow}{\alpha})}d \overset{\rightarrow}{\rho}\
&=\int \prod_{k=1}^V{\rho_k^{n_k} \frac 1 {\Delta(\overset{\rightarrow}{\alpha})} \prod_{j=1}^V \rho_j^{\alpha_j-1}}d \overset{\rightarrow}{\rho}\
&=\frac 1 {\Delta(\overset{\rightarrow}{\alpha})} \int \prod_{k=1}^V{\rho_k^{n_k+\alpha_k-1}} d \overset{\rightarrow}{\rho}\
&=\frac {\Delta(\overset{\rightarrow}{\alpha}+\overset{\rightarrow}{n})} {\Delta(\overset{\rightarrow}{\alpha})}
\end{aligned}$$

结合PLSA(Probabilistic Latent Semantic Analysis)模型,一篇文档对应主题分布,一个主题对应词分布

Game 11 PLSA Topic Model

  1. 上帝有两种类型的骰子,一类是doc-topic骰子,每个doc-topic骰子有K个面每个面对应一个topic编号;另一类是topic-word骰子,每个topic-word骰子有V个面,每个面对应一个词
  2. 上帝 一共有K个topic-word骰子 ,每个骰子有一个编号,编号1,2,…,K
  3. 生成每篇文档之前,上帝都会先为这片文章制造 一个特定的doc-topic骰子 ,然后重复一下过程,生成每个文档中的单词
    • 投掷这个doc-topic骰子,得到一个topic编号z
    • 选择K各topic-word骰子中编号为z的那个,投掷这个骰子,于是得到一个词

该规则下,文档之间是独立的,词之间也是独立地,还是一个词袋模型

K个topic-word骰子,对应的 $\varphi_1,\varphi_2,…,\varphi_K$ 为每个主题的词概率分布
对于包含M篇文档的语料 $C=(d_1,d_2,…,d_M)$ 中每篇文档 $d_m$ 都会有一个特定的 doc-topic骰子 $\theta_m$ 为当前文档的主题概率分布

对于文档 $d_m$ 下某个词的生成概率:
$$p(w\vert d_m)=\sum_{z=1}^K{p(w\vert z) p(z \vert d_m)}=\sum_{z=1}^K{\varphi_{zw}\theta_{mz}}$$

对于文档 $d_m$ 的概率:
$$p(w \vert d_m)=\prod_{i=1}^{n_{d_m}}\sum_{z=1}^K{p(w_i\vert z) p(z \vert d_m)}=\prod_{i=1}^{n_{d_m}}\sum_{z=1}^K{\varphi_{zw_i}\theta_{mz}}$$

对于语料C的概率:
$$p(C)=\prod_{m=1}^{M}{p(w\vert d_m)}$$

贝叶斯Problem:doc-topic骰子 $\theta_m$ 和 topic-word骰子 $\varphi_k$都是模型的参数,参数为随机变量也要服从一个先验分布

LDA Topic Model

  1. 上帝有两个坛子,第一个毯子撞的是doc-topic骰子,第二个坛子装的是topic-word骰子
  2. 上帝随机的 从第二个坛子中独立地抽取K个topic-word骰子 ,编号为1,2,…,K
  3. 生成每篇文档之前,上帝都会现 从第一个坛子中随机抽取一个doc-topic骰子 ,然后重复一下过程,生成每个文档中的单词
    • 投掷这个doc-topic骰子,得到一个topic编号z
    • 选择K各topic-word骰子中编号为z的那个,投掷这个骰子,于是得到一个词

假设语料库中有M篇文档,所有的word和对应的topic如下:
$$W=(w_1,w_2,…,w_M)\Z=(z_1,z_2,…,z_M)$$

$w_m$ 第m篇文档中的所有词, $z_m$ 第m篇文档对应的所有主题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWzVa4Eb-1634471260499)(./img/语料生成过程中的word和topic.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-swY7XCit-1634471260501)(./img/LDA图模型.png)]

$\alpha,\beta$ 为先验分布,选择Dirichlet分布

概率图:

  1. $\overset{\rightarrow}{\alpha}\rightarrow \overset{\rightarrow}{\theta_m}\rightarrow z_{m,n}$ :生成第m篇文档时,现从第一个坛子中抽取一个doc-topic骰子 $\overset{\rightarrow}{\theta_m}$ ,然后投掷该骰子生成该文档第n个词对应的主题编号 $z_{m,n}$
  2. $\overset{\rightarrow}{\beta}\rightarrow \overset{\rightarrow}{\varphi_k}\rightarrow w_{m,n} \vert k=z_{m,n}$: 生成第m篇中的第n个词:在K个topic-word骰子中选取编号为 $k=z_{m,n}$ ,投掷生成词 $w_{m,n}$

Dirichlet-Multinomial共轭结构:
生成第m篇文档时所有词对应的主题
$\overset{\rightarrow}{\alpha}\rightarrow \overset{\rightarrow}{\theta_m}\rightarrow \overset{\rightarrow}{z_{m}}$

$$p(\overset{\rightarrow}{z_{m}}\vert \overset{\rightarrow}{\alpha})=\frac {\Delta(\overset{\rightarrow}{\alpha}+\overset{\rightarrow}{n_m})} {\Delta(\overset{\rightarrow}{\alpha})}$$

$\overset{\rightarrow}{n_m}=(n_m^{(1)},n_m^{(2)},…..,n_m^{(K)})$ 表示第m篇文档中各个topic产生的词的个数(各个topic的个数)。

$\overset{\rightarrow}{\theta_m}\sim Dir(\overset{\rightarrow}{\theta_m}\vert \overset{\rightarrow}{n_m}+\overset{\rightarrow}{\alpha})$

M篇文档生成相互独立,因此共有M个Dirichlet-Multinomial共轭结构.

在当前规则下,每处理完成一篇文档之后,再处理下一篇文档。文档中的每个词的生成都要抛取两次。如果语料中共有N个词,那么上帝需要抛2N次,轮换的进行doc-topic和topic-word骰子。

基于文档之间,词之间的独立性。
实际上,我们可以前N次只抛doc-topic骰子得到语料中所有词的topic,然后基于topic再抛N次topic-word模型生成N个词

LDA Topic Model 2 (等价)

  1. 上帝有两个坛子,第一个坛子装的是doc-topic骰子,第二个坛子装的是topic-word骰子
  2. 上帝随机的 从第二个坛子中独立地抽取K个topic-word骰子 ,编号为1,2,…,K
  3. 生成每篇文档之前,上帝都会现 从第一个坛子中随机抽取一个doc-topic骰子 ,然后重复投掷这个doc-topic骰子,为每个词生成一个topic编号
  4. 按照生成的topic编号,从K个topic-word骰子中选取编号为 $z_{current}$ 的那个,投掷这个骰子,于是得到当前词

基于以上规则,先生成所有topic,然后对每个词在在给定topic的条件下生成word。 在语料中词的topic已经生成的条件下,任何两个word的生成动作都是可换的。 于是将语料生成词的顺序进行交换,将具有相同topic的词放在一起。

$$\overset{\rightarrow}{w’}=(\overset{\rightarrow}{w_i})_{i=1}^K$$

$\overset{\rightarrow}{w_i}$ 表示第i个topic下生成的词的集合

$$\overset{\rightarrow}{z’}=(\overset{\rightarrow}{z_i})_{i=1}^K$$

$\overset{\rightarrow}{z_i}$ 表示与上面对应词的主题编号,显然 $\overset{\rightarrow}{z_i}$ 的各个分量均相同。

Dirichlet-Multinomial共轭结构:
生成语料中第k个主题时词的分布

$\overset{\rightarrow}{\beta}\rightarrow \overset{\rightarrow}{\varphi_k}\rightarrow \overset{\rightarrow}{w_k}$:

$$p(\overset{\rightarrow}{w_k} \vert \overset{\rightarrow}{\beta})=\frac {\Delta(\overset{\rightarrow}{\beta}+\overset{\rightarrow}{n_k})} {\Delta(\overset{\rightarrow}{\beta})}$$

$\overset{\rightarrow}{n_k}=(n_k^{(1)},n_k^{(2)},….,n_k^{(V)})$ 表示第k个topic下生成各个词的个数

$$\overset{\rightarrow}{\varphi_k} \sim Dir(\overset{\rightarrow}{\varphi_k}\vert \overset{\rightarrow}{n_k}+\overset{\rightarrow}{\beta})$$

K个主题下词的生成相互独立,因此共有K个Dirichlet-Multinomial共轭结构.

$$
\begin{aligned}
p(\overset{\rightarrow}{w},\overset{\rightarrow}{z} \vert \overset{\rightarrow}{\alpha},\overset{\rightarrow}{\beta})&=p(\overset{\rightarrow}{w} \vert \overset{\rightarrow}{z}, \overset{\rightarrow}{\beta}) p(\overset{\rightarrow}{z} \vert \overset{\rightarrow}{\alpha})\
&=\prod_{k=1}^K{p(\overset{\rightarrow}{w_k} \vert \overset{\rightarrow}{\beta})}\prod_{m=1}^{M}{p(\overset{\rightarrow}{z_{m}}\vert \overset{\rightarrow}{\alpha})}\
&=\prod_{k=1}^K{\frac {\Delta(\overset{\rightarrow}{\beta}+\overset{\rightarrow}{n_k})} {\Delta(\overset{\rightarrow}{\beta})}}\prod_{m=1}^{M}{\frac {\Delta(\overset{\rightarrow}{\alpha}+\overset{\rightarrow}{n_m})} {\Delta(\overset{\rightarrow}{\alpha})}}
\end{aligned}$$

$\overset{\rightarrow}{n_k}$ 第k个主题下的词频,$\overset{\rightarrow}{n_m}$ 第m篇文档下主题的频数

Gibbs Sampling

Gibbs 取样的思路,我们需要逐一排除每个词的主题分配,再根据其他词的主题分配和观察到的单词计算当前词的主题,即求解 $p(z_i=k \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w})$

先验 $(\alpha,\beta)$ 下的联合分布 $p(\overset{\rightarrow}{w},\overset{\rightarrow}{z})$ ,由于 $\overset{\rightarrow}{w}$ 为采样数据(词),只有 $\overset{\rightarrow}{z}$ 为隐变量(主题), 真正需要采样的数据为 $p(\overset{\rightarrow}{z} \vert \overset{\rightarrow}{w})$

语料库 $\overset{\rightarrow}{z}$ 中第i个词对应得topic记为 $z_i$ ,其中 $i=(m,n)$ 表示第m篇文档中第n个词所对应的主题。 用 $\neg i$ 表示去除下标i的词。

Gibbs Sampling: 求得任意一个坐标轴i下的条件分布 $p(z_i=k \vert z_{\neg i},\overset{\rightarrow}{w})$

假设已经观测到 $w_i=t$ 则
$$\begin{aligned}
p(z_i=k \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w}) &= \frac{p(z_i=k , \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w})}{p(\overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w})}\
&= \frac{p(z_i=k , \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w})}{p(\overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}},w_i)}\
&= \frac{p(z_i=k , \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w})}{p(\overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}})\cdot p(w_i)}\
& w_i 为观测变量\
&\propto \frac{p(z_i=k , \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w})}{p(\overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}})}\
&=p(z_i=k,w_i=t\vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}})
\end{aligned}$$

在去除预料中第i个词时有:

$$
p(\overset{\rightarrow}{\theta_m} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}}) = Dir(\overset{\rightarrow}{\theta_m} \vert \overset{\rightarrow}{n_{m,\neg i}}+\overset{\rightarrow}{\alpha})\
p(\overset{\rightarrow}{\varphi_k} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}}) = Dir(\overset{\rightarrow}{\varphi_k} \vert \overset{\rightarrow}{n_{m,\neg i}}+\overset{\rightarrow}{\beta})
$$

Gibbs Sampling 采样概率分布

$$
\begin{aligned}
p(z_i=k \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w}) &\propto p(z_i=k,w_i=t\vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}}) \
&= \int p(z_i=k,w_i=t,\overset{\rightarrow}{\theta_m},\overset{\rightarrow}{\varphi_k} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}})d\overset{\rightarrow}{\theta_m}d\overset{\rightarrow}{\varphi_k}\
&= \int p(z_i=k,\overset{\rightarrow}{\theta_m} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}}) p(w_i=t,\overset{\rightarrow}{\varphi_k} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}})d\overset{\rightarrow}{\theta_m}d\overset{\rightarrow}{\varphi_k}\
&= \int p(z_i=k \vert \overset{\rightarrow}{\theta_m})p(\overset{\rightarrow}{\theta_m} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}}) \cdot p(w_i=t \vert \overset{\rightarrow}{\varphi_k})p(\overset{\rightarrow}{\varphi_k} \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w_{\neg i}})d\overset{\rightarrow}{\theta_m}d\overset{\rightarrow}{\varphi_k}\
&\
&=\int \theta_{mk} \times Dir(\overset{\rightarrow}{\theta_m} \vert \overset{\rightarrow}{n_{m,\neg i}}+\overset{\rightarrow}{\alpha})d\overset{\rightarrow}{\theta_m} \cdot \int \varphi_{kt} \times Dir(\overset{\rightarrow}{\varphi_k} \vert \overset{\rightarrow}{n_{m,\neg i}}+\overset{\rightarrow}{\beta}) d\overset{\rightarrow}{\varphi_k}\
&=E(\theta_{mk})E(\varphi_{kt})\
&=\hat{\theta}{mk} \hat{\varphi}{kt}
\end{aligned}
$$

Dirichlet Process下有(后验):
$$
\hat{\theta}{mk}= \frac {n{m,\neg{i}}^{(k)}+\alpha_k} {\sum_{k=1}^K{(n_{m,\neg{i}}^{(t)}+\alpha_k)}} \quad m篇文档第k个主题 \
\hat{\varphi}{kt}= \frac{n{k,\neg{i}}^{(t)}+\beta_t} {\sum_{t=1}^V{(n_{k,\neg{i}}^{(t)}+\beta_t)}} \quad 第k个主题第t个词
$$

因此LDA模型Gibbs Sampling公式:

$$
p(z_i=k \vert \overset{\rightarrow}{z_{\neg i}},\overset{\rightarrow}{w}) \propto \frac {n_{m,\neg{i}}^{(k)}+\alpha_k} {\sum_{k=1}^K{(n_{m,\neg{i}}^{(t)}+\alpha_k)}} \cdot \frac{n_{k,\neg{i}}^{(t)}+\beta_t} {\sum_{t=1}^V{(n_{k,\neg{i}}^{(t)}+\beta_t)}}\
p(topic_k\vert doc_m)p(word_t \vert topic_k)
$$

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yTLLcma3-1634471260503)(./img/doc_topic_word.png)]

Training & Inference

LDA模型参数为文档主题概率分布 $\theta$ 和 主题词概率分布 $\varphi$

目标:

  • 估计模型中的参数 $(\overset{\rightarrow}{\varphi_i}){i=1}^{K}$ 和 $(\overset{\rightarrow}{\theta_i}){i=1}^M$
  • 对于新来的文档 $doc_{new}$ ,计算该文档的topic分布 $\overset{\rightarrow}{\theta_{new}}$

LDA Training

  1. 随机初始化: 对语料中每篇文档中的每个词w,随机赋予一个topic编号z;
  2. 重新扫描语料库,对每一个词w,按照Gibbs Sampling公式重新采样它的topic,在语料中进行更新
  3. 重复以上语料库的重新采样过程直到Gibbs Sampling收敛
  4. 统计语料库中topic-word共现频率矩阵,该矩阵即为LDA模型

LDA Inference

  1. 随机初始化: 对当前文档中每个词w,随机赋一个topic编号z;
  2. 重新扫描当前文档,按照Gibbs Sampling公式,对每个词w,重新采样它的topic
  3. 重复以上过程直到Gibbs Sampling 收敛
  4. 统计文档中的topic分布,该分布就是 $\overset{\rightarrow}{\theta_{new}}$

Read 《Parameter estimation for text analysis》

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZQKgocjO-1634723973024)(./img/Gibbs_sampling_for_LDA.png)]

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
for m in range(M):
Nm = len(documents[m])
for n in range(Nm):
t = documents[m][n]
N_mk[m][topic[m][n]] -= 1 # okay -1
N_kt[topic[m][n]][t] -= 1
N_kt_tsum[topic[m][n]] -= 1
# probs in the K topics
prob = [(N_kt[k][t] + beta[t] - 1) * (N_mk[m][k] + alpha[k] - 1) / (N_kt_tsum[k] + np.sum(beta) - 1) for k in range(K)]
prob = np.array(prob)
if np.sum(prob) == 0.0:
prob = np.array([1 / len(prob)] * len(prob))
else:
prob = prob / np.sum(prob) # ok
choices = [i for i in range(K)]
k = np.random.choice(choices, p=prob) # 依概率分配主题
# update topic[m][n]
if topic[m][n] != k:
changed += 1
topic[m][n] = k
N_mk[m][k] += 1
N_kt[k][t] += 1
N_kt_tsum[k] += 1
# update theta and phi
for m in range(M):
for k in range(K):
theta[m][k] = (N_mk[m][k] + alpha[k]) / (N_mk_ksum[m] + np.sum(alpha))
for k in range(K):
for t in range(V):
phi[k][t] = (N_kt[k][t] + beta[t]) / (N_kt_tsum[k] + np.sum(beta))

LDA limitations: what’s next?

engineering.intenthq.com

Although LDA is a great algorithm for topic-modelling, it still has some limitations, mainly due to the fact that it’s has become popular and available to the mass recently. One major limitation is perhaps given by its underlying unigram text model : LDA doesn’t consider the mutual position of the words in the document. Documents like “Man, I love this can” and “I can love this man” are probably modelled the same way. It’s also true that for longer documents, mismatching topics is harder. To overcome this limitation, at the cost of almost square the complexity, you can use 2-grams (or N-grams)along with 1-gram.

Another weakness of LDA is in the topics composition: they’re overlapping. In fact, you can find the same word in multiple topics (the example above, of the word “can”, is obvious). The generated topics, therefore, are not independent and orthogonal like in a PCA-decomposed basis, for example. This implies that you must pay lots of attention while dealing with them (e.g. don’t use cosine similarity).

For a more structured approach - especially if the topic composition is very misleading - you might consider the hierarchical variation of LDA, named H-LDA, (or simply Hierarchical LDA). In H-LDA, topics are joined together in a hierarchy by using a Nested Chinese Restaurant Process (NCRP). This model is more complex than LDA, and the description is beyond the goal of this blog entry, but if you like to have an idea of the possible output, here it is. Don’t forget that we’re still in the probabilistic world: each node of the H-DLA tree is a topic distribution.

在这里插入图片描述

-------------再接再厉更进一步---------------