Liczba parametrów w modelu Markowa

12

Chcę użyć BIC do wyboru modelu HMM:

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

Jak więc policzyć liczbę parametrów w modelu HMM. Rozważ prosty 2-stanowy HMM, w którym mamy następujące dane:

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

Więc myślę:

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

Na koniec mamy:

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

Znalazłem rozwiązanie, w którym formuła num_of_params(dla prostego modelu Markowa) wygląda następująco:

Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix

Jakie jest właściwe rozwiązanie? Czy muszę brać pod uwagę pewne zerowe prawdopodobieństwa w matrycach przejściowych lub emisyjnych?

==== Zaktualizowano od 07.15.2011 ====

Myślę, że mogę wyjaśnić wpływ wymiaru danych (na przykładzie „rozkładu mieszanki Gaussa”)

X jest macierzą n-na-d, gdzie (n-rzędy odpowiadają obserwacjom; d-kolumny odpowiadają zmiennym (Ndimension).

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;

Model będzie miał następującą liczbę parametrów dla 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

Jeśli traktujemy X jako dane jednowymiarowe , to mamy to num_of_data = (n*d)samo, co w przypadku danych dwuwymiarowychnum_of_data = n .

Dane dwuwymiarowe : nParam = 11; logLike = -11,8197; BIC = 1,689

Dane 1-wymiarowe : nParam = 5; logLike = -24,7575; BIC = -34,7720

Mam bardzo małą praktykę z HMM. Czy to normalne, że HMM ma parametry (5000, 6000 i więcej)?

Siergiej
źródło
czy masz uzasadnienie używania BIC? Może przynieść strasznie złe wyniki, jeśli nie przy odpowiednich założeniach.
suncoolsu
@ suncoolsu, Co masz na myśli przez uzasadnienie? Znalazłem kilka przykładów wyboru K-klastrów (modele GMM) na podstawie oceny BIC. Prawdopodobnie podałem zły przykład przy porównywaniu dwóch modeli z różnymi danymi wejściowymi (wymiarami).
Siergiej
1
Miałem na myśli użycie BIC tylko wtedy, gdy założenie, że prawdziwy model znajduje się w przestrzeni modelu , jest uzasadnione. Może być uzasadnione w twoim przypadku. Zgadzam się z tobą, że ludzie używają BIC jak AIC, ale oba są bardzo różne!
suncoolsu
Cześć, to jest późny komentarz i mam nadzieję, że nadal jesteś aktywny, ale jaki jest najlepszy sposób na uzyskanie liczby parametrów w modelu?
masfenix

Odpowiedzi:

7

Pytanie brzmi, czy niektóre z twoich parametrów w macierzy przejścia i / lub macierzy emisji są ustalone na początek. Twoje obliczenia (liczby parametrów) wyglądają poprawnie. Jeśli z jakiegoś powodu chcesz modelu 3-stanowego zamiast modelu 2-stanowego i zdecydujesz z góry, że przejścia ze stanu 1 na 3 i 3 na 1 są niedozwolone (prawdopodobieństwo 0), musisz wziąć to pod uwagę przy obliczaniu liczba parametrów.

NRH
źródło
Czy muszę brać pod uwagę wymiar danych? Co jeśli size(data)będzie 2x100
Siergiej
@Sergey, w swojej odpowiedzi spojrzałem tylko na obliczenie liczby parametrów. Dla kompletności powinienem był rozważyć, jak obliczyć „rozmiar” zestawu danych, ponieważ jesteś zainteresowany BIC. Szczerze mówiąc, widziałem tylko wyprowadzenie BIC dla niezależnych danych, ale domyślam się, że poprawny „rozmiar” danych to długość serii danych. Nie jestem pewien, co masz na myśli mówiąc, że rozmiar to 2x100. Jeśli chcesz to skomentować, musisz podać dokładniejszy opis sposobu kodowania danych jako macierzy 2 na 100.
NRH
Dzięki za odpowiedź, myślę, że rozumiem wpływ wymiaru danych na BIC, proszę spojrzeć na moją aktualizację
Sergey
Czy muszę zmniejszać liczbę parametrów w modelu HMM lewy-prawy (Bakis) (z trójkątną macierzą przejścia)? Czy to normalne, że HMM ma (5000, 6000 i więcej parametrów)?
Siergiej
4

Kiedy obliczamy liczbę wolnych parametrów w wyborze modelu BIC, oznacza to po prostu liczbę zer w macierzach tranzytowych i emisyjnych. Na przykład, gdy w macierzy przejścia jest zero, oznacza to, że nie ma prawdopodobieństwa, że ​​określony stan przejdzie do następnego (zgodnie z definicją macierzy przejścia). W ten sposób BIC wybiera optymalne stany dla HMM. Jednak uzyskanie liczby wolnych parametrów tylko przy użyciu rozmiaru matrycy początkowej, przejściowej i emisyjnej jest mylące

jebsam
źródło