1

私はこのデータ処理を持っています:

library(text2vec)

##Using perplexity for hold out set
t1 <- Sys.time()
perplex <- c()
for (i in 3:25){

  set.seed(17)
  lda_model2 <- LDA$new(n_topics = i)
  doc_topic_distr2 <- lda_model2$fit_transform(x = dtm,  progressbar = F)

  set.seed(17)
  sample.dtm2 <- itoken(rawsample$Abstract, 
                       preprocessor = prep_fun, 
                       tokenizer = tok_fun, 
                       ids = rawsample$id,
                       progressbar = F) %>%
    create_dtm(vectorizer,vtype = "dgTMatrix", progressbar = FALSE)

  set.seed(17)
  new_doc_topic_distr2 <- lda_model2$transform(sample.dtm2, n_iter = 1000, 
                                               convergence_tol = 0.001, n_check_convergence = 25, 
                                               progressbar = FALSE)

  perplex[i]  <- text2vec::perplexity(sample.dtm2, topic_word_distribution = 
                                        lda_model2$topic_word_distribution, 
                                      doc_topic_distribution = new_doc_topic_distr2) 

}
print(difftime(Sys.time(), t1, units = 'sec'))

このような質問がたくさんあることは承知していますが、自分の状況に対する正確な答えを見つけることができませんでした. 上の図では、潜在的ディリクレ配分モデルの 3 から 25 トピック番号までの perplexity 計算を示しています。それらの中で最も十分な値を取得したい、つまり、結果が次のようになる単純な数値ベクトルとしてのみ考慮される可能性のある値について、肘または膝を見つけたいと考えています。

1   NA
2   NA
3   222.6229
4   210.3442
5   200.1335
6   190.3143
7   180.4195
8   174.2634
9   166.2670
10  159.7535
11  153.7785
12  148.1623
13  144.1554
14  141.8250
15  138.8301
16  134.4956
17  131.0745
18  128.8941
19  125.8468
20  123.8477
21  120.5155
22  118.4426
23  116.4619
24  113.2401
25  114.1233
plot(perplex)

これはプロットがどのように見えるかです

ひじは 13 か 16 になると思いますが、完全にはわかりません。結果として正確な数が必要です。この論文で、f''(x) / (1+f'(x)^2)^1.5 が膝の公式であることが分かりました。

> d1 <- diff(perplex)                # first derivative
> d2 <- diff(d1) / diff(perplex[-1]) # second derivative
> knee <- (d2)/((1+(d1)^2)^1.5)
Warning message:
In (d2)/((1 + (d1)^2)^1.5) :
  longer object length is not a multiple of shorter object length
> which.min(knee)
[1] 18

私はこのことを完全に理解することはできません。結果として困惑に応じて正確な理想的なトピック数を取得する方法を誰かが共有したいと思いますか?

4

1 に答える 1