如何在Scikit-learn中使用“狄利克雷过程高斯混合模型”?(n_components吗?)



我对"Dirichlet过程作为聚类数量先验分布的无限混合模型"的理解是,聚类的数量是由数据收敛到一定数量的聚类决定的。

这个R Implementation https://github.com/jacobian1980/ecostates以这种方式决定集群的数量。虽然,R implementation使用吉布斯采样器,我不确定这是否会影响这一点。

让我困惑的是n_components参数。n_components: int, default 1 : Number of mixture components. 如果组件数是由数据和狄利克雷过程决定的,那么这个参数是什么?


最终,我想得到:

(1)每个样本的聚类分配;

(2)每个聚类的概率向量;和

(3)每个样本的似然/对数似然。

看起来(1)是predict方法,(3)是score方法。然而,(1)的输出完全依赖于n_components超参数。

如果这是一个幼稚的问题,我很抱歉,我对贝叶斯编程非常陌生,并且注意到Scikit-learn中有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)

@maxymoo在评论中提到,n_components是一个截断参数。

在与sklearn的DP-GMM中的棍子断裂表示相关的中国餐馆过程中,一个新的数据点以|k| / n-1+alpha的概率加入一个现有的集群k,而alpha / n-1 + alpha的概率开始一个新的集群。该参数可以解释为狄利克雷过程的浓度参数,它将影响最终的簇数。

与使用Gibbs抽样的R实现不同,sklearn的DP-GMM实现使用变分推理。这可能与结果的差异有关。

一个温和的狄利克雷过程教程可以在这里找到。

现在类DPGMM已被删除。正如警告所示:DeprecationWarning:类DPGMM已被弃用;DPGMM类不能正常工作,最好使用带有参数weight_concentration_prior_type='dirichlet_process'sklearn.mixture.BayesianGaussianMixture类。DPGMM在0.18中已弃用,并将在0.20中删除。

相关内容

  • 没有找到相关文章

最新更新