gpt4 book ai didi

r - 如何使用 R 的 topicmodels 包中的 LDA 函数重现精确结果

转载 作者:行者123 更新时间:2023-12-02 01:11:09 24 4
gpt4 key购买 nike

我无法从 topicmodels 的 LDA 函数创建可重现的结果。以他们的文档为例:

library(topicmodels)
set.seed(0)
lda1 <- LDA(AssociatedPress[1:20, ], control=list(seed=0), k=2)
set.seed(0)
lda2 <- LDA(AssociatedPress[1:20, ], control=list(seed=0), k=2)
identical(lda1, lda2)
# [1] FALSE

如何从两次单独的 LDA 调用中获得相同的结果?

顺便说一句(如果包作者在这里的话),我找到了 control=list(seed=0)片段不幸且不必要。在幕后,有一行“if (missing(seed)) seed <- as.integer(Sys.time())”。 。这不会使过程更加可靠地随机,它只会撤消指定的种子。我错过了什么吗?

更新:正如 @hrbrmstr 下面发现的那样,传递种子作为控件会产生实际上相同的对象,唯一的区别是临时本地文件位置。所以这个问题更像是一个误解(尽管如果函数尊重 set.seed() 似乎仍然会更清楚)。

最佳答案

这并不是真正的“答案”,但没有其他方法可以发布代码片段:-)

我尝试了以下操作:

library(topicmodels)

data(AssociatedPress)

lda1 <- LDA(AssociatedPress[1:20, ], control=list(seed=0), k=2)
lda2 <- LDA(AssociatedPress[1:20, ], control=list(seed=0), k=2)

identical(lda1, lda2)
[1] FALSE

all.equal(lda1, lda2)
[1] "Attributes: < Component 5: Attributes: < Component 10: 1 string mismatch > >"

a1 <- posterior(lda1, AssociatedPress)
a2 <- posterior(lda2, AssociatedPress)

identical(a1, a2)
[1] TRUE

all.equal(a1, a2)
[1] TRUE

all.equal(lda1@alpha,lda2@alpha)
[1] TRUE
all.equal(lda1@call,lda2@call)
[1] TRUE
all.equal(lda1@Dim,lda2@Dim)
[1] TRUE
all.equal(lda1@control,lda2@control)
[1] "Attributes: < Component 10: 1 string mismatch >"
all.equal(lda1@k,lda2@k)
[1] TRUE
all.equal(lda1@terms,lda2@terms)
[1] TRUE
all.equal(lda1@documents,lda2@documents)
[1] TRUE
all.equal(lda1@beta,lda2@beta)
[1] TRUE
all.equal(lda1@gamma,lda2@gamma)
[1] TRUE
all.equal(lda1@wordassignments,lda2@wordassignments)
[1] TRUE
all.equal(lda1@loglikelihood,lda2@loglikelihood)
[1] TRUE
all.equal(lda1@iter,lda2@iter)
[1] TRUE
all.equal(lda1@logLiks,lda2@logLiks)
[1] TRUE
all.equal(lda1@n,lda2@n)
[1] TRUE

identical(lda1@alpha,lda2@alpha)
[1] TRUE
identical(lda1@call,lda2@call)
[1] TRUE
identical(lda1@Dim,lda2@Dim)
[1] TRUE
identical(lda1@control,lda2@control)
[1] FALSE
identical(lda1@k,lda2@k)
[1] TRUE
identical(lda1@terms,lda2@terms)
[1] TRUE
identical(lda1@documents,lda2@documents)
[1] TRUE
identical(lda1@beta,lda2@beta)
[1] TRUE
identical(lda1@gamma,lda2@gamma)
[1] TRUE
identical(lda1@wordassignments,lda2@wordassignments)
[1] TRUE
identical(lda1@loglikelihood,lda2@loglikelihood)
[1] TRUE
identical(lda1@iter,lda2@iter)
[1] TRUE
identical(lda1@logLiks,lda2@logLiks)
[1] TRUE
identical(lda1@n,lda2@n)
[1] TRUE

“不平等”@control 重要吗?

关于r - 如何使用 R 的 topicmodels 包中的 LDA 函数重现精确结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com