"クラスタ数の事前分布としてのディリクレプロセスによる無限混合モデル"の私の理解は、クラスタの数はある量のクラスタに収束するデータによって決定されるということです。Scirit-learnで `Dirichlet Process Gaussian Mixture Model`を使用するには? (n_components?)
このR Implementation
https://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-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
ここに私の素朴な使い方です:コメントで@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)
実際にこの種のモデルについてはわかりませんが、docoでは 'n_components'を" truncation paramater "と呼んでいますので、コンポーネントの数はデータによって決まると思われますが、バウンド。 – maxymoo
ああ、上限ですか?私は持っているサンプルの最大数を追加しようとしました(42)と私は42クラスタで終わった。私はそれがその数のクラスターにそれらを強制しているかもしれないと思う。 2000回の反復で上記のR実装を使用したGibbsサンプリングを実行したとき、私は3つのクラスタを取得しました。 –
、確かに 'convariance_type'、' alpha'などのような他のパラメタのいくつかで遊んでいるのでしょうか? – maxymoo