當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。