原文链接:http://tecdat.cn/?p=6227
主题建模是一种在大量文档中查找形象主题的艺术办法。一种作为_监督无的_机器学习办法,主题模型不容易评估,因为没有标记的“根底事实”数据可供比拟。然而,因为主题建模通常须要事后定义一些参数(首先是要发现的主题_ķ_的数量),因而模型评估对于找到给定数据的“最佳”参数集是至关重要的。
概率LDA主题模型的评估办法
应用未标记的数据时,模型评估很难。这里形容的指标都试图用实践办法评估模型的品质,以便找到“最佳”模型。
评估后部散布的密度或发散度
有些指标仅用于评估后验散布(主题 - 单词和文档 - 主题散布),而无需以某种形式将模型与察看到的数据进行比拟。
应用美联社数据查找最佳主题模型
计算和评估主题模型
主题建模的次要性能位于tmtoolkit.lda_utils
。
import matplotlib.pyplot as plt # 绘制后果plt.style.use('ggplot')# 读取数据from tmtoolkit.utils import unpickle_file# 模型评估from tmtoolkit.lda_utils import tm_lda# 建设模型评估图from tmtoolkit.lda_utils.common import results_by_parameterfrom tmtoolkit.lda_utils.visualize import plot_eval_results
接下来,咱们加载由文档标签,词汇表(惟一单词)列表和文档 - 术语 - 矩阵组成的数据dtm
。咱们确保dtm**维度**
适合:
doc_labels, vocab, dtm = unpickle_file('ap.pickle')print('%d documents, %d vocab size, %d tokens' % (len(doc_labels), len(vocab), dtm.sum()))assert len(doc_labels) == dtm.shape[0]assert len(vocab) == dtm.shape[1]
当初咱们定义应该评估的参数集咱们设置了一个常量参数字典。const_params
,它将蕴含不变参数用于计算每个主题模型。咱们还设置了varying_params,
蕴含具备不同参数值的字典的不同参数列表:
在这里,咱们想要从一系列主题中计算不同的主题模型ks = [10, 20, .. 100, 120, .. 300, 350, .. 500, 600, 700]
。因为咱们有26个不同的值ks
,咱们将创立和比拟26个主题模型。请留神,还咱们alpha
为每个模型定义了一个参数1/k
(无关LDA中的和测试超参数的探讨,请参见下文)。参数名称必须与所应用的相应主题建模包的参数匹配。在这里,咱们将应用lda
,因而咱们通过参数,如n_iter
或n_topics
(而与其余包的参数名称也会有所不同num_topics
,不是而n_topics
)。
咱们当初能够应用模块中的evaluate_topic_models
函数开始评估咱们的模型tm_lda
,并将不同参数列表和带有常量参数的字典传递给它:
默认状况下,这将应用所有CPU内核来计算模型来并行评估它们。
plot_eval_results
函数应用在评估期间计算的所有度量创立绘图。之后,如果须要,咱们能够应用matplotlib办法调整绘图(例如增加绘图题目),最初咱们显示和/或保留绘图。
后果
主题模型评估,alpha = 1 / k,beta = 0.01
请留神,对于“loglikelihood”度量,仅报告最终模型的对数似然预计,这与Griffiths和Steyvers应用的和谐均值办法不同。无奈应用Griffiths和Steyvers办法,因为它须要一个_非凡_的Python包(_gmpy2_) ,这在我运行评估的CPU集群机器上是不可用的。然而,“对数似然”将报告十分类似的后果。
阿尔法和贝塔参数
除了主题数量之外,还有_alpha_和_beta_(有时是文献中的_eta_)参数。两者都用于定义Dirichlet先验散布,用于计算各自的后验散布。Alpha是针对特定于文档的主题散布的先验的“参数”,是针对主题特定的单词散布的先验的参数 。
主题模型,alpha = 1 / k,beta = 0.1
当咱们应用与上述雷同的alpha参数和雷同的_k_范畴运行评估时,然而当= 0.1而不是= 0.01时,咱们看到对数似然在_k_的较低范畴内最大化,即大概70到300(见上图) 。
组合这些参数有很多种可能性,然而解释这些参数通常并不容易。下图显示了不同情景的评估后果:(1)固定,的值取决于_k_,(2)和都固定, (3)和均取决于_k_。
(1)主题模型,alpha = 0.1,beta = 1 /(10k)
(2)主题模型,alpha = 0.1,beta = 0.01
(3)主题模型,alpha = 1 / k,beta = 1 /(10k)
LDA超参数,和主题数量都互相关联,相互作用非常复杂。在大多数状况下,用于定义模型“稠密性”的beta的固定值仿佛是正当的,这也是Griffiths和Steyvers所举荐的。一个更精密的模型评估,具备不同的alpha参数(取决于_k_)应用解释的指标能够实现很多主题。
▍须要帮忙?分割咱们
最受欢迎的见解
1.探析大数据期刊文章钻研热点
2.618网购数据盘点-剁手族在关注什么
3.r语言文本开掘tf-idf主题建模,情感剖析n-gram建模钻研
4.python主题建模可视化lda和t-sne交互式可视化
5.r语言文本开掘nasa数据网络剖析,tf-idf和主题建模
6.python主题lda建模和t-sne可视化
7.r语言中对文本数据进行主题模型topic-modeling剖析
8.r语言对nasa元数据进行文本开掘的主题建模剖析
9.python爬虫进行web抓取lda主题语义数据分析