Je souhaite utiliser BIC pour la sélection de modèle HMM:
BIC = -2*logLike + num_of_params * log(num_of_data)
Alors, comment puis-je compter le nombre de paramètres dans le modèle HMM. Considérons un HMM simple à 2 états, où nous avons les données suivantes:
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
Donc je pense:
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
Donc, à la fin, nous avons:
BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319
J'ai trouvé une solution où la formule num_of_params
(pour un modèle de Markov simple) ressemble à:
Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix
Quelle est donc la bonne solution? Dois-je prendre en compte certaines probabilités nulles dans les matrices de transition ou d'émission?
==== Mis à jour depuis le 15/07/2011 ====
Je pense que je peux apporter quelques éclaircissements sur l'impact de la dimension des données (en utilisant l'exemple «distribution de mélange gaussien»)
X est une matrice n par d où (n lignes correspondent aux observations; les colonnes d correspondent aux variables (Ndimensions).
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;
Le modèle aura le nombre de paramètres suivant pour 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
Si nous traitons X comme des données à 1 dimension , nous en avons de num_of_data = (n*d)
même pour les données à 2 dimensions que nous avons num_of_data = n
.
Données bidimensionnelles : nParam = 11; logLike = -11,8197; BIC = 1,689
Données unidimensionnelles : nParam = 5; logLike = -24,8753; BIC = -34,7720
J'ai très peu de pratique avec HMM. Est-il normal d'avoir HMM avec (5000, 6000 et plus de paramètres)?
Réponses:
La question est de savoir si certains de vos paramètres dans la matrice de transition et / ou la matrice d'émission sont fixés pour commencer. Vos calculs (du nombre de paramètres) semblent corrects. Si, pour une raison quelconque, vous voulez un modèle à 3 états au lieu d'un modèle à 2 états et décidez à l'avance que les transitions de l'état 1 à 3 et de 3 à 1 ne sont pas autorisées (avec 0 probabilité), vous devrez en tenir compte dans le calcul de le nombre de paramètres.
la source
size(data)
ce serait 2x100Lorsque nous calculons le nombre de paramètres libres dans le BIC de sélection de modèle, cela signifie qu'il s'agit simplement du nombre de zéros dans les matrices de transtion et d'émission. Par exemple, quand il y a un zéro dans la matrice de transition, cela signifie qu'il n'y a aucune probabilité qu'un certain état passe au suivant (tel que défini par la matrice de transition). C'est ainsi que BIC sélectionne l'optimum d'états pour un HMM. Cependant, obtenir le nombre de paramètres libres en utilisant simplement la taille des matrices initiale, de transition et d'émission est source de confusion
la source