关于算法:在PYTHON中进行主题模型LDA分析

9次阅读

共计 2427 个字符,预计需要花费 7 分钟才能阅读完成。

原文链接: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_parameter
from 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_itern_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 主题语义数据分析

正文完
 0