2013-03-12 11 views
6

Ich bin neu im Hidden-Markov-Modell. Ich verstehe die Grundidee und habe einige eingebaute Matlab-HMM-Funktionen ausprobiert, um mir zu helfen, mehr zu verstehen.Hidden-Markov-Modell Mehrere Beobachtungswerte für jeden Zustand

Wenn ich eine Sequenz von Beobachtungen und entsprechenden Zuständen habe, z.

seq = 2  6  6  1  4  1  1  1  5  4 
states = 1  1  2  2  2  2  2  2  2  2 

und ich kann hmmestimate Funktion Übergangs- und Emissionswahrscheinlichkeit als Matrices berechnen:

[TRANS_EST, EMIS_EST] = hmmestimate(seq, states) 

TRANS_EST =

0.5000 0.5000 
    0 1.0000 

EMIS_EST =

 0 0.5000   0   0   0 0.5000 
0.5000   0   0 0.2500 0.1250 0.1250 

Im Beispiel ist die Beobachtung nur ein einzelner Wert.

Das Beispielbild unten beschreibt meine Situation. My situation Wenn ich Zustände habe: {Schlaf, Arbeit, Sport} und ich habe eine Reihe von Beobachtungen: {lightoff, Licht an, Herzfrequenz> 100 .....} Wenn ich die Zahl für jede Beobachtung verwende, in meiner Situation hat jeden Staat mehrere Beobachtungen zur gleichen Zeit,

seq = {2,3,5}  {6,1}  {2}  {2,3,6}  {4}  {1,2}  {1}  
states = 1    1  2   2   2  2  2  

ich keine Ahnung, wie dies in Matlab zu implementieren Übergang und Emissionswahrscheinlichkeitsmatrix zu erhalten. Ich bin ziemlich verloren, was soll ich im nächsten Schritt tun? Benütze ich den richtigen Ansatz?

Danke!

+0

Hallo Leon, ich arbeite an einem ähnlichen Problem. Haben Sie eine Lösung gefunden? Ich habe intensiv gesucht, konnte aber nicht einmal ein Papier oder ein Implementierungsbeispiel finden, um zu verifizieren, dass mit HMMs mehrere Beobachtungsvariablen möglich sind.Aus dem, was ich verstehe, ist es möglich, mehrere Beobachtungssequenzen (der gleichen Variablen) zu haben, aber ich bin nicht sicher, was die Situation ist, wenn die Sequenzen tatsächlich zu verschiedenen Variablen gehören. – Rhubarb

+0

Hallo Berkan, HMM ist nicht für dieses Problem geeignet. Ich bin in anderen Optionen suchen – leon

+0

Ich habe gerade eine Nachricht auf Ihrem Blog gesendet. Können Sie näher erläutern, warum Sie denken, dass HMM dafür nicht geeignet ist? Ich habe eine Woche lang darüber gelesen und bin, wie erwähnt, noch nicht ganz sicher zu diesem Thema. Ich nehme an, Sie haben das Problem länger als ich betrachtet, daher sind irgendwelche Hinweise oder Erklärungen (warum es nicht möglich ist) sehr willkommen. – Rhubarb

Antwort

3

Wenn Sie die verborgene Zustandssequenz kennen, dann ist die Schätzung der maximalen Wahrscheinlichkeit trivial: es sind die normalisierten empirischen Zählungen. Mit anderen Worten, zählen Sie die Übergänge und Emissionen hoch und teilen Sie dann die Elemente in jeder Reihe durch die Gesamtzählungen in dieser Reihe.

In dem Fall, in dem Sie mehrere Beobachtungsvariablen haben, kodieren Sie die Beobachtungen als Vektor, wobei jedes Element den Wert einer der Zufallsvariablen in diesem Zeitschritt angibt, z. '{lights = 1, computer = 0, Herzfrequenz> 100 = 1, location = 0}'. Der Schlüssel ist, dass Sie bei jedem Zeitschritt die gleiche Anzahl von Beobachtungen haben müssen, sonst wird es viel schwieriger.

+0

danke für deine Antwort, weiß ich noch nicht, wie man Vektor in Matlab hmmestimate Funktion setzt? – leon

+0

Sie können hmmestimate nicht dafür verwenden, aber Sie könnten ziemlich einfach eine for-Schleife schreiben, die über jeden Zustand schleift und die ausgehenden Übergänge und Emissionen zählt und dann normalisiert. – jerad

1

Ich denke, Sie haben zwei Möglichkeiten. 1) mehrere Beobachtungen in eine Zahl kodieren. Wenn Sie beispielsweise wissen, dass der maximal mögliche Wert für die Beobachtung N ist, und Sie in jedem Zustand höchstens K Beobachtungen haben, können Sie beliebige Kombinationen von Beobachtungen als Zahl zwischen 0 und N^K - 1 kodieren dabei gehen Sie davon aus, dass {2,3,6} und {2,3,5} nichts teilen, sie sind zwei völlig verschiedene Beobachtungen. 2) Oder Sie können mehrere Emissionsverteilungen für jeden Zustand haben. Ich habe die eingebauten Funktionen in Matlab für die HMM-Schätzung nicht verwendet, also habe ich keine Ahnung, ob dies unterstützt wird oder nicht. Aber die Idee ist, wenn Sie mehrere Emissionsverteilungen in einem Zustand haben, ist die Emissionswahrscheinlichkeit nur das Produkt von ihnen. Das ist es, was Jerad vorschlägt.