一堆数学公式,又是一堆数学公式,爬着看完了。可这玩意干嘛的啊?%>_<%

我就想了这么一个帮助理解LDA的低智商方法,暂时写了五问。留着备忘。

如果我的理解不妥当,欢迎拍砖。或者大家有好问题,欢迎贴出来探讨。

 

一问:LDA是啥?

Latent Dirichlet allocation(狄利克雷分配)的缩写,由Blei, NG, Jordan提出,发表在2003年1月的JMLR上。

LDA是机器学习中一个生成模型。

 

生成模型就是一个条件概率。先从数据中学习联合分布P(X, Y),然后求出条件分布P(Y|X),作为预测的模型。

对应到LDA,Y就是主题,X就是文章。来了一篇新文章,放到条件概率里一算就知道里边有多少主题。

因为这个模型不是直接从数据中学来的,要通过条件概率公式计算得来,所以叫生成模型(?)

Naive Bayes,HMM啥的,都是生成模型。

与生成模型对应的是判别模型。判别模型直接从数据中学习判别函数f(X)或者条件分布P(Y|X)作为预测模型。

kNN,C4.5,LR,ME,SVM,boost,CRF都是判别模型。

 

二问:LDA是干嘛的?

LDA是文本语料库的隐语义分析(LSA)的工具。可用于文本分类,聚类,主题挖掘,信息检索、情感分析等。

LDA要发现文本语料中的“主题”结构。主题就是文章讨论的对象,或者对象的类别。

主题表示为词项的多项分布,就是说这个主题里边都有哪些词,这些词的概率都是多少。

 

三问:LDA是怎么做的?

由一问中生成模型的解释,我们知道LDA的目标就是要获得给定文档下主题的条件分布P(Z|D)。

由于D是由词袋模型表示的,而且开放测试中的文档很少已经出现过,所以我们考虑得到P(Z|W)。

首先我们要获得主题与词项联合分布P(Z,W),然后计算 P(Z|W)/P(W)。

 

四问:LDA用到了哪些知识,它们都是用来干嘛的?

Dirichlet分布可以看做是“分布之上的分布”,从Dirichlet分布上抽取的每个样本就是多项分布的参数向量。

参数精确推断很困难,所以用Gibbs抽样来解决参数

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_条件概率

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_算法模型_02

的近似推断问题。

就是为每个主题k找到一个词项分布

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_生成模型_03

,再为篇文章m找到一个主题分布

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_数据_04

Gibbs抽样是MCMC抽样的一个特殊情况。我们知道(不知道也没关系,看LDA数学八卦)马尔科夫链有个稳态定理,就是说如果一个马氏链任意两个状态之间相互连通,那么经过若干步转移以后,马氏链的状态会稳定在某个向量上。MCMC抽样就是先让马氏链进入稳态(burn-in 阶段),这就得到一个稳定的分布,然后每次转移都能获得这个稳定分布的一个样本。

 

五问:介绍一下LDA用到概率知识

我们知道:后验=先验+似然。如果先验可以使计算得来的后验与先验具有相同的形式,就说先验与似然共轭。

Beta分布与二项分布共轭,说的就是Beta分布做先验,加上二项分布似然(就是二项分布的统计数据),得到的后验分布形式和Beta分布仍然一样。写成公式就是:

 

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_数据_05

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_生成模型_06

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_生成模型_07

Dirichlet分布与多项分布共轭,说的是Dirichlet分布做先验,加上多项分布似然(多项分布的数据),得到的后验分布形式与Dirichlet分布一样。

写成公式:

 

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_生成模型_08

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_生成模型_09

基于 LDA 模型的电商产品评论数据情感分析 什么是lda模型_数据_10

 

较详细的数学推导可以看 Rickjin的《LDA数学八卦》 

好了,看完了这些,你就可以去看这篇文章:LDA及Gibbs Sampling

作者yangliuy在Heinrich的Parameter estimation for text analysis一文中加入了自己的理解和易懂的例子。

也可以直接去看原文,我自己也翻译了原文的第5、第6部分:LDA翻译

弄懂了概念和算法和公式,就可以对照着看实现了,最基本的实现是Heinrich写的 LdaGibbsSampler