为什么在使用吉布斯抽样时,后验计算和模型值之间的主题模型得分不同?

时间:2019-04-29 09:02:26

标签: r topicmodels

在使用吉布斯使用topicmodels软件包训练主题模型时,使用posterior()采样分数的方法不同于训练模型本身的分数。当我使用VEM代替Gibbs时,分数完全相同。这是为什么?由于使用与后验分数计算相同的数据进行训练,因此我希望Gibbs采样也能产生相同的分数。

我使用包装中的数据来显示我的意思。

library(topicmodels)

data("AssociatedPress", package = "topicmodels")
lda <- LDA(AssociatedPress[1:20,], control = list(alpha = 0.1), k = 2)
# calculate posterior scores with the exact same data
scoresVEM <- as.data.frame( posterior(lda, AssociatedPress[1:20,])$topics)
# retrieve scores from the model itself
scoresVEM2 <- as.data.frame(cbind(lda@documents,lda@gamma))

lda <- LDA(AssociatedPress[1:20,], method = "Gibbs", control = list(nstart = 5, burnin = 2000, best = TRUE, seed = 1:5), k = 2)
# calculate posterior scores with the exact same data
scoresGibbs <- as.data.frame( posterior(lda, AssociatedPress[1:20,])$topics)
# retrieve scores from the model itself
scoresGibbs2 <- as.data.frame(cbind(lda@documents,lda@gamma))

让我们对数据帧进行补偿:

head(scoresVEM)
             1            2
1 9.998838e-01 0.0001162225
2 9.998872e-01 0.0001127924
3 9.998801e-01 0.0001198678
4 9.998523e-01 0.0001476551
5 4.628080e-04 0.9995371920
6 7.261089e-05 0.9999273891

head(scoresVEM2)
            V1           V2
1 9.998838e-01 0.0001162225
2 9.998872e-01 0.0001127924
3 9.998801e-01 0.0001198678
4 9.998523e-01 0.0001476551
5 4.628080e-04 0.9995371920
6 7.261089e-05 0.9999273891

因此模型分数和后验分数都相同。 Gibbs是这样的:

head(scoresGibbs)
          1         2
1 0.1629393 0.8370607
2 0.2990654 0.7009346
3 0.1639344 0.8360656
4 0.5214008 0.4785992
5 0.5086207 0.4913793
6 0.1889597 0.8110403

head(scoresGibbs2)
         V1        V2
1 0.1693291 0.8306709
2 0.3021807 0.6978193
3 0.1901639 0.8098361
4 0.5408560 0.4591440
5 0.5517241 0.4482759
6 0.2080679 0.7919321

分数至少有一点不同。这是为什么?提前非常感谢!

0 个答案:

没有答案