R使用mclust进行高斯混合模式如何获得迭代次数

时间:2014-10-24 13:43:56

标签: r iteration cluster-analysis

我正在使用mclust函数运行集群。需要获得算法用于获得答案的迭代次数。我似乎无法在任何地方找到它。我不介意使用其他能够使用EM执行“高斯混合模式”的函数,如果它将为我提供迭代次数作为其输出的一部分。

1 个答案:

答案 0 :(得分:0)

据我所知,似乎没有明确的方法来提取这个。这是一个非常黑客和近似的方式来获得它。

您可以使用control参数

设置EM的最大迭代次数
x<-c(rnorm(100),rnorm(100,10,1))
mod<-Mclust(x,control = emControl(itmax=100))

默认设置为Inf,因此只有当对数似然值以小于容差的增量变化时,EM才会终止。如果设置itmax,则EM将终止,但会在达到容差范围之前发出警告,表示算法已停止。

因此,您可以调整itmax几次,以了解在EM自然终止之前需要多少次迭代。例如,

mod<-Mclust(x,control = emControl(itmax=102))

发出警告但

mod<-Mclust(x,control = emControl(itmax=103))

没有。

因此,似乎需要103次迭代才能达到退出条件(使用默认的容差参数)。