Número de parâmetros no modelo Markov

12

Quero usar o BIC para a seleção do modelo HMM:

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

Então, como conto o número de parâmetros no modelo HMM. Considere um HMM simples de 2 estados, onde temos os seguintes dados:

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

Então eu acho:

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

Então, no final, temos:

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

Encontrei uma solução em que a fórmula num_of_params(para o modelo simples de Markov) se parece com:

Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix

Então, qual é a solução certa? Preciso levar em conta algumas probabilidades zero em matrizes de transição ou emissão?

==== Atualizado desde 15.15.2011 ====

Eu acho que posso fornecer alguns esclarecimentos sobre o impacto da dimensão dos dados (usando o exemplo “distribuição de mistura gaussiana”)

X é uma matriz n por d onde (n linhas correspondem a observações; as colunas d correspondem a variáveis ​​(dimensões N)).

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;

O modelo terá o seguinte número de parâmetros para o 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 tratarmos X como dados 1-dimensionais , que nós temos num_of_data = (n*d), portanto, para os 2-dimensionais dados que temos num_of_data = n.

Dados bidimensionais : nParam = 11; logLike = -11,8197; BIC = 1.689

Dados unidimensionais : nParam = 5; logLike = -24,8753; BIC = -34,7720

Eu tenho muito pouca prática com o HMM. É normal ter HMM com (5000, 6000 e mais parâmetros)?

Sergey
fonte
você tem uma justificativa para usar o BIC? Pode dar resultados terrivelmente errados, se não com as suposições apropriadas.
22611 suncoolsu
@suncoolsu, o que você quer dizer com justificação? Encontrei alguns exemplos na seleção de clusters K (modelos GMM) com base na pontuação BIC. Provavelmente, forneci um exemplo errado ao comparar dois modelos com diferentes dados de entrada (dimensões).
Sergey
1
Eu quis dizer usando BIC apenas se a suposição, o verdadeiro modelo estiver no espaço do modelo , for justificada. Pode ser que se justifique no seu caso. Concordo com você que as pessoas usam o BIC como o AIC, mas ambos são coisas muito diferentes!
suncoolsu
Olá, este é um comentário tardio e espero que você ainda esteja ativo, mas qual é a melhor maneira de obter o número de parâmetros em um modelo?
masfenix

Respostas:

7

A questão é se alguns de seus parâmetros na matriz de transição e / ou matriz de emissão estão corrigidos para começar. Seus cálculos (do número de parâmetros) parecem corretos. Se, por algum motivo, você quiser um modelo de 3 estados em vez de um modelo de 2 estados e decidir antecipadamente que as transições dos estados 1 para 3 e 3 para 1 não são permitidas (têm probabilidade 0), você deverá levar isso em consideração no cálculo de o número de parâmetros.

NRH
fonte
Preciso levar em consideração a dimensão dos dados? E se size(data)for 2x100
Sergey
@ Emery, eu só olhei para o cálculo do número de parâmetros na minha resposta. Para completar, também deveria ter considerado como calcular o "tamanho" do conjunto de dados, pois você está interessado no BIC. Para ser sincero, só vi uma derivação do BIC para dados independentes, mas meu palpite é que o "tamanho" correto dos dados é o comprimento da série de dados. Não sei o que você quer dizer com o tamanho sendo 2x100. Se você quiser comentar sobre isso, é necessário fornecer uma descrição mais precisa de como os dados são codificados como uma matriz de 2 por 100.
NRH 14/07
Obrigado pela resposta, acho que entendo o impacto da dimensão de dados no BIC, por favor, veja minha atualização.
Sergey
Tenho que diminuir o número de parâmetros no modelo HMM esquerda-direita (Bakis) (com matriz de transição triangular)? É normal ter HMM com (5000, 6000 e mais parâmetros)?
Sergey
4

Ao calcular o número de parâmetros livres na seleção de modelo BIC, isso significa que é simplesmente o número de zeros nas matrizes de transição e emissão. Por exemplo, quando existe um zero na matriz de transição, isso significa que não há probabilidade de que um determinado estado se mova para o próximo (conforme definido pela matriz de transição). É assim que o BIC seleciona o melhor dos estados para um HMM. Entretanto, obter o número livre de parâmetros usando apenas o tamanho das matrizes inicial, de transição e de emissão é confuso

jebsam
fonte