Многомерная скрытая марковская модель

Как я могу объединить несколько спектров излучения относительно одних и тех же марковских состояний?

Возьмем классический пример HMM:

% states
S = {sunny, rainy, foggy}

% discrete observations
x = {umbrella, no umbrella}

А что, если бы у меня было несколько последовательностей наблюдений. Например.:

% sequence 1
x1 = {umbrella, no umbrella}

% sequence 2
x2 = {wearing a coat, not wearing a coat}

Как я могу объединить эти две последовательности наблюдений в один HMM?

Примечание. Мне нужен способ объединить x1 и x2 так, чтобы их взаимозависимости также моделировались. Поэтому просто сказать x={x1 x2} было бы (IMO) не очень хорошим решением.


В частности, я хочу обучить HMM на основе hmmtrain от Matlab:

[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS)

Это позволяет мне вставить только один seq.

Теперь предположим, что у меня есть 5 различных спектров излучения, каждый из которых что-то говорит о состоянии ГММ. Как я могу справиться с этим многомерным случаем?


person Jean-Paul    schedule 30.10.2014    source источник


Ответы (2)


Как насчет того, чтобы взять декартово произведение возможных наблюдений из каждого набора. То есть ваша новая дискретная модель эмиссии будет:

  • зонт и пальто
  • зонт и без пальто
  • без зонта и в пальто
  • без зонта и без пальто
person Amro    schedule 30.10.2014
comment
очевидно, что это будет полиномиальное распределение, с которым может работать HMMTRAIN. - person Amro; 30.10.2014
comment
Но что, если у меня есть 20 последовательностей излучения и 4 разных состояния для каждой последовательности? Взятие декартова произведения разорвет проблему до огромного вычислительного пространства... - person Jean-Paul; 30.10.2014
comment
используемая вами терминология немного сбивает с толку... Те значения, которые я предложил выше, представляют собой набор возможных наблюдений. Последовательность – это просто серия наблюдений во времени... Другими словами, в любой момент времени t(i), если мы находимся в состоянии s(k), будет испускаться одно из приведенные выше дискретные наблюдения в соответствии с распределением вероятностей модели выбросов (представьте, что вы бросаете кости). Очевидно, вы не хотите иметь слишком много наблюдений или слишком много состояний, иначе вам потребуется много-много данных для успешного обучения модели HMM (проклятие размерности). - person Amro; 30.10.2014
comment
Позвольте мне сформулировать это еще раз: допустим, у меня есть одна переменная, которая выдает следующие дискретные наблюдения: {a, b, c}. У меня также есть другая переменная, которая выдает следующие дискретные наблюдения: {1, 2, 3}. Оба имеют информацию о состоянии DGP. И то и другое происходит одновременно (динамический HMM). Как я могу объединить последовательности выбросов обеих переменных для оценки состояния DGP? - person Jean-Paul; 30.10.2014
comment
что именно вы подразумеваете под переменной? Это латентное/скрытое состояние HMM? Позвольте мне спросить вас, одно и то же скрытое состояние HMM излучает наблюдение из {a,b,c} и наблюдение из {1,2,3} одновременно, или каждое из них создается разным набором состояний? - person Amro; 30.10.2014
comment
Каждое из них создается независимыми скрытыми состояниями, и каждое скрытое состояние раскрывает информацию (наблюдения) об общем состоянии всего процесса. Однако наблюдения могут быть соотнесены с общим состоянием всего процесса. Имеет ли это смысл? - person Jean-Paul; 30.10.2014
comment
Если я правильно понимаю, то в этом случае у вас будут две отдельные и независимые модели HMM, и не будет смысла их объединять... Также я не думаю, что вы конкретно определили скрытые состояния процесса. Возьмите пример погоды, который вы опубликовали; действие с зонтиком или без него, с пальто или без него — оба наблюдения раскрывают информацию об одних и тех же скрытых состояниях, а именно о погодных условиях. Вы видите проблему в своем предыдущем утверждении? - person Amro; 30.10.2014
comment
Да я вижу. Таким образом, две переменные do раскрывают информацию об одном и том же скрытом состоянии, но имеют разные DGP. Что бы это оставило меня? - person Jean-Paul; 30.10.2014
comment
извините, что означает DGP? - person Amro; 30.10.2014
comment
Процесс генерации данных - person Jean-Paul; 30.10.2014
comment
хорошо спасибо. Так в чем проблема с использованием декартова произведения? Вы бы моделировали состояния, которые генерируют кортежи наблюдений, чего вы и хотите, верно (наблюдая за разными вещами из одних и тех же скрытых состояний)? Если количество наблюдений становится слишком большим, то это проблема обработки данных, а не алгоритмическая — попытайтесь выбрать те, которые имеют смысл, и отбросьте менее релевантные. Например, с данными о погоде, скажем, вы также можете наблюдать, счастлив ли человек или грустен, хотя это дополнительная информация, она не так важна, как две другие (зонтик и пальто). - person Amro; 30.10.2014
comment
вы должны понимать, что наблюдение за дополнительным свидетельством не меняет основного процесса, оно просто раскрывает дополнительную информацию, чтобы вы могли сделать более точный вывод (уже было решено, каково было состояние погоды в тот момент времени, и тот факт, что человек был в пальто, не изменит погоду!). Таким образом, две переменные имеют один и тот же DGP... - person Amro; 30.10.2014
comment
Я думаю, что декартово произведение имеет смысл. Просто я не знаю, позволит ли это решение динамически влиять друг на друга, как в coupled HMM моделях. Или это так? (Из условия Маркова первого порядка?) - person Jean-Paul; 30.10.2014
comment
Знаете ли вы, как я могу сделать модель HMM в Matlab динамической, чтобы я мог скармливать ей кортежи наблюдений, сохраняя при этом зависимость от времени? - person Jean-Paul; 30.10.2014
comment
вам не нужно делать ничего особенного, просто объедините наблюдения в виде кортежей и назовите это новой вещью. Насколько известно MATLAB, он просто видит регулярные дискретные наблюдения. Таким образом, у вас будет новый набор наблюдений {O1,O2,O3,O4}, где каждый O_i обозначает комбинации, перечисленные в моем ответе выше. - person Amro; 30.10.2014
comment
Хорошо попробую! Большое спасибо за ваше время! - person Jean-Paul; 30.10.2014

Как насчет создания предпосылок для выбора особого ГММ? Вместо огромного HMM вы можете создать несколько маленьких HMM и выбрать только соответствующий HMM. Например: если (umbrella=true), то примените HMM_1, иначе примените HMM_2. Тогда у вас также будет меньше символов эмиссии в HMM. Приятный побочный эффект: вы экономите время на обучение и тестирование.

person Lia    schedule 07.08.2017