Numero di parametri nel modello Markov


12

Voglio usare BIC per la selezione del modello HMM:

BIC = -2*logLike + num_of_params * log(num_of_data)

Quindi, come posso contare il numero di parametri nel modello HMM? Considera un HMM a 2 stati semplice, in cui abbiamo i seguenti dati:

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

Quindi penso:

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

Quindi alla fine abbiamo:

BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319

Ho trovato una soluzione in cui la formula di num_of_params(per un semplice modello Markov) è simile a:

Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix

Quindi qual è la soluzione giusta? Devo prendere in considerazione alcune probabilità zero nelle matrici di transizione o di emissione?

==== Aggiornato dal 07.15.2011 ====

Penso di poter fornire alcuni chiarimenti sull'impatto della dimensione dei dati (usando l'esempio "distribuzione gaussiana della miscela")

X è una matrice n-by-d in cui (le righe n corrispondono alle osservazioni; le colonne d corrispondono alle variabili (Ndimensioni).

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;

Il modello avrà il seguente numero di parametri per 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

Se trattiamo X come dati monodimensionali , rispetto a quelli che abbiamo num_of_data = (n*d), quindi per i dati bidimensionali che abbiamo num_of_data = n.

Dati bidimensionali : nParam = 11; logLike = -11.8197; BIC = 1.689

Dati monodimensionali : nParam = 5; logLike = -24.8753; BIC = -34.7720

Ho pochissima pratica con HMM. È normale avere HMM con (5000, 6000 e più parametri)?


hai una giustificazione per l'utilizzo di BIC? Può dare risultati orribilmente sbagliati se non con le ipotesi appropriate.
suncoolsu,

@suncoolsu, cosa intendi per giustificazione? Ho trovato alcuni esempi sulla selezione dei cluster K (modelli GMM) basata sul punteggio BIC. Probabilmente ho fornito un esempio errato confrontando due modelli con dati di input (dimensioni) diversi.
Sergey,

1
Intendevo usare BIC solo se il presupposto, il vero modello è nello spazio del modello , è giustificato. Potrebbe essere giustificato nel tuo caso. Sono d'accordo con te sul fatto che le persone usano BIC come AIC, ma entrambe sono cose molto diverse!
suncoolsu,

Ciao, questo è un commento in ritardo e spero che tu sia ancora attivo, ma qual è il modo migliore per ottenere il numero di parametri in un modello?
Masfenix,

Risposte:


7

La domanda è se alcuni dei tuoi parametri nella matrice di transizione e / o matrice di emissione sono fissi per cominciare. I tuoi calcoli (del numero di parametri) sembrano corretti. Se per qualche motivo desideri un modello a 3 stati anziché un modello a 2 stati e decidi in anticipo che le transizioni dallo stato 1 a 3 e da 3 a 1 non sono consentite (hanno una probabilità 0), dovresti tenerne conto nel calcolo di il numero di parametri.


Devo prendere in considerazione la dimensione dei dati? E se size(data)fosse 2x100
Sergey il

@Sergey, ho solo considerato il calcolo del numero di parametri nella mia risposta. Per completezza avrei dovuto considerare come calcolare anche la "dimensione" del set di dati, poiché sei interessato a BIC. Ad essere sincero, ho visto solo una derivazione di BIC per dati indipendenti, ma la mia ipotesi è che la "dimensione" corretta dei dati sia la lunghezza della serie di dati. Non sono sicuro di cosa intendi per dimensione 2x100. Se vuoi commentare questo, devi dare una descrizione più precisa di come i dati sono codificati come una matrice 2 per 100.
NRH,

Grazie per la risposta, penso di aver capito l'impatto della dimensione dei dati sul BIC, per favore guarda il mio aggiornamento
Sergey,

Devo ridurre il numero di parametri nel modello HMM sinistra-destra (Bakis) (con matrice di transizione triangolare)? È normale avere HMM con (5000, 6000 e più parametri)?
Sergey,

4

Quando calcoliamo il numero di parametri liberi nella selezione del modello BIC, ciò significa semplicemente che è il numero di zeri nelle matrici di transizione ed emissione. Ad esempio, quando c'è uno zero nella matrice di transizione, ciò significa che non esiste alcuna probabilità che un determinato stato passi al successivo (come definito dalla matrice di transizione). Ecco come BIC seleziona l'ottimale degli stati per un HMM. Tuttavia, ottenere il no di parametri liberi semplicemente usando la dimensione delle matrici iniziale, di transizione ed emissione è confuso

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.