我对“Dirichlet过程作为簇数的先验分布的无限混合模型”的理解是,当它们收敛到一定量的簇时,簇的数目由数据决定。
这个R Implementationhttps://github.com/jacobian1980/ecostates以这种方式决定集群的数量。虽然,R implementation使用吉布斯取样器,但我不确定这是否影响了这一点。
使我困惑的是n_components参数。如果由数据和Dirichlet过程确定组件的数量,那么这个参数是什么?
最后,我试图得到:
(1)每个样本的群集分配;
(二)各群的概率向量;
(3)每个样本的似然/对数似然。
看起来(1)是n_components: int, default 1 :Number of mixture components.方法,(3)是predict方法。然而,(1)的输出完全依赖于score超参数。
我很抱歉,如果这是一个幼稚的问题,我对Bayesian编程很陌生,注意到n_components中的Dirichlet Process我想尝试一下。
以下是文档:
http://scikit-learn.org/stable/modules/generated/sklearn.mixture.DPGMM.html#sklearn.mixture.DPGMM
下面是一个用法示例:
http://scikit-learn.org/stable/auto_examples/mixture/plot_gmm.html
以下是我天真的用法:
from sklearn.mixture import DPGMM X = pd.read_table("Data/processed/data.tsv", sep="\t", index_col=0) Mod_dpgmm = DPGMM(n_components=3) Mod_dpgmm.fit(X)
最佳答案
正如评论中提到的@ Max yMOO,n_components是截断参数。
在SKEXCEL的DP-GMM中与拐杖中断表示相关的中餐馆过程中,一个新的数据点加入一个现存的聚类k概率|k| / n-1+alpha,并启动一个概率为alpha / n-1 + alpha的新聚类。这个参数可以解释为Dirichlet过程的浓度参数,它将影响最终的簇数。
与使用吉布斯采样的R实现不同,SkSee的DP-GMM实现使用变分推理。这可能与结果的差异有关。
温和的Dirichlet过程教程可以找到here。