当前位置: 首页>>机器学习>>正文


pyspark LDA模型示例

qingchuan 机器学习, 算法&结构 , , 去评论

潜在的Dirichlet分配(LDA),是专为文本文档设计的主题模型。

术语说明:

  • “word”=“term”:词汇表的元素。
  • “token”:出现在文档中的term的实例。
  • “topic”:主题,表示某种概念的词的多项分布。
  • “document”: 文档,一段文本。

参考文献:原始LDA论文 (journal version): Blei, Ng, and Jordan. “Latent Dirichlet Allocation.” JMLR, 2003。

pyspark LDA

要在pyspark中应用LDA主题模型(spark python版LDA),可以使用pyspark.mllib.clustering.LDA类的方法train, 该方法的声明如下:

train(rdd, k=10, maxIterations=20, docConcentration=-1.0, topicConcentration=-1.0, seed=None, checkpointInterval=10, optimizer='em')

LDA.train方法的参数说明

  • rdd - 文档的RDD,它们是文档ID和单词(word)计数向量的元组。单词计数向量是具有固定大小词汇(其中词汇大小是向量的长度)的“词袋”。文档ID必须是唯一的并且 >= 0。
  • k - 推断的主题数量,即软聚类中心数。 (默认值:10)
  • maxIterations - 允许的最大迭代次数。 (默认值:20)
  • docConcentration - 文档集中度参数(通常称为“alpha”),用于文档在主题上分布(“theta”)的先验。 (默认值:-1.0)
  • topicConcentration - 主题集中度参数(通常称为“beta”或“eta”),用于主题在单词分布上的先验。 (默认值:-1.0)
  • seed - 用于聚类初始化的随机种子。根据系统时间设置为无生成种子。 (默认值:无)
  • checkpointInterval - 检查点之间的周期(迭代)。 (默认值:10)
  • optimizer - 用于执行实际计算的LDAOptimizer。目前支持“em”,“online”。 (默认:“em”)

LDA建模示例

训练LDA模型并输出模型内容

>>> from pyspark.mllib.linalg import Vectors
>>> from numpy.testing import assert_almost_equal, assert_equal
>>> data = [
...     [1, Vectors.dense([0.0, 1.0])],
...     [2, SparseVector(2, {0: 1.0})],
... ]
>>> rdd =  sc.parallelize(data)
>>> model = LDA.train(rdd, k=2, seed=1)
>>> model.vocabSize()
2
>>> model.describeTopics()
[([1, 0], [0.5..., 0.49...]), ([0, 1], [0.5..., 0.49...])]
>>> model.describeTopics(1)
[([1], [0.5...]), ([0], [0.5...])]

LDA模型效果验证

>>> topics = model.topicsMatrix()
>>> topics_expect = array([[0.5,  0.5], [0.5, 0.5]])
>>> assert_almost_equal(topics, topics_expect, 1)

LDA模型文件的保存和读取

>>> import os, tempfile
>>> from shutil import rmtree
>>> path = tempfile.mkdtemp()
### 保存LDA模型
>>> model.save(sc, path)
#### 加载LDA模型
>>> sameModel = LDAModel.load(sc, path)
>>> assert_equal(sameModel.topicsMatrix(), model.topicsMatrix())
>>> sameModel.vocabSize() == model.vocabSize()
True
>>> try:
...     rmtree(path)
... except OSError:
...     pass

pyspark LDA模型的最新介绍参考:LDA

本文由《纯净的天空》出品。文章地址: https://vimsky.com/article/3392.html,未经允许,请勿转载。