2016-08-22 2 views
5

"클러스터 수에 대한 사전 분포로 Dirichlet 프로세스의 무한 혼합 모델"을 이해하면 특정 수의 클러스터로 수렴 할 때 데이터 수에 따라 클러스터 수가 결정된다는 것입니다.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.구성 요소의 수가 데이터와 Dirichlet 프로세스에 의해 결정되는 경우이 매개 변수는 무엇입니까?


궁극적으로 내가 얻으려고 :

(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로 기존 클러스터 k에 참여하고 확률 alpha/n-1 + alpha에게 새로운 클러스터를 시작합니다 . 이 매개 변수는 Dirichlet Process의 농도 매개 변수로 해석 될 수 있으며 최종 클러스터 수에 영향을 미칩니다.

깁스 샘플링을 사용하는 R의 구현과 달리 sklearn의 DP-GMM 구현은 변형 추론을 사용합니다. 이것은 결과의 차이와 관련 될 수 있습니다.

부드러운 Dirichlet 프로세스 자습서는 here에서 찾을 수 있습니다.

관련 문제