Как я могу обучить HMM для классификации?


12

Итак, я понимаю, что когда вы готовите HMM для классификации, стандартный подход:

  1. Разделите ваши наборы данных на наборы данных для каждого класса
  2. Тренируйте один HMM в классе
  3. На тестовом наборе сравните вероятность каждой модели для классификации каждого окна

Но как мне тренировать HMM в каждом классе? Должен ли я просто объединить данные, относящиеся к одному классу вместе? Но разве данные временного ряда не должны быть последовательными - и если я сделаю это, то скажу, что некоторые точки данных являются последовательными, когда их нет?

Чтобы быть более конкретным, у меня есть некоторые данные ЭЭГ, которые представляют собой матрицу 96xT, где у меня есть 96 векторов признаков, которые представляют собой спектральные плотности мощности разных частот из разных каналов, а T - это длительность сигнала (при некоторой частоте дискретизации).

Это можно разделить на окна, которые я знаю из экспериментального протокола (данные помечены), и поэтому я могу собрать наборы из 96 * t матриц для каждого класса. Где t меньше T и обозначает размер каждого окна.

Как мне затем обучить HMM на этих данных? Если это помогает, я пытаюсь использовать инструментарий pmtk3, но я открыт для использования чего-то действительно - он просто должен иметь возможность иметь дело с реальными наблюдениями, поскольку спектральные плотности мощности непрерывны, а не дискретны (стандартный набор инструментов MATLAB может иметь дело только с с дискретными наблюдениями).

Цель состоит в том, чтобы иметь возможность классифицировать окна данных ЭЭГ для данного психического состояния, обучаясь на помеченных данных. Это проблема интерфейса мозг-компьютер с использованием данных Берлинского конкурса BCI .


1
Делает эту страницу костюм , что вам нужно?
merours

Кажется, я попробую, чтобы убедиться. Это определенно учитывает гауссову и смесь гауссовых моделей, а не только многочлены. И кажется, что вы можете глобально обучить модель на нескольких наблюдениях, так что это выглядит хорошо. В любом случае, я хотел изучить Python правильно, так как он имеет гораздо более широкое применение. Спасибо :)
Alex McMurray

Ответы:


9

T

Вы упомянули на Reddit, что вы не решались назначить одно состояние для каждого класса. Вы пробовали это? Это может работать не так плохо, как вы думаете. Задача оценки также значительно легче в этом случае. Оценить вероятности перехода легко, просто посчитайте по существу. Более того, вы можете просто подобрать вероятности выбросов для каждого состояния на основе данных наблюдений и соответствующего класса, игнорируя временные аспекты.

KNN×Kskik=1,,Ki=1,Ntkt

Наконец, вы можете переключиться на дискриминационную модель, такую ​​как условное случайное поле. Дискриминирующая модель позволит вам легко включать более сложные функции и более непосредственно решать проблему (оценку условных плотностей). Это, наверное, то, что я попробую в первую очередь.


Наблюдаемые значения являются непрерывными, поэтому я бы подошел к гауссовскому или GMM. Как обсуждалось в Reddit, это ограничивает возможности модели. Я использую эту модель, чтобы увидеть, как временной аспект влияет на точность классификации по сравнению со статическими моделями. Я знаю, что дискриминационные модели могли бы быть лучше для классификации и читали фрагменты тезиса Мерфи. Это кажется интересным, но мой профессор порекомендовал мне HMM (это открытый проект), поэтому я попробую это. Я хочу больше работать с сигналами ЭЭГ / МЭГ в будущем, поэтому в какой-то момент я попробую другие методы. :)
Алекс МакМюррей

1
В конце я использовал sklearn и его поддержку для нескольких наблюдений. Казалось, работает правильно. Я должен покопаться в коде и посмотреть, как он на самом деле справляется с этим.
Алекс МакМюррэй,

1
Алекс, не могли бы вы дать ссылку или пример того, что вы называете "sklearn и его поддержка нескольких наблюдений"? Я имел дело с этой проблемой (и связанной с ней проблемой, как «сказать» НММ, что множественные наблюдения принадлежат одному ярлыку класса) уже много лет, и мне очень хотелось бы узнать, как вы к ним относились.
Рубенулис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.