LDA模型应用、问题、评估

版权声明:本文为博主原创文章,未经博主允许不得转载,欢迎大家讨论交流。 https://blog.csdn.net/qq_40006058/article/details/85912454

LDA主题模型及python实现介绍了LDA模型的基本原理与Sklearn实现流程。

1 应用

  1. 聚类:主题是聚类中心,文章和多个类簇(主题)关联。聚类对整理和总结文章集合很有帮助。参看Blei教授和Lafferty教授对于Science杂志的文章生成的总结。点击一个主题,看到该主题下一系列文章。

  2. 特征生成:LDA可以生成特征供其他机器学习算法使用。LDA为每一篇文章推断一个主题分布;K个主题即是K个数值特征。这些特征可以被用在像逻辑回归或者决策树这样的算法中用于预测任务。

  3. 降维:每篇文章在主题上的分布提供了一个文章的简洁总结。在这个降维了的特征空间中进行文章比较,比在原始的词汇的特征空间中更有意义。

  4. 排序:The very best ways to sort large databases of unstructured text
    is to use a technique called Latent Dirichlet allocation (LDA).

  5. 在使用LDA计算物品的内容相似度时,我们可以先计算出物品在话题上的分布,然后利用两个物品的话题分布计算物品的相似度。比如,如果两个物品的话题分布相似,则认为两个物品具有较高的相似度,反之则认为两个物品的相似度较低。计算分布的相似度可以利用KL散度来计算

2 不足&改进

2.1 文档比较短

  1. ICML论文有理论分析,文档太短确实不利于训练LDA,但平均长度是10这个数量级应该是可以的,如peacock基于query 训练模型。有一些经验技巧加工数据,譬如把同一session 的查询拼接,同一个人的twitter 拼接等。也可以用w2v那样的小窗口训练过lda。
  2. 是如word2vec一样,利用local context-level word co-occurrences。 也就是说,把每个词当成一个文档以及把它周围出现过的词当做这个文档的内容。这样的话就不会受文档长度的限制了。
  3. 短文本语义更集中明确,LDA是适合处理的,也可以做一些文本扩展的工作,有query log的话,1. query session,2. clickstream。无query log的话,1. 短文本当做query,通过搜索引擎(或语料库)获取Top相关性网页,2. 用语料库中短文本周边词集,3. 知识库中近义词,上下位词等。
  4. 微博

2.2 单词带来的问题

LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。由于 Dirichlet分布随机向量各分量间的弱相关性(之所以还有点“相关”,是因为各分量之和必须为1),使得我们假想的潜在主题之间也几乎是不相关的,这与很多实际问题并不相符,从而造成了LDA的又一个遗留问题。

LDA不考虑文档中单词的这些位置。像 “Man, I love this can” and “I can love this man” 这样的文件可能是以同样的方式建模的。对于更长的文档来说,不匹配的主题也更难。为了克服这个限制,以几乎平方的复杂性为代价,2-grams (or N-grams)along with 1-gram.LDA的另一个弱点在于主题构成:它们是重叠的。事实上,你可以在多个主题中找到相同的单词(上面的例子,单词“can”,很明显)。因此,例如,生成的主题不像PCA分解的基础那样是独立的和正交的(正交的)。这意味着你在处理它们时必须付出很多注意力(例如,不要使用相似性)。对于更结构化的方法 - 特别是如果主题组合非常误导 - 您可以考虑LDA的层次变体,名为H-LDA,(或简称为Hierarchical LD​​A)。在H-LDA中,通过使用嵌套中餐厅流程(NCRP)将主题连接在一起。

3 LDA模型评估

三种 Perplexity 计算方法

猜你喜欢

转载自blog.csdn.net/qq_40006058/article/details/85912454
今日推荐