Я хочу использовать BIC для выбора модели HMM:
BIC = -2*logLike + num_of_params * log(num_of_data)
Итак, как мне посчитать количество параметров в модели HMM. Рассмотрим простой HMM с двумя состояниями, где у нас есть следующие данные:
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
Я так думаю:
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
Итак, в конце мы имеем:
BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319
Я нашел решение, где формула для num_of_params
(для простой модели Маркова) выглядит следующим образом:
Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix
Так что же является правильным решением? Должен ли я принимать во внимание некоторые нулевые вероятности в матрицах перехода или излучения?
==== Обновлено с 15.07.2011 ====
Я думаю, что могу дать некоторые разъяснения о влиянии измерения данных (на примере «Гауссово распределение смеси»)
X - матрица размером n на d, где (n строк соответствуют наблюдениям; d столбцов соответствуют переменным (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;
Модель будет иметь следующее количество параметров для 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
Если мы будем рассматривать X как одномерные данные , чем мы имеем num_of_data = (n*d)
, то и для двумерных данных мы имеем num_of_data = n
.
2-мерные данные: nParam = 11; logLike = -11,8197; БИК = 1.689
Одномерные данные: nParam = 5; logLike = -24,8753; БИК = -34,7720
У меня очень мало практики с HMM. Нормально ли иметь HMM с (5000, 6000 и более параметров)?
Ответы:
Вопрос в том, фиксированы ли для начала некоторые из ваших параметров в матрице переходов и / или матрице выбросов. Ваши расчеты (количества параметров) выглядят правильно. Если по какой-то причине вы хотите модель с 3 состояниями вместо модели с 2 состояниями и заранее решите, что переходы из состояний с 1 на 3 и с 3 на 1 недопустимы (имеют 0 вероятностей), вы должны будете принять это во внимание при вычислении количество параметров.
источник
size(data)
будет 2х100Когда мы вычисляем количество свободных параметров в BIC выбора модели, это означает, что это просто число нулей в матрицах перехода и излучения. Например, когда в матрице перехода есть ноль - это означает, что нет вероятности того, что определенное состояние переместится в следующее (как определено матрицей перехода). Вот как BIC выбирает оптимальные состояния для HMM. Однако получение количества свободных параметров только с использованием размера начальной, переходной и эмиссионной матриц сбивает с толку
источник