当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R SparkR spark.lda用法及代码示例


说明:

spark.lda 适合 SparkDataFrame 上的潜在 Dirichlet 分配模型。用户可以调用summary获取拟合LDA模型的摘要,spark.posterior计算新数据的后验概率,spark.perplexity计算新数据的log perplexity和write.ml/read.ml保存/加载拟合楷模。

用法:

spark.lda(data, ...)

spark.posterior(object, newData)

spark.perplexity(object, data)

## S4 method for signature 'SparkDataFrame'
spark.lda(
  data,
  features = "features",
  k = 10,
  maxIter = 20,
  optimizer = c("online", "em"),
  subsamplingRate = 0.05,
  topicConcentration = -1,
  docConcentration = -1,
  customizedStopWords = "",
  maxVocabSize = bitwShiftL(1, 18)
)

## S4 method for signature 'LDAModel'
summary(object, maxTermsPerTopic)

## S4 method for signature 'LDAModel,SparkDataFrame'
spark.perplexity(object, data)

## S4 method for signature 'LDAModel,SparkDataFrame'
spark.posterior(object, newData)

## S4 method for signature 'LDAModel,character'
write.ml(object, path, overwrite = FALSE)

参数:

  • data 用于训练的 SparkDataFrame。
  • ... 传递给方法的附加参数。
  • object spark.lda 拟合的潜在狄利克雷分配模型。
  • newData 用于测试的 SparkDataFrame。
  • features 特征列名。 libSVM-format 列或character-format 列有效。
  • k 主题数。
  • maxIter 最大迭代次数。
  • optimizer 用于训练 LDA 模型的优化器,"online" 或 "em",默认为 "online"。
  • subsamplingRate (对于在线优化器)要在小批量梯度下降的每次迭代中采样和使用的语料库的分数,范围为 (0, 1]。
  • topicConcentration 浓度参数(通常命名为 betaeta )用于优先放置在主题分布上的术语,默认为 -1 以在 Spark 端自动设置。使用summary 检索有效的topicConcentration。只接受 1 号数字。
  • docConcentration 浓度参数(通常命名为 alpha )用于优先放置在主题上的文档分布( theta ),默认为 -1 以在 Spark 端自动设置。使用 summary 检索有效的 docConcentration。只接受 1-size 或 k -size numeric。
  • customizedStopWords 需要从给定语料库中删除的停用词。如果 libSVM-format 列用作特征列,则忽略该参数。
  • maxVocabSize 最大词汇量,默认 1 << 18
  • maxTermsPerTopic 为每个主题收集的最大术语数。默认值为 10。
  • path 保存模型的目录。
  • overwrite 如果输出路径已经存在,是否覆盖。默认为 FALSE,这意味着如果输出路径存在则抛出异常。

返回:

spark.lda 返回一个拟合的潜在狄利克雷分配模型。

summary 返回拟合模型的汇总信息,是一个列表。该列表包括

  • docConcentration 浓度参数通常命名为alpha,用于先前放置在主题上的文档分布theta
  • topicConcentration 浓度参数通常命名为 betaeta 用于在术语上放置主题分布的先验
  • logLikelihood 整个语料库的对数似然
  • logPerplexity 日志困惑
  • isDistributed TRUE 用于分布式模型,FALSE 用于本地模型
  • vocabSize 语料库中的术语数
  • topics 前 10 个术语及其在所有主题中的权重
  • vocabulary 训练语料库的全部术语,如果 libsvm 格式文件用作训练集,则为 NULL
  • trainingLogLikelihood 给定当前参数估计,在训练集中观察到的标记的对数似然:log P(docs | topic, topic distributions for docs, Dirichlet hyperparameters) 它仅适用于分布式 LDA 模型(即优化器 = "em")
  • logPrior 当前参数估计的对数概率:log P(topics, topic distributions for docs | Dirichlet hyperparameters) 仅适用于分布式 LDA 模型(即优化器 = "em")

spark.perplexity 返回给定 SparkDataFrame 的 log perplexity,或者如果缺少参数 "data",则返回训练数据的 log perplexity。

spark.posterior 返回一个包含名为"topicDistribution" 的后验概率向量的 SparkDataFrame。

注意:

spark.lda 自 2.1.0

摘要(LDAModel)自 2.1.0 起

spark.perplexity(LDAModel) 自 2.1.0 起

spark.posterior(LDAModel) 自 2.1.0 起

write.ml(LDAModel, character) 自 2.1.0 起

例子:

text <- read.df("data/mllib/sample_lda_libsvm_data.txt", source = "libsvm")
model <- spark.lda(data = text, optimizer = "em")

# get a summary of the model
summary(model)

# compute posterior probabilities
posterior <- spark.posterior(model, text)
showDF(posterior)

# compute perplexity
perplexity <- spark.perplexity(model, text)

# save and load the model
path <- "path/to/model"
write.ml(model, path)
savedModel <- read.ml(path)
summary(savedModel)

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 Latent Dirichlet Allocation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。