原文链接:在PYTHON中进行主题模型LDA分析​tecdat.cn

主题建模是一种在大量文档中查找抽象主题的艺术方法。一种作为监督无的机器学习方法,主题模型不容易评估,因为没有标记的“基础事实”数据可供比较。然而,由于主题建模通常需要预先定义一些参数(首先是要发现的主题ķ的数量),因此模型评估对于找到给定数据的“最佳”参数集是至关重要的。

概率LDA主题模型的评估方法

使用未标记的数据时,模型评估很难。这里描述的指标都试图用理论方法评估模型的质量,以便找到“最佳”模型。

评估后部分布的密度或发散度

有些指标仅用于评估后验分布(主题 - 单词和文档 - 主题分布),而无需以某种方式将模型与观察到的数据进行比较。

使用美联社数据查找最佳主题模型

计算和评估主题模型

主题建模的主要功能位于tmtoolkit.lda_utils。import matplotlib.pyplot as plt # for plotting the results plt.style.use('ggplot') # for loading the data: from tmtoolkit.utils import unpickle_file # for model evaluation with the lda package: from tmtoolkit.lda_utils import tm_lda # for constructing the evaluation plot: 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_iter或n_topics(例如,而与其他包的参数名称也会有所不同num_topics,不是而n_topics在gensim)。

我们现在可以使用模块中的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)使用解释的指标可以完成很多主题。

▍需要帮助?联系我们

python主题建模_在PYTHON中进行主题模型LDA分析相关推荐

  1. 如何用python进行建模_用 Python 进行贝叶斯模型建模(1)

    本系列: 第1节:估计模型参数 在这一节,我们将讨论贝叶斯方法是如何思考数据的,我们怎样通过 MCMC 技术估计模型参数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  2. python 财务报表 建模_使用Python进行统计建模

    =============== 我的公众号:早起python =============== 前言 大家好,在之前的文章中我们已经讲解了很多Python数据处理的方法比如读取数据.缺失值处理.数据降维 ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. python学习机器学习_学习Python的9个理由

    python学习机器学习 Python是所有开发人员的重要编程语言 应该知道. 许多程序员使用这种语言来制作网站, 产生学习算法,并执行不同的必要任务. 的 学习Python的最佳方法始于确定要构建的 ...

  5. 电商系统中的商品模型的分析与设计—续

    在<电商系统中的商品模型的分析与设计>中,对电商系统商品模型有一个粗浅的描述,后来有博友对货品和商品的区别以及属性有一些疑问.我也对此做一些研究,再次简单的对商品模型做一个介绍. 从SPU ...

  6. python数据分析论文报告_Calaméo - 【原创】在PYTHON中进行主题模型LDA分析数据分析报告论文(代码+数据) ....

    [ 原 创 ] 定 制 代 写 开 发 辅 导 答 疑 r/python/spss/matlab/WEKA/sas/sql/C++/stata/eviews/Computer science assi ...

  7. python 建筑建模_基于CityEngine的建筑物自动化建模

    近年来, 全国很多城市都在进行数字城市建设, 推进城市信息化进程[.数字城市是运用3S.遥测.仿真-虚拟等技术,以计算机技术.多媒体技术和大规模存储技术为基础,以宽带网络为纽带,实现对城市多尺度.多时 ...

  8. python selenium 下拉列表_从下拉列表中选择python selenium选项

    我试图使用下面的代码使用selenium(python)从网页上的下拉列表中选择一个选项.在from selenium import webdriver from selenium.webdriver ...

  9. python 语料标注_在python中怎么标记文本?

    要运行下面的python程序,必须在系统中安装(NLTK)自然语言工具包. NLTK模块是一个庞大的工具包,旨在帮助您使用整个自然语言处理(NLP)方法. 要安装NLTK,请在终端中运行以下命令.su ...

最新文章

  1. OpenAirInterface,开源的 4G EPS 实现
  2. go dll 传char*
  3. javafx2_JavaFX 2 GameTutorial第4部分
  4. php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法
  5. 数据库的四大特性和事务隔离级别
  6. 叶氏量能大抄底(通达信副图)
  7. Linux下添加服务
  8. Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
  9. 手把手实现Java图书管理系统(附源码)
  10. 基于matlab仿真实例,基于MATLAB的新能源汽车仿真实例
  11. Cesium中的primitive竖立流光飞线
  12. android AsyncTask介绍
  13. 解决:unable to find valid certification path to requested target
  14. 西南交大计算机应用基础离线作业答案,西南交大计算机应用基础1-5作业答案.doc...
  15. 软件开发七宗罪(转)
  16. 服务器独享宽带和共享宽带有那些区别
  17. 关于Win10创意者更新之后蓝屏的修复办法
  18. ASP.NET Web程序设计 第三章 高级控件
  19. 解决ubuntu14 restart mysql提示stop Unknown job:mysql问题
  20. 数字图像处理第九章 形态学图像处理

热门文章

  1. 史上最全面的深度学习硬件指南
  2. 30秒您学会配置TomCat环境变量,并运行无错
  3. 2019.3.9日面试自我介绍
  4. 解决element-ui中表格行点击事件和表格单元格点击事件冲突的问题
  5. python字典成绩_python字典总结
  6. python生成的字符画怎么查看_通过python将图片生成字符画
  7. web服务器的打开方法_西门子PLC固件升级,S71200 固件升级方法
  8. 前端结构解析系列之二:凯旋门结构
  9. [转载]java对cookie的操作
  10. 介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具……...