scikitlearn我应该将模型与TF或TFIDF匹配?

2024-05-16 11:10:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出在sklearn(Python)上适合不同概率模型(如潜在Dirichlet分配、非负矩阵分解等)的最佳方法。在

查看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

此外,关于如何找到适合我的模型的最佳参数(迭代次数、主题数…)的任何提示都是可以接受的。在

提前谢谢你。在


Tags: 模型示例autotfwith矩阵sklearnexamples
1条回答
网友
1楼 · 发布于 2024-05-16 11:10:50

要想弄清楚答案,首先必须检查这两个模型的定义。在

LDA是一种概率生成模型,它通过为每个单词抽取一个主题,然后从抽取的主题中抽取一个单词来生成文档。生成的文档表示为一包单词。在

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

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

至于选择迭代次数,对于scikit-learn中的NMF,我不知道停止的标准,尽管我相信这是损失函数的相对改善小于阈值,所以您必须进行试验。对于LDA,我建议手动检查保留的验证集中日志可能性的改善情况,并在低于阈值时停止。在

其余的参数很大程度上依赖于数据,所以我建议,正如@rpd所建议的那样,您应该进行参数搜索。在

综上所述,LDA只能生成频率,NMF可以生成任何非负矩阵。在

相关问题 更多 >