Кількість параметрів у моделі Маркова


12

Я хочу використовувати BIC для вибору моделі HMM:

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

Отже, як я рахую кількість параметрів у моделі HMM. Розглянемо просту 2-державну 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-by-d, де (n-рядки відповідають спостереженням; d-стовпці відповідають змінним (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;

Модель матиме таку кількість параметрів для 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; BIC = 1,668

1-мірні дані: nParam = 5; logLike = -24,8753; BIC = -34,7720

У мене дуже мало практики з HMM. Чи нормально мати HMM з (5000, 6000 і більше параметрами)?


у вас є виправдання для використання BIC? Це може дати жахливо неправильні результати, якщо не з відповідними припущеннями.
suncoolsu

@suncoolsu, Що ти маєш на увазі виправдання? Я знайшов кілька прикладів вибору K-кластерів (GMM-моделей) на основі балів BIC. Можливо, я наводив неправильний приклад, порівнюючи дві моделі з різними вхідними даними (розмірами).
Сергій

1
Я мав на увазі використання BIC лише в тому випадку, якщо виправдане припущення, що справжня модель знаходиться в просторі моделі . Це може бути виправдано у вашому випадку. Я згоден з вами, що люди використовують BIC як AIC, але обидва - це дуже різні речі!
suncoolsu

Привіт, це пізній коментар і сподіваюся, ви все ще активні, але який найкращий спосіб отримати кількість параметрів у моделі?
masfenix

Відповіді:


7

Питання полягає в тому, чи фіксуються деякі ваші параметри в матриці переходу та / або матриці випромінювання. Ваші обчислення (з числа параметрів) виглядають правильно. Якщо ви з якоїсь причини хочете, щоб модель 3 стану замість моделі 2 і вирішила заздалегідь, що переходи із стану 1 до 3 та 3 до 1 не дозволені (є 0 ймовірності), вам доведеться врахувати це під час обчислення кількість параметрів.


Чи потрібно враховувати параметр даних? Що робити, якщо size(data)буде 2х100
Сергій

@Sergey, я розглядав лише обчислення кількості параметрів у своїй відповіді. Для повноти я мав би розглянути, як обчислити "розмір" набору даних, оскільки вас цікавить BIC. Якщо чесно, я бачив лише виведення BIC для незалежних даних, але я здогадуюсь, що правильний "розмір" даних - це довжина ряду даних. Я не впевнений, що ви маєте на увазі під розміром 2x100. Якщо ви хочете прокоментувати це, ви повинні дати більш точний опис того, як дані кодуються як матриця 2 на 100.
NRH

Дякую за відповідь, я думаю, я розумію вплив розміру даних на BIC, будь ласка, подивіться на моє оновлення
Сергій

Чи потрібно зменшувати кількість параметрів у моделі HMM зліва-справа (Бакіс) (з трикутною матрицею переходу)? Чи нормально мати HMM (5000, 6000 і більше параметрів)?
Сергій

4

Коли ми обчислюємо кількість вільних параметрів у виборі моделі BIC, це означає, що це просто кількість нулів у матрицях переходу та випромінювання. Наприклад, коли в матриці переходу є нуль - це означає, що немає ймовірності, що певний стан перейде до наступного (як визначено перехідною матрицею). Ось як BIC вибирає оптимальні стани для HMM. Однак отримання вільних параметрів просто за допомогою розміру матриці intial, переходу та випромінювання заплутано

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.