숨겨진 마코프 모델 (해독 문제)을 사용하여 숨겨진 상태를 예측하고 싶습니다. 데이터는 범주 적입니다. 숨겨진 상태에는 Hungry, Rest, Exercise 및 Movie가 포함됩니다. 관측 세트에는 음식, 집, 야외 & 레크리에이션 및 예술 & 엔터테인먼트가 포함됩니다. 내 프로그램은 관찰 시퀀스 (Baum-Welch 알고리즘)를 기반으로 HMM을 처음으로 훈련합니다. 그런 다음 숨겨진 상태 시퀀스를 예측하기 위해 디코딩 (Viterbi 알고리즘)을 수행합니다.hmmlearn (Hidden Markov Model)에서 해독 한 후 숨겨진 상태를 해당 카테고리로 매핑하는 방법은 무엇입니까?
제 질문은 어떻게 결과 (음수가 아닌 정수)를 Hungry 또는 Rest와 같은 해당 범주에 매핑 할 수 있는지입니다. 학습 알고리즘의 비 결정적 속성으로 인해 동일한 데이터의 모든 학습마다 매개 변수가 다릅니다. 따라서 숨겨진 상태 시퀀스는 다음 코드와 같이 맵을 수행 할 때마다 다릅니다.
from __future__ import division
import numpy as np
from hmmlearn import hmm
states = ["Hungry", "Rest", "Exercise", "Movie"]
n_states = len(states)
observations = ["Food", "Home", "Outdoor & Recreation", "Arts & Entertainment"]
# The number in this sequence is the index of observation
category_sequence = [1, 0, 1, 2, 1, 3, 1]
Location = np.array([category_sequence]).T
model = hmm.MultinomialHMM(n_components=n_states).fit(Location)
logprob, result = model.decode(Location)
print "Category:", ", ".join(map(lambda x: observations[x], Location.T[0]))
print "Intent:", ", ".join(map(lambda x: states[x], result))
안녕하세요. Sergei 님, 여러분의 의견을 듣기 좋습니다. 첫 번째로는 hmmlearn 모듈에서 반 감독 방식으로 어떻게 할 수 있는지에 대해 약간 혼란 스럽습니다. 함수 적합을 호출하면 입력은 관측 값입니다. 그것에 대해 더 자세히 말해 줄 수 있습니까? 감사. – Isaiah
'hmmlearn'은 현재이 작업을 자동으로 수행 할 방법이 없습니다. 왜냐하면 HMM을 사용하는 모든 문제는 감독되지 않았기 때문에 (즉, 레이블 데이터가 전혀 사용 가능하지 않음) 두 번째 접근법이 필요하기 때문입니다. 어쨌든, 나는 대답을 업데이트했다.'guess_labels'의 출력이 당신의 데이터에 대해 어떤 의미인지를 알려주기 바란다. –
Sergei에게 감사드립니다. 데이터를 전송하기 위해 LSTM으로 전환 했으므로 괜찮습니다. – Isaiah