对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是啥?

Posted

技术标签:

【中文标题】对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是啥?【英文标题】:With sparse data,what is the faster way to train LDA( Latent Dirichlet allocation ) and predict for a new document?对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是什么? 【发布时间】:2018-03-07 20:09:18 【问题描述】:

    关于训练 LDA

    当我们尝试实现LDA时,我们需要构造一个word-documents矩阵,但是这个矩阵是稀疏数据,因为我们的token字典非常大(几百万个单词),而一个documents有一个小的token集合( ~ 1000 - 10000 words),所以在 word-documents 矩阵中,它有很多 0 值,训练模型需要更长的时间。那么我们怎样才能做得更快呢?

    关于预测一个新文件

    经过训练,现在我们有了一个新的 LDA 模型,因此我们可以使用它来预测哪些主题具有新文档。但是在向我们的模型提供新文档之前,我们需要将其转换为单词向量,其向量长度将是我们的字典长度(几百万个单词)。所以,它会有很多零值,实际上,我们的成本时间随着向量长度的增加而增加。

那么文档-单词矩阵是实现 LDA 的有效方法吗?我们能有其他更好的方法吗?我需要一些推荐给我的项目,所以请帮忙

【问题讨论】:

【参考方案1】:

对于稀疏数据,您当然应该使用稀疏向量而不是密集向量。

您只保留非零值,而不是存储所有零值。

典型的数据模型(参见文献中的替代方案)是简单地使用元组列表 (i,v),其中 i 是列索引,v 是非零值。

【讨论】:

是的,我在 spark LDA repo 中看到了相同的示例。现在我知道它的原因了。谢谢

以上是关于对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型

潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型

潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型

使用 PyMC 实现潜在狄利克雷分配 (LDA)

Gensim 的潜在狄利克雷分配实现

使用 numpy.random.seed 在潜在狄利克雷分配中的可重复性