[英]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.