了解Gensim LDA模型中的参数

时间:2018-06-11 20:30:02

标签: python parameters gensim lda

我正在使用gensim.models.ldamodel.LdaModel来执行LDA,但我不了解某些参数,并且无法在文档中找到解释。如果有人有使用这方面的经验,我希望进一步了解这些参数的含义。 具体来说,我不明白:

  • random_state
  • update_every
  • chunksize
  • passes
  • alpha
  • per_word_topics

我正在处理500个文档的语料库,每个文档大约3-5页(由于保密原因,我很遗憾无法共享数据的快照)。目前我已经设置了

  • num_topics = 10
  • random_state = 100
  • update_every = 1
  • chunksize = 50
  • passes = 10
  • alpha = 'auto'
  • per_word_topics = True

但这完全基于我看到的一个例子,我不确定这对我的数据有多普遍。

1 个答案:

答案 0 :(得分:4)

我想知道你是否见过this page

无论哪种方式,让我为你解释一些事情。您使用的文档数量很少(在维基百科大小的数据源上训练时,它的效果会更好)。因此,结果将相当粗糙,你必须意识到这一点。这就是为什么你不应该针对大量的主题(你选择10个,在你的情况下可能合理地达到20个)。

至于其他参数:

  • random_state - 这可以作为种子(如果您想要完全重复培训过程)

  • chunksize - 一次考虑的文件数量(影响内存消耗)

  • update_every - 每个update_every chunksize块更新模型(基本上,这是为了优化内存消耗)

  • passes - 算法应该在整个语料库中传递多少次

  • alpha - 引用文档:

      

    可以设置为您选择的显式数组=先前。它也是   支持''不对称'和'自动'的特殊值:前者使用a   固定归一化非对称1.0 / topicno事先,后者学习了   直接来自您的数据的非对称先验。

  • per_word_topics - 将此设置为True可以提取给定单词的最可能主题。训练过程的设置方式是将每个单词分配给一个主题。否则,将省略未指示的单词。 phi_value是另一个引导此过程的参数 - 它是一个被视为指示性的词的阈值。

最佳训练过程参数在M. Hoffman et al., Online Learning for Latent Dirichlet Allocation中得到了很好的描述。

对于培训过程或模型的内存优化,请参阅this blog post