首页 > 解决方案 > scikit-learn 的潜在狄利克雷分配中文档主题分布的最小值

问题描述

从文档语料库中提取 45 个主题时,当调用 scikit-learn 的LatentDirichletAllocation.transform方法时,我得到以下结果: adoc_topic_prior为 0.1:

array([0.01333382, 0.01333628, 0.01333336, 0.01333731, 0.01333334, 0.0133361 , 0.01333334, 0.01333475, 0.01333334, 0.01333598, 0.01333431, 0.01333442, 0.01333334, 0.29496004, 0.01333456, 0.01333455, 0.01333603, 0.01333335, 0.01333393, 0.01333651, 0.01333511, 0.01333337, 0.01333518, 0.01333377, 0.01333434, 0.01333334, 0.01333354, 0.01333538, 0.13166403, 0.01333367, 0.01333333, 0.01333339, 0.01333356, 0.01333648, 0.01333397, 0.01333353, 0.01333342, 0.01333707, 0.01333337, 0.01333339, 0.01333451, 0.01333334, 0.01333352, 0.01333334, 0.01333338])

似乎在 doc-topic 分布上有一个人为的下限约为 0.01333。是否有fit可以设置方法的参数来避免这个下限?我试过增加max_iter&max_doc_update_iter和降低mean_change_tol,但没有任何效果。当我将 设置doc_topic_prior为 0.3 时,我得到了类似的结果,但下限约为 0.018。

有没有办法避免或减少 doc-topic 分布的这个下限?

以下是上述结果的完整模型参数集:

{'batch_size': 128, 'doc_topic_prior': 0.1, 'evaluate_every': -1, 'learning_decay': 0.7, 'learning_method': 'batch', 'learning_offset': 10.0, 'max_doc_update_iter': 100, 'max_iter': 10, 'mean_change_tol': 0.001, 'n_components': 45, 'n_jobs': -1, 'n_topics': None, 'perp_tol': 0.1, 'random_state': None, 'topic_word_prior': 0.9, 'total_samples': 1000000.0, 'verbose': 0}

标签: machine-learningscikit-learntopic-modeling

解决方案


推荐阅读