繁体   English   中英

scikit-learn - 我应该使用TF或TF-IDF模型吗?

[英]scikit-learn - Should I fit model with TF or TF-IDF?

我试图在sklearn(Python)上找到适合不同概率模型(如Latent Dirichlet Allocation,Non-negative Matrix Factorization等)的最佳方法。

看一下sklearn文档中的示例,我想知道为什么LDA模型适合TF阵列,而NMF模型适合TF-IDF阵列。 这个选择有确切的原因吗​​?

以下是示例: http//scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf_lda.html#sphx-glr-auto-examples-applications-topics-extraction-with-nmf-lda-py

此外,有关如何找到适合我的模型的最佳参数(迭代次数,主题数...)的任何提示都被广泛接受。

先感谢您。

为了使答案清楚,首先必须检查两个模型的定义。

LDA是一种概率生成模型,通过对每个单词的主题进行抽样,然后从抽样主题中抽取一个单词来生成文档。 生成的文档表示为一袋文字。

NMF在其一般定义中搜索2个矩阵W和H,使得W*H=V ,其中V是观察到的矩阵。 这些矩阵的唯一要求是它们的所有元素都必须是非负的。

从上面的定义可以清楚地看出,在LDA中,只能使用词包频率计数,因为实数矢量没有意义。 我们创建了一个单词1.2次吗? 另一方面,我们可以使用NMF的任何非负表示,并且在示例中使用tf-idf。

至于选择迭代次数,对于scikit中的NMF,我不知道停止标准,虽然我认为损失函数的相对改善小于阈值,所以你必须进行实验。 对于LDA,我建议手动检查保持的验证集中的对数似然的改进,并在它低于阈值时停止。

其余的参数在很大程度上取决于数据,因此我建议,正如@rpd所建议的,您进行参数搜索。

总而言之,LDA 只能生成频率,而NMF 可以生成任何非负矩阵

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM