LDA 原理说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LDA 原理说明相关的知识,希望对你有一定的参考价值。

参考技术A

LDA为latent Dirichlet allocation的简称,是一个生成式模型,是一种主题模型,无监督度学习方法。其基本假设是一篇文档是一个词袋,由多个词组成,与词的顺序无关,它可以有多个主题(topic),并且文档中的词都和这些主题相关。这里使用sparse dirichlet的原因是,一个主题中的词的概率分布是被修剪过得,所以仅有一小部分词的概率较大,这就和实际场景更加贴近

先定义几个简写表示:
① 词袋表示为D,词袋中有V个词,里面有M篇文档,每个文档的长度为Ni(文档中含有N个词);
② α为每个文档的主题分布的先验dirichlet分布的参数;(这里简单说明一下dirichlet分布,见文章最后)
③ β为每个主题词分布的先验dirichlet分布的参数 ;
④ Θi文档i的主题分布,为多项式分布,但受到参数为α的Dirichlet先验分布控制;
⑤ φk为主题k的词分布,k∈[0,K],为多项式分布,但受到参数为β的Dirichlet先验分布控制;
⑥ ωij为具体的词,这是和①中的已知量,其他的均为变量;
⑦ zij为第i篇文档的第j个词的主题;

统计说明如下:

从dirichlet分布α中取样生成文档i的主题分布Θ i (Θ i ~Dir(α),α<1)

从主题k的多项式分布φ k 中取样生成的文档i的第j个词的主题z ij

从dirichlet分布β中取样生成主题词z ij 的词语分布φz ij

从词语的多项式分布φz ij 中重采样最终生成词语ω ij

那么,模型的联合分布(生成词w的概率)为:

最终,文档i的单词分布集对Θ i 、φ求积分,对z ij 求和,(因为有一篇文档假设由K个主题组成,每个主题k满足多项式分布,并且文档包含j个词)得到:

根据p(ω i |α,β)的最大似然估计,最终可以通过EM/吉布斯采样估计出模型中的参数。

对文档中的所有词遍历一遍为其随机分配一个主题(zij),即zij符合mult(1/K),将文档i中k主题出现的次数、文档i中主题数量和、k主题对应的某个词的次数、主题k的总词数,这4个变量都加1。
之后,开始重复迭代寻优。

例如,文档i的词ωij对应的主题为k,根据LDA中topic sample的概率分布sample出新的主题,更新对应的上述4个变量分布加1

迭代完成后,输出主题-词参数矩阵φ和文档-主题矩阵Θ

beta分布的x∈[0,1],是实数,概率密度为x (α-1)(1-x) (β-1),其中α,β>0,这和bernoulli 分布形式上类似,但是bernoulli的x取值为0或1。

当选择不同α和β时,beta分布的pdf为:

说明:

pdf为连续型变量的概率密度函数

beta分布是针对一个x变量,dirichlet分布是针对多个随机变量,通常标记为Dir(α),表示连续多元概率分布,参数α>0,是beta分布的扩展,通常被用于贝叶斯统计中的一种先验分布。

对于两个随机变量(k=2)的pdf分布如下图:

dirichlet分布的pd如下所示:

共轭:假定一个先验分布A,将该先验分布的参数带入另外的一个分布中,得到后验证分布,如果该后验分布和该先验分布有相同的形式,则称为共轭(conjugacy)。

beta分布是bernoulli(二项式分布)的共轭先验分布为共轭,dirichlet为multinomial(多项式分布)的共轭先验分布。

参考链接:

<u>https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation</u>

https://blog.csdn.net/MeituanTech/article/details/80804170

wiki中文版

LDA和PCA降维的原理和区别

 LDA算法的主要优点有:

  • 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
  • LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。

LDA算法的主要缺点有:

  • LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
  • LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
  • LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
  • LDA可能过度拟合数据。

PCA算法的主要优点有:

  • 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。 
  • 各主成分之间正交,可消除原始数据成分间的相互影响的因素。
  • 计算方法简单,主要运算是特征值分解,易于实现。
  • 当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,舍弃能在一定程度上起到降噪的效果。

PCA算法的主要缺点有:

  • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
  • 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

 

 LDA与PCA

相同点:

  • 两者均可以对数据进行降维。
  • 两者在降维时均使用了矩阵特征分解的思想。
  • 两者都假设数据符合高斯分布。

不同点:

  • LDA是有监督的降维方法,而PCA是无监督的降维方法。(LDA输入的数据是带标签的,PCA输入的数据是不带标签的)
  • LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。(PCA采用的是最大的特征所对应的特征向量来进行降维的处理。降到的维数和选择的最大特征的个数有关)
  • LDA除了可以用于降维,还可以用于分类。(降维后得到一个新的样品数据,要确定某一个未知的样本属于那一类,对该样本进行同样的线性变换,根据其投影到的位置来进行分来(判别分析问题?))
  • LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

以上是关于LDA 原理说明的主要内容,如果未能解决你的问题,请参考以下文章

线性判别分析(LDA)原理

LDA和PCA降维的原理和区别

LDA主题模型原理解析与python实现

用scikit-learn学习LDA主题模型

LDA

线性判别分析LDA总结