美文网首页机器学习
09 主题模型 - LDA参数学习-Gibbs采样

09 主题模型 - LDA参数学习-Gibbs采样

作者: 白尔摩斯 | 来源:发表于2018-12-27 21:25 被阅读187次

08 主题模型 - LDA

九、LDA参数学习-Gibbs采样

对于一个n维的概率分布π(x1,x2,...,xn),可以通过在n个坐标上轮换采样,来得到新的样本,对于轮换到任意一个坐标xi上的转移,马尔可夫链的状态转移概率为p(xi|x1,x2,...,xi-1,xi+1,...,xn),即固定n-1个坐标轴,在某一个坐标上移动。

Gibbs采样算法在高维空间采样的时候具有比较高的优势,Gibbs采样的过程比较类似这个坐标轴下降法。

  1. 输入稳定的分布π(x1,x2,...,xn)或者对应特征的条件概率分布,设定状态转移次数阈值n1,需要的样本数n2;
  2. 随机初始化状态值(x11,x21,...,xn1);
  3. 进行迭代数据采样(迭代n1+n2-1次);
从条件概率分布中采样得到对应的样本
  1. 最终得到的样本集为:

Gibbs采样

给定一个文档集合,w是可以观察到的值,α和η是根据经验给定的先验参数,其它的各个z,θ、β都是未知的隐含变量,都是需要根据观测到的数据进行学习的。

具体来讲,所有文档联合起来形成的词向量w是已知数据,但是不知道语料库的主题z的分布。假设可以先求解出w、z的联合分布p(w,z),进而就可以求出某个词wi对应主题特征zi的条件概率分布p(zi=k|w,z-i),其中z-i表示去掉下标为i后的主题分布,有了条件概率,那么就可以使用Gibbs采样,最终可以得到第i个词的主题。

如果通过采样得到所有词的主题,那么可以通过统计所有词的主题数,从而得到
各个主题的词分布。接着统计各个文档对应词的主题数,从而可以得到各个文档的
主题分布。

简化Dirichlet分布表达式:

计算文档的主题条件分布:

在第d个文档中,第k个主题的词的个数表示为:nd(k), 对应的多项分布的计数可以表示为 :

有了一个文档的主题条件分布,则可以得到所有文档的主题条件分布为:

使用同样的方式,可以得到第k个主题对应的词的条件分布p(w|z,η)为:

其中第k个主题中,第v个词的个数表示为nkv;对应的多项式分布计数表示为:

最终得到主题和词向量的联合分布为:

基于联合分布,就可以使用求解Gibbs采样所需要的条件分布p(zi=k|w,z-i);对于下标i,由于它对应的词wi是可以观察到的,因此有公式如下:

对于zi=k,wi=t,只涉及到第d篇文档和第k个主题两个Dirichlet共轭,即:

至于其他的Dirichlet共轭和这两个是互相独立的,也就是说从语料库中去掉zi和wi后,并不会改变共轭结构。所以对应的后验分布为:

开始计算Gibbs采样的条件概率:

Dirichlet分布的期望公式如下,带入条件概率中,可以得到最终的条件概率公式:


LDA参数学习-Gibbs采样训练流程

  1. 选择合适的主题数K,选择合适的超参数α、η;
  2. 对于语料库中每一篇文档的每一个词,随机的赋予一个主题编号z;
  3. 重新扫描语料库,对于每一个词,利用Gibbs采样公式更新它的topic的编号,并更新语料库中该词的编号。
  4. 重复第三步中基于坐标轴轮询的Gibbs采样,直到Gibbs采样收敛。
  5. 统计语料库中各个文档各个词的主题,得到文档主题分布。

LDA参数学习-Gibbs采样预测流程

  1. 对应当前文档的每一个词,随机的赋予一个主题编号z;
  2. 重新扫描当前文档,对于每一个词,利用Gibbs采样算法更新它的topic编号。
  3. 重复第二步的基于坐标轴轮换的Gibbs采样,直到Gibbs采样收敛。
  4. 统计文档中各个词的主题,得到该文档主题分布。

10 主题模型 - 代码案例一 - LDA主题模型初识
11 主题模型 - 代码案例二 - scikit-learn中的LDA模型
12 主题模型 - 代码案例三 - scikit-learn中的LSA模型
13 主题模型 - 代码案例四 - scikit-learn中的NMF模型

相关文章

  • 10 主题模型 - 代码案例一 - LDA主题模型初识

    08 主题模型 - LDA09 主题模型 - LDA参数学习-Gibbs采样 安装 lda 库使用第三方的lda库...

  • 09 主题模型 - LDA参数学习-Gibbs采样

    08 主题模型 - LDA 九、LDA参数学习-Gibbs采样 对于一个n维的概率分布π(x1,x2,...,xn...

  • LDA主题模型和推荐系统3

    LDA 主题模型涉及到贝叶斯理论、Dirichlet 分布、多项分布、图模型、变分推断、EM 算法、Gibbs 抽...

  • LDA的java实现

    训练 基于gibbs分布的LDA大概训练过程: 推断过程: 主题分布数值的大小与长度无关。 1. 参数解释 返回的...

  • 词典构造方法之LDA主题模型

    词典构造方法之LDA主题模型 主题模型LDA原理理解 LDA是一种非监督学习技术,可以用来识别大规模文档集(doc...

  • R语言用Rcpp加速Metropolis-Hastings抽样估

    在最近的一篇文章中,我描述了一个Metropolis-in-Gibbs采样器,用于估计贝叶斯逻辑回归模型的参数。 ...

  • Gibbs采样

    在机器学习问题中,很多时候无法确定一个概率分布的具体密度函数,因而在对这种分布进行后续操作(例如,贝叶斯学派求后验...

  • LDA主题模型

    LDA数学八卦学习笔记 数学知识 Gamma函数 Gamma函数的性质其可以看作阶乘在实数集上的扩展 Gamma分...

  • LDA主题模型

    JGibbLDA是Java版本的LDA算法,可以通过命令行的方式使用,也可以通过通过调用LDACmdOption中...

  • LDA主题模型

    待整理 假设文档是由n个词组成的,且不考虑词之间的关系,假设我们的词典有V个词语,v1,v2,...vv,那么最简...

网友评论

    本文标题:09 主题模型 - LDA参数学习-Gibbs采样

    本文链接:https://www.haomeiwen.com/subject/lpadlqtx.html