如何在R中的stm包上执行10倍交叉验证

时间:2019-07-02 12:35:57

标签: r cross-validation topic-modeling stm

我正在R中使用stm包。这是一种主题建模方法。我在执行10倍交叉验证步骤时遇到麻烦。其他主题建模程序包(例如tm)具有启用k折叠交叉验证的困惑选项。尽管stm提供了多种验证指标,但其中不包含用于折叠验证的选项。

我试图使用stm模型上tm包中提供的困惑选项无济于事。

set.seed(100)
topics <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) 
seed <- 2
D <- length(filenames) # number docs
folding <-sample(rep(seq_len(10), ceiling(D))[seq_len(D)])
table(folding)

perp_by_col <- vector()
for (k in topics) {
  perp_by_row <- vector()
  for (chain in seq_len(10)) {
    training <- LettersPrevFit <- stm(documents = out$documents[folding != chain,], vocab =out$vocab, K = k, 
                                      prevalence =~ covariate,
                                      max.em.its = 75, data = out$meta,
                                      init.type = "Spectral") 
    testing <- LettersPrevFit <- stm(documents = out$documents[folding == chain,], vocab =out$vocab, K = k, 
                                     prevalence =~ covariate,
                                     max.em.its = 75, data = out$meta,
                                     init.type = "Spectral") 
    perp_by_row <- rbind(perp_by_row, perplexity(testing))
  }
  perp_by_col <- cbind(perp_by_col,perp_by_row)
}

问题是在这种情况下困惑不起作用,因此功能失败。我希望看到stm模型在这些不同的支持组中运行,并检查它们如何在10-100个主题范围内工作。

0 个答案:

没有答案