什么是LDA主题模型
首先说明一下什么是主题模型。这里的主题模型是把一份份不同的文本内容通过某种方式来找到这些文本对应的主题。打个比方:我有一堆新闻类文档,但我想将这对文档进行主题分类。到底是娱乐?军事?政治?等主题。这时候就使用到主题模型。
而这里的LDA和特征工程的LDA不一样。全名Latent Dirichlet Allocation,是一款基于Dirichlet分布的概率主题模型。他属于非监督学习,当中运用到了概率论以及词袋模型等知识。
背景知识
为了更容易的了解LDA的工作原理,请原谅我的啰嗦。先简单的科普一下背景知识。当然已经熟悉的朋友,可以选择忽略这个酌情下一步
贝叶斯理论
这个应该很多人都认识的。这里面先验概率等知识我就不说了。这里先列出贝叶斯公式:
P ( θ , y ) = P ( θ ) P ( y ∣ θ ) P(\theta,y) = P(\theta)P(y|\theta) P(θ,y)=P(θ)P(y∣θ)
然后就演变出
P ( θ ∣ y ) = P ( θ , y ) P ( θ ) = P ( θ ) P ( y ∣ θ ) P ( θ ) P(\theta|y) = \frac{P(\theta,y)}{ P(\theta)}=\frac{P(\theta)P(y|\theta)}{P(\theta)} P(θ∣y)=P(θ)P(θ,y)=P(θ)P(θ)P(y∣θ)
这个公式的伟大之处就是实现了概率统计上的“交换律”。本来我们要求y下发现的概率,变成了theta下的概率。这为后面LDA模型提供了基础
gamma函数
gamma是阶乘函数在实数的推广。先回顾一下实数的阶乘公式
Γ ( n ) = ( n − 1 ) ! \Gamma(n) = (n-1)! Γ(n)=(n−1)!
相对于实数界的有
Γ ( x ) = ∫ 0 ∞ t x − 1 e − t d t \Gamma(x) = \int_0^\infty{t^{x-1}}e^{-t}dt Γ(x)=∫0∞tx−1e−tdt
多个分布
博鲁尼分布
博鲁尼就是只有两种出现的情况。比如要么0,要么1。我制作一次实现得到的分布结果。
二项分布
二项分布就是某一种概率事件,他只可能出现两种情况,要么正要么负{+,-}。他是博鲁尼分布执行N此以后的结果。这种分布就是二项分布。比如最常见的就是抛硬币,出现字和出现图案的概率就是二项分布。二项分布的密度函数有
P ( K = k ) = ( k n ) p k ( 1 − p ) n − k P(K=k)=(^n_k)p^k(1-p)^{n-k} P(K=k)=(kn)pk(1−p)n−k
多项分布
多项分布就是二项分布的多维度展开式。也就是说我的概率事件不在是{+,-}。而是存在很多种情况。比如掷骰子,概率事件有{1,2,3,4,5,6}。在执行N此实验以后,就会出现k=6的多项分布。相关密度函数有
P ( x 1 , x 2 , ⋅ ⋅ ⋅ , x k ; n , p 1 , p 2 , ⋅ ⋅ ⋅ , p k ) = n ! x 1 ! ⋅ ⋅ ⋅ x n ! P 1 X 1 ⋅ ⋅ ⋅ P n X n P(x_1,x_2,···,x_k;n,p_1,p_2,···,p_k)=\frac{n!}{x_1!···x_n!}P_1^{X_1}···P_n^{X_n} P(x1,x

本文详细介绍了LDA(Latent Dirichlet Allocation)主题模型,它是基于Dirichlet分布的概率主题模型,用于文本主题分类。文章首先解释了贝叶斯理论、gamma函数、多项分布等背景知识,接着阐述了LDA的工作原理,包括文档主题分布和主题词分布的假设。在Python部分,展示了如何使用gensim库对邮件数据进行预处理、建模和主题预测。通过LDA模型,可以从大量新闻稿件中抽取出主题信息,实现非监督学习的主题分类。

20万+

被折叠的 条评论
为什么被折叠?



