如何创建网格搜索以找到最佳参数?

How to create a grid search to find best parameters?

在lda分析中

library(topicmodels)
    # parameters for Gibbs sampling
    burnin <- 4000
    iter <- 2000
    thin <- 500
    seed <-list(1969,5,25,102855,2012)
    nstart <- 5
    best <- TRUE
    #Number of topics
    k <- 10
library(topicmodels)
data("AssociatedPress", package = "topicmodels")



    #Run LDA with Gibbs
    ldaOut <-LDA(AssociatedPress[1:20,], k, method="Gibbs", control=list(nstart=nstart, seed = seed, best = best, burnin =
    burnin, iter = iter, thin=thin)) 

如何创建网格搜索来找到参数的最佳值?

ldatuning 包可以帮助您找到主题模型的数量。请参阅下面的代码。注意不要 运行 完整的相关新闻数据集。那可能 运行 几个小时。

为了调整,使用了几个指标。您可以使用 ldatuning 在 references of the vignette 中阅读这些内容。

library(ldatuning)
library(topicmodels)
data("AssociatedPress", package="topicmodels")

my_dtm <- AssociatedPress[1:20,]

result <- FindTopicsNumber(
  my_dtm,
  topics = seq(from = 2, to = 10, by = 1),
  metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"),
  method = "Gibbs",
  control = list(seed = 4242),
  mc.cores = 3L,
  verbose = TRUE
)

fit models... done.
calculate metrics:
  Griffiths2004... done.
  CaoJuan2009... done.
  Arun2010... done.
  Deveaud2014... done.

result

  topics Griffiths2004 CaoJuan2009 Arun2010 Deveaud2014
1     10     -29769.77   0.2049923 32.15563   0.3651554
2      9     -29679.41   0.1913860 32.07003   0.4018582
3      8     -29682.97   0.1619718 32.45093   0.4407269
4      7     -29617.64   0.1556135 33.58472   0.4908904
5      6     -29632.34   0.1247883 33.04505   0.5502962
6      5     -29634.21   0.1201017 34.07776   0.6244967
7      4     -29685.18   0.1134287 35.96230   0.7129967
8      3     -29864.36   0.1070237 38.18795   0.8194811
9      2     -30216.09   0.1040786 42.01731   0.9678864


FindTopicsNumber_plot(result)

基于格里菲思的 5 个主题将是一个不错的选择。 Devaud 2,A运行 9。因此,让 运行 讨论一组不同的主题。我也添加了 3,但仔细阅读了每个指标。

no_topics <- c(2, 3, 5, 9)

lda_list <- lapply(no_topics, function(k) LDA(k = k, 
                                              x = my_dtm, 
                                              method = "Gibbs", 
                                              control = control_list_gibbs
                                           )
                   )
names(lda_list) <- paste0("no_", no_topics)

lda_list

$no_2
A LDA_Gibbs topic model with 2 topics.

$no_3
A LDA_Gibbs topic model with 3 topics.

$no_5
A LDA_Gibbs topic model with 5 topics.

$no_9
A LDA_Gibbs topic model with 9 topics.

在此之后,将检查 lda 结果以查看它们是否有任何好处。

有关此主题的深入概述,您可以阅读 this blogpost。作者使用 purrr、tidytext、dplyr 和 ggplot2 来研究数据集。

这里是一篇关于 using cross validation 与 ldatuning 和主题模型的博客 post。