Скрытая марковская модель как генерировать вероятности - PullRequest
0 голосов
/ 28 мая 2018

У меня есть много данных из измерений пульса \ сердечного ритма, поэтому данные находятся в длинных целочисленных списках, и у меня есть 8 состояний (хотя данные могут варьироваться до гораздо более 1–8 - это может быть от 50 до 140).Мне нужен алгоритм, который может принимать данные измерений и посредством обучения без контроля, чтобы дать мне возможность перейти из одного состояния в другое.Таким образом, я не знаю матрицу перехода и не знаю данных измерений для распределения различных состояний.все, что у меня есть, - это 8 состояний, векторы с измерениями сердечного ритма, и мне нужно получить вероятности перехода из одного состояния во все другие.Я не уверен, как я могу использовать HMM, чтобы сделать это, или это способ сделать это вообще.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вы слышали о TICC ?

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

  1. number_of_clusters: количество ожидаемых состояний в ваших данных.В этом случае у вас есть 8 наблюдаемых состояний.Это сделает настройку алгоритма намного более точной.
  2. beta: штраф за переключение.Вы можете контролировать, насколько легко / сложно алгоритму переключаться из одного состояния в другое.Это может быть просто, если вы хорошо знаете свою проблему или, если нет, подвергаетесь попыткам и ошибкам.

Я рекомендую взглянуть на реализацию TICC в Python.

Вот краткий пример:

fname = "bar_shaul_data.txt"
ticc = TICC(window_size=1, number_of_clusters=8, lambda_parameter=11e-2, beta=600, maxIters=100, threshold=2e-5,
            write_out_file=False, prefix_string="output_folder/", num_proc=1)
(cluster_assignment, cluster_MRFs) = ticc.fit(input_file=fname)

print(cluster_assignment)
np.savetxt('Results.txt', cluster_assignment, fmt='%d', delimiter=',')

Дополнительные документы доступны на README .

Отказ от ответственности: Я являюсь участникомбиблиотека.

0 голосов
/ 28 мая 2018

HMM может смоделировать практически любые данные временных рядов.Матрица перехода должна оцениваться по данным с использованием хорошо известного алгоритма Баума-Уэлча. Простое руководство из Википедии должно дать вам подсказки.

...