Nombre de paramètres dans le modèle de Markov

12

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)?

Sergey
la source
avez-vous une justification pour utiliser BIC? Cela peut donner des résultats horriblement faux sinon avec les hypothèses appropriées.
suncoolsu
@suncoolsu, que voulez-vous dire par justification? J'ai trouvé quelques exemples sur la sélection des clusters K (modèles GMM) en fonction du score BIC. J'ai probablement fourni un mauvais exemple en comparant deux modèles avec des données d'entrée (dimensions) différentes.
Sergey
1
Je voulais dire utiliser BIC uniquement si l'hypothèse, le vrai modèle est dans l'espace du modèle , est justifiée. Peut-être que cela est justifié dans votre cas. Je suis d'accord avec vous que les gens utilisent BIC comme AIC, mais les deux sont des choses très différentes!
suncoolsu
Salut, c'est un commentaire tardif et j'espère que vous êtes toujours actif, mais quelle est la meilleure façon d'obtenir le nombre de paramètres dans un modèle?
masfenix

Réponses:

7

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.

NRH
la source
Dois-je prendre en compte la dimension des données? Et si size(data)ce serait 2x100
Sergey
@Sergey, je n'ai regardé que le calcul du nombre de paramètres dans ma réponse. Pour être complet, j'aurais aussi dû réfléchir à la façon de calculer la "taille" de l'ensemble de données, car vous êtes intéressé par BIC. Pour être honnête, je n'ai vu qu'une dérivation de BIC pour des données indépendantes, mais je suppose que la "taille" correcte des données est la longueur de la série de données. Je ne sais pas ce que vous entendez par la taille étant 2x100. Si vous voulez commenter cela, vous devez donner une description plus précise de la façon dont les données sont codées en tant que matrice 2 x 100.
NRH
Merci pour la réponse, je pense que je comprends l'impact de la dimension des données sur BIC, veuillez regarder ma mise à jour
Sergey
Dois-je diminuer le nombre de paramètres dans le modèle HMM gauche-droite (Bakis) (avec matrice de transition triangulaire)? Est-il normal d'avoir HMM avec (5000, 6000 et plus de paramètres)?
Sergey
4

Lorsque 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

jebsam
la source