【原创精品】主题模型 - LDA学习笔记(一)

本期编辑:Roy

● 复旦大学物理学士、计算机硕士

● 文本挖掘、机器学习、量化投资

一、概述

1. LDA是什么?

主题模型(Topic Model)

2003年由 Blei, Ng 和 Jordan提出的一种主题模型,可以用来分析文章的主题分布。

概率生成模型(Probabilistic Generative Model)

LDA模型认为一篇文章有若干个主题。

如下图所示:每一个词wi来自不同的主题zi,来自不同主题的概率不同;在每个主题zi下生成每个词的概率不同。所以一个词为wi的概率为:‍‍

LDA 的目的就是为了找出每篇文章的主题概率分布。

例子

有395 篇英文新闻,假设每篇新闻都有20个主题(#数字是拍脑袋得的)。

这样就完成了对于文本数据的降维工作,为进一步分析做好准备。

二、简化模型(掷骰子)

LDA 认为一篇文章由若干主题构成,每一个词都属于某一主题。

可以用抛骰子类比写文章的过程,存在两类不同骰子:

  1. doc-topic 骰子:某篇文章对应不同主题的概率分布。
  2. topic-word 骰子:某个主题对应不同词的概率分布。

生成 N 篇文章(语料库有 V 个不同词,K 个主题)的过程:

Step 1:从 topic-word 坛子抽取 K 个骰子

Step 2:对于每一篇文章,抽取一个新的 doc -topic 骰子

Step 3:抛骰子决定下一个词

三、概率表述

选骰子是Dirichlet,抛骰子是Multinomial

真正处理文本时,为了方便处理:直接分词,不考虑顺序,用 bag-of-words 模型.

比如:抛骰子 3 次,结果是「1, 2, 1」,对应概率是 p(x1,x2,x3)= p(x1=1)p(x2=2)p(x3=1) 。

因为不考虑顺序了,对应的概率是 p(x1,x2,x3) 是多项式分布p(x1,x2,x3)=C(3,2)p(x=1)^2 * C(3,1)p(x=2)。

然后在求后验分布时,分子上似然概率中的系数和分母归一常数中的系数约掉了,所以文中提到多项式分布的地方都省略掉了多项式分布系数。

求解(Gibbs Sampling)

‍‍我们所能观察到的只是文章 ‍‍W,而用来生成文章的不同骰子是潜变量(latent variables)不能观测。我们所要做的是根据观测到的文章,去推测用了一个什么样的骰子。‍‍‍‍

其中分母部分无法直接求解,需近似求解。可以用 EM、Bayesian Variance、Expectation Propagation、Gibbs Sampling 等不同的方法求解。这里介绍用 Gibbs Sampling 求解的方法。

lda包(源码)

https://github.com/ariddell/lda

以 5 篇文章、2 个主题的 Corpus 为例:

Corpus 用 Doc-Topic Matrix 表示:

五、总结

LDA模型本身简单明了,可以通过 “选骰子 — 抛骰子” 通俗理解。实际求解过程涉及数学背景较多,如:Dirichlet 分布、共轭分布、Bayesian Inference、Gibbs Sampling等。

Reference

  1. Blei D M, Ng A Y, Jordan M I. Latent dirichlet allocation[J]. Journal of Machine Learning Research, 2003, 3:993-1022.
  2. D. Blei. Probabilistic topic models. Communications of the ACM,55(4):77–84, 2012.
  3. Griffiths, Thomas L., and Mark Steyvers. “Finding scientific topics.“ Proceedings of the National academy of Sciences 101.suppl 1 (2004): 5228-5235.
  4. 《LDA 数学八卦》
  5. Heinrich G. Parameter Estimation for Text Analysis[J]. Technical Report, 2005.
  6. 《Computational Statistics in Python》by Cliburn Chan from Duke
  7. LDA作者 David M. Blei 的 lecture 视频
  8. Teh, Yee Whye, et al. “Hierarchical dirichlet processes.“ *Journal of the american statistical association* (2012).

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2017-01-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学学习手札

(数据科学学习手札20)主成分分析原理推导&Python自编函数实现

主成分分析(principal component analysis,简称PCA)是一种经典且简单的机器学习算法,其主要目的是用较少的变量去解释原来资料中的大部...

4207
来自专栏null的专栏

优化算法——拟牛顿法之BFGS算法

一、BFGS算法简介 BFGS算法是使用较多的一种拟牛顿方法,是由Broyden,Fletcher,Goldfarb,Shanno四个人分别提出的,故称为BF...

3024
来自专栏算法channel

算法channel关键词和文章索引

希望时间的流逝不仅仅丰富了我们的阅历,更重要的是通过提炼让我们得以升华,走向卓越。 1Tags 排序算法 链表 树 图 动态规划 ...

3365
来自专栏生信小驿站

主成分分析①

principal() 含多种可选的方差旋转方法的主成分分析 fa() 可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析 fa.paralle...

902
来自专栏专知

【论文推荐】最新六篇主题模型相关论文—动态主题模型、主题趋势、大规模并行采样、随机采样、非参主题建模

【导读】专知内容组今天推出最新六篇主题模型(Topic Model)相关论文,欢迎查看!

1494
来自专栏null的专栏

简单易学的机器学习算法——马尔可夫链蒙特卡罗方法MCMC

对于一般的分布的采样,在很多的编程语言中都有实现,如最基本的满足均匀分布的随机数,但是对于复杂的分布,要想对其采样,却没有实现好的函数,在这里,可以使用马尔可夫...

4375
来自专栏数据科学学习手札

(数据科学学习手札22)主成分分析法在Python与R中的基本功能实现

上一篇中我们详细介绍推导了主成分分析法的原理,并基于Python通过自编函数实现了挑选主成分的过程,而在Python与R中都有比较成熟的主成分分析函数,本篇我们...

42010
来自专栏机器学习算法与Python学习

常用机器学习与数据挖掘相关术语(该充充电了...)

Sampling(采样): Simple Random Sampling(简单随机采样), OfflineSampling(离线等可能K...

3167
来自专栏PPV课数据科学社区

【学习】常用的机器学习&数据挖掘知识点

Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Least Squa...

36012
来自专栏深度学习入门与实践

如何用卷积神经网络CNN识别手写数字集?

  前几天用CNN识别手写数字集,后来看到kaggle上有一个比赛是识别手写数字集的,已经进行了一年多了,目前有1179个有效提交,最高的是100%,我做了一下...

3889

扫码关注云+社区

领取腾讯云代金券