2016-08-22 4 views
5

"クラスタ数の事前分布としてのディリクレプロセスによる無限混合モデル"の私の理解は、クラスタの数はある量のクラスタに収束するデータによって決定されるということです。Scirit-learnで `Dirichlet Process Gaussian Mixture Model`を使用するには? (n_components?)

このR Implementationhttps://github.com/jacobian1980/ecostatesは、このようにクラスタの数を決定します。 R implementationはGibbsサンプラーを使用していますが、これがこの影響を受けるかどうかはわかりません。

私に混乱を招くのは、n_componentsのパラメータです。 n_components: int, default 1 : Number of mixture components.データ数とディリクレ・プロセスによってコンポーネント数が決まる場合、このパラメータは何ですか?


結局、私が取得しようとしている:

(1)各サンプルのクラスタの割り当て。

(2)各クラスタの確率ベクトル。 (3)各サンプルの尤度/対数尤度。

(1)はpredictメソッド、(3)はscoreメソッドです。しかし、(1)の出力は、n_componentsハイパーパラメータに完全に依存しています。

これは単なる質問ですが、私はベイジアンプログラミングの新機能で、試したかったScikit-learnDirichlet 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

ここに私の素朴な使い方です:コメントで@maxymooで述べたように

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) 
+0

実際にこの種のモデルについてはわかりませんが、docoでは 'n_components'を" truncation paramater "と呼んでいますので、コンポーネントの数はデータによって決まると思われますが、バウンド。 – maxymoo

+0

ああ、上限ですか?私は持っているサンプルの最大数を追加しようとしました(42)と私は42クラスタで終わった。私はそれがその数のクラスターにそれらを強制しているかもしれないと思う。 2000回の反復で上記のR実装を使用したGibbsサンプリングを実行したとき、私は3つのクラスタを取得しました。 –

+1

、確かに 'convariance_type'、' alpha'などのような他のパラメタのいくつかで遊んでいるのでしょうか? – maxymoo

答えて

3

n_componentsは切り捨てパラメータです。 sklearnのDP-GMMでスティック破壊表現に関連している中華料理店過程の文脈では、

、新しいデータポイントが確率|k|/n-1+alpha開始確率で新しいクラスターで既存のクラスタに参加するkalpha/n-1 + alpha 。このパラメータは、ディリクレ・プロセスの濃度パラメータとして解釈することができ、クラスタの最終数に影響します。

Gibbsサンプリングを使用するRの実装とは異なり、sklearnのDP-GMM実装では、変分推論が使用されます。これは結果の違いに関連している可能性があります。

穏やかなディリクレプロセスチュートリアルは、hereで見つけることができます。

関連する問題