HMM 모델 선택에 BIC를 사용하고 싶습니다.
BIC = -2*logLike + num_of_params * log(num_of_data)
HMM 모델의 매개 변수 수를 어떻게 계산합니까? 다음과 같은 데이터가있는 간단한 2 상태 HMM을 고려하십시오.
data = [1 2 1 1 2 2 2 1 2 3 3 2 3 2 1 2 2 3 4 5 5 3 3 2 6 6 5 6 4 3 4 4 4 4 4 4 3 3 2 2];
model = hmmFit(data, 2, 'discrete');
model.pi = 0.6661 0.3339;
model.A =
0.8849 0.1151
0.1201 0.8799
model.emission.T =
0.2355 0.5232 0.2259 0.0052 0.0049 0.0053
0.0053 0.0449 0.2204 0.4135 0.1582 0.1578
logLike = hmmLogprob(model,data);
logLike = -55.8382
그래서 나는 생각한다:
Nparams = size(model.A,2)*(size(model.A,2)-1) +
size(model.pi,2)-1) +
size(model.emission.T,1)*(size(model.emission.T,2)-1)
Nparams = 13
결국 우리는 :
BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319
num_of_params
간단한 Markov 모델 의 수식이 다음과 같은 솔루션을 찾았습니다 .
Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix
그렇다면 올바른 해결책은 무엇입니까? 전이 또는 방출 매트릭스에서 제로 확률을 고려해야합니까?
==== 2011 년 7 월 15 일 이후 업데이트 됨 ====
데이터 차원의 영향에 대한 설명을 제공 할 수 있다고 생각합니다 ( "가우스 혼합 분포"예제 사용).
X는 (n 행은 관측치에 해당하고 d 열은 변수 (차원)에 해당하는 nxd 행렬입니다.
X=[3,17 3,43
1,69 2,94
3,92 5,04
1,65 1,79
1,59 3,92
2,53 3,73
2,26 3,60
3,87 5,01
3,71 4,83
1,89 3,30 ];
[n d] = size(X);
n = 10; d =2;
모델에는 다음과 같은 GMM 매개 변수 수가 있습니다.
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * Ndimensions %for daigonal covariance matrices
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * NDimensions * (NDimensions+1)/2; %for full covariance matrices
우리는로 X을 치료하는 경우 1 차원 데이터 우리가 가진 것보다, num_of_data = (n*d)
그래서를 들어, 2 차원 우리가 가지고있는 데이터 num_of_data = n
.
2 차원 데이터 : nParam = 11; logLike = -11.8197; 빅 = 1.689
1 차원 데이터 : nParam = 5; logLike = -24.8753; 빅 = -34.7720
나는 HMM에 대한 연습이 거의 없습니다. H5000이 (5000, 6000 이상 매개 변수) 인 것이 정상입니까?