Bildiğim kadarıyla sadece bir dizi konu ve ceset sağlamanız gerekiyor. Grun ve Hornik (2011) sayfa 15'in altından başlayarak örnekte de görebileceğiniz gibi, bir aday konu kümesi belirtmenize gerek yoktur .
Güncelleme 28 Ocak 14. Şimdi aşağıdaki yönteme göre biraz farklı şeyler yapmak. Mevcut yaklaşımım için buraya bakın: /programming//a/21394092/1036500
Eğitim verisi olmadan optimum konu sayısını bulmanın nispeten basit bir yolu, veriler göz önüne alındığında maksimum günlük olasılığı olan konuların sayısını bulmak için farklı sayıda konuya sahip modeller arasında geçiş yapmaktır. Şu örneği düşünün:R
# download and install one of the two R packages for LDA, see a discussion
# of them here: http://stats.stackexchange.com/questions/24441
#
install.packages("topicmodels")
library(topicmodels)
#
# get some of the example data that's bundled with the package
#
data("AssociatedPress", package = "topicmodels")
Konu modelini üretmeye ve çıktıyı analiz etmeye başlamadan önce, modelin kullanması gereken konu sayısına karar vermeliyiz. Farklı konu numaralarının üzerinden dönme, her konu numarası için modelin günlük benzerliğini elde etme ve en iyi olanı seçebilmemiz için çizim yapma işlevi. En iyi konu sayısı, pakete yerleştirilmiş örnek verileri elde etmek için en yüksek günlük olabilirlik değerine sahip olanıdır. Burada 100 konu olsa da 2 konu ile başlayan her modeli değerlendirmeyi seçtim (bu biraz zaman alacak!).
best.model <- lapply(seq(2,100, by=1), function(k){LDA(AssociatedPress[21:30,], k)})
Şimdi üretilen her model için günlük benzerlik değerlerini çıkarabilir ve onu çizmeye hazırlayabiliriz:
best.model.logLik <- as.data.frame(as.matrix(lapply(best.model, logLik)))
best.model.logLik.df <- data.frame(topics=c(2:100), LL=as.numeric(as.matrix(best.model.logLik)))
Ve şimdi, en yüksek günlük olasılığının ne kadar sayıda konu göründüğünü görmek için bir plan yapın:
library(ggplot2)
ggplot(best.model.logLik.df, aes(x=topics, y=LL)) +
xlab("Number of topics") + ylab("Log likelihood of the model") +
geom_line() +
theme_bw() +
opts(axis.title.x = theme_text(vjust = -0.25, size = 14)) +
opts(axis.title.y = theme_text(size = 14, angle=90))
Görünüşe göre 10 ila 20 konu arasında. Günlüğü benzerliği en yüksek olan konuların tam sayısını bulmak için verileri inceleyebiliriz:
best.model.logLik.df[which.max(best.model.logLik.df$LL),]
# which returns
topics LL
12 13 -8525.234
Sonuç olarak, 13 konu bu verilere en iyi şekilde uyuyor. Şimdi 13 başlıklı LDA modeli oluşturup modeli araştırmaya devam edebiliriz:
lda_AP <- LDA(AssociatedPress[21:30,], 13) # generate the model with 13 topics
get_terms(lda_AP, 5) # gets 5 keywords for each topic, just for a quick look
get_topics(lda_AP, 5) # gets 5 topic numbers per document
Ve böylece modelin özelliklerini belirlemek için.
Bu yaklaşım aşağıdakilere dayanmaktadır:
Griffiths, TL ve M. Steyvers 2004. Bilimsel konular bulma. Amerika Birleşik Devletleri Ulusal Bilimler Akademisi Bildirileri 101 (Ek 1): 5228 –5235.
devtools::source_url("https://gist.githubusercontent.com/trinker/9aba07ddb07ad5a0c411/raw/c44f31042fc0bae2551452ce1f191d70796a75f9/optimal_k")
+1 güzel cevap.