LDA模型介绍

主题模型

主题模型就是利用大量已知的P(w|d)信息,训练出P(c|d) 和P(w|c)。

\large P(w|d)=\sum _{c}P(c|d)P(w|c) 

LDA模型

LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题 和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“文章以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。
链接:https://www.jianshu.com/p/39a8372d7ccd


用途:LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。

对于语料库中的每篇文档,LDA定义了如下的生成过程:

  1. 对每一篇文档,从主题分布中抽取一个主题。
  2. 从上述被抽到的主题所对应的单词分布中抽取一个单词。
  3. 重复上述过程直至便利文档中的每一个单词。

LDA认为每篇文章是由多个主题混合而成的,而每个主题可以由多个词的概率表征,所以整个程序的输入和输出如下所示:

类型 意义
输入 分词后的文章集(通常为一篇文章一行),主题数K,超参数α 和 β 
输出

1、每篇文章的各个词被置顶的主题编号

2、每篇文章的主题概率分布

3、每个主题下的词概率分布.

4、程序中词语word的id映射表.

5、每个主题下从高到低topn特征词


链接:https://www.jianshu.com/p/d8485c623669

  1. \theta 文档-主题分布是多项式分布,该多项式分布的参数服从Dirichlet分布,该Dirichlet分布的参数为α\theta 的每一行数据 是一个K维向量(语料库共有K个主题),比如(1,0,0,1,0,1.....),表示该文档包含那些主题以及对应的概率
  2. β 主题-词语分布是多项式分布,该多项式分布的参数服从Dirichlet分布,该Dirichlet分布的参数为\eta;β 的每一行是一个V维的向量比如(1,0,0,0,1,0,1) 表示该主题包含那些词语以及对应的概率 
  3. z 是从\theta 中抽取出来的一个主题,是一个K维向量,比如(0,0,0,1,0,0...0)    是有放回的吗??
  4. w是从z这个主题及其对应的词语中 抽取出来的一个词语(观测值)
  5. 重复3~4步骤直至便利该文档中的每一个单词,然后遍历下一个文档直至m篇文档全部完成。
  6. 选择m个待分类文档,再逐个抽完n个词后,还原观测值此时将图中最高的柱状图对应的主题找出来分析这些主题中出现最高频的词语,根据这些词语,人为定义主题分类名称。
  7. M,N 是啥?

LDA训练过程 是无监督学习过程,没有准确率的概念只能人工进行判断 或者用特征做分类看看效果好坏。

LDA训练算法:

(1)随机初始化α和β(一般α取值为50/主题数,β取值为0.1);
(2)以下步骤迭代直到收敛:
   (2.1)对训练集中的每篇文档:
       (2.1.1)利用当前的α和β值计算每篇文档的主题分布、每个词所属的主题分布(具体算法见下文);
   (2.2)累积所有文档中,属于主题k(k=1…K)的词的个数,得到向量gammas;以及词i(i=1…V)属于主题k的次数,得到矩阵betas;
   (2.3)根据当前的gammas,利用Newton-Raphson迭代方法求得当前的最优α值;
   (2.4)对矩阵betas的列归一化,直接得到当前的β值,即每个主题的词的分布;
(3)输出达到收敛时的α和β的值。

步骤(2.1.1)的算法与基于训练好的模型来进行预测的算法是相同的。它也是一个EM迭代算法,具体算法如下:

LDA预测算法:

(1)以平均分布初始化K维向量nt,ntk是当前文档中属于类别k的词的个数,nt可视为未归一化的文档的主题分布;
(2)以下步骤迭代直到nt达到稳定:
   (2.1)根据当前的α值(决定主题的先验分布),以及当前的nt值(当前文档的主题分布),以及当前的β值(主题的词的分布),计算文档中的各个词的主题分布,得到矩阵q, qij=文档中的第i个词属于主题k的概率(具体计算方法参考LDA论文以及variational inference方法);
   (2.2)利用矩阵q的值更新向量nt的值。
(3)将nt归一化作为文档的主题分布,矩阵q则为文档中每个词的主题分布。
原文链接:https://blog.csdn.net/mm_bit/article/details/47312385

下面的理解比较容易,可是上面生成word 的是什么东东呐?

LDA训练过程

输入:m篇文档出现的所有词汇 ,每篇文档中各个词汇出现的频率,设定topic的个数(依据经验),迭代次数

输出: 训练得到每个词与那些主题相关,即(t,w)样本对, topic-word共现频率矩阵就是训练得到的LDA模型 

lad.png

LDA预测过程

输入:该文档中各个词汇出现的频率

输出:该文档的主题分布(该文档与那些主题相关以及相关度);利用训练得到的(t,w)相关度矩阵 和 该文档的单词 不断更新 该文档的主题分布。

lda.png

发布了118 篇原创文章 · 获赞 132 · 访问量 60万+

猜你喜欢

转载自blog.csdn.net/qfikh/article/details/103043630
今日推荐