Можем ли мы проводить обучение под наблюдением через HMM? - PullRequest
0 голосов
/ 06 июня 2018

Мне кажется, я понимаю HMM по своей сути.С помощью HMM мы решаем оценку (вероятности испущенного seq), декодирование (наиболее вероятный скрытый seq) и проблему обучения (переходный процесс обучения и матрицу вероятности эмиссии из наблюдаемого набора последовательностей эмиссии).

Моя проблема связана с проблемой обучения.У меня есть последовательность эмиссии, но с этим у меня также есть связанные функции (имеется в виду значение скрытого состояния, но количество скрытых состояний неизвестно) для каждой последовательности.Как и в задаче обучения HMM, мы оцениваем скрытую последовательность (размер и матрицу вероятности), и для этого нам просто необходима последовательность излучения (размер скрытой последовательности можно оптимизировать, если она заранее не известна).

Я использую HMM library для своих вычислений.Конечно, это не вариант, который я хочу.

import numpy as np
import pandas as pd

from hmmlearn import hmm

filenames =  [f for f in os.listdir(dir_path) if '.csv' in f.lower()]
d1 = pd.read_csv(dir_path + filenames[0]).as_matrix() # Shape = [m, 3] => first two column is featute and last is the emission-state 
d2 = pd.read_csv(dir_path + filenames[1]).as_matrix() # Shape = [m, 3]


##
remodel = hmm.GaussianHMM(n_components=4, covariance_type="full", n_iter=100)

remodel.fit(d1[:, 0:2])  # Problem would have been solved if there was supervised option to pass the states as well 

pred_1 = remodel.predict(d1[:, 0:2])
true_1 = d1[:, -1] # Last column is state of the feature in 1, 2 column.

pred_2 = remodel.predict(d2[:, 0:2])
true_2 = d2[:, -1]

Есть ли способ провести контролируемое обучение в HMM, если да, то как?Если нет, то могу ли я решить свою проблему с помощью HMM?Если это возможно, то как?

1 Ответ

0 голосов
/ 30 марта 2019

hmmlearn не реализует контролируемое обучение ( hmmlearn # 109 ).

Библиотека seqlearn реализует контролируемые HMM, но, похоже, не реализует GMM.

Библиотека граната , однако, похоже, реализует контролируемые скрытые марковские модели с гауссовыми моделями смесей.Как то так:

import pomegranate as pg

X = ...
y = ...
distribution = pg.MultivariateGaussianDistribution
model = pg.HiddenMarkovModel.from_samples(distribution, n_components=5, X=X, labels=y, algorithm='labeled')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...