Ich trainiere HMMs in JaHMM mit Sensordaten von einem Beschleunigungsmesser und einem Gyroskop aus einem Android Wearable implementiert implementiert.Klassifizierung HMM Gyroskop Daten Jahmm Kann nicht lernen, Modell
Das mit Beschleunigungssensordaten trainierte HMM gibt fein gelernte Zustände aus und hat eine einigermaßen akzeptable Fehlerrate.
Sowohl HMMs wie folgt initialisiert:
Hmm<ObservationVector> hmm = new Hmm<>(2, new OpdfMultiGaussianFactory(3));
hmm.setPi(0, 0.5);
hmm.setPi(1, 0.5);
hmm.setOpdf(0, new OpdfMultiGaussian(
new double[]{0,0,0},
new double[][] {{0.1,0,0},
{0,0.1,0},
{0,0,0.1}
}));
hmm.setOpdf(1, new OpdfMultiGaussian(
new double[]{0,0,0},
new double[][] {{0.1,0,0},
{0,0.1,0},
{0,0,0.1}
}));
hmm.setAij(0, 0, 0.5);
hmm.setAij(0, 1, 0.5);
hmm.setAij(1, 0, 0.5);
hmm.setAij(1, 1, 0.5);
Ausgang für HMM mit Beschleunigungs-Daten trainiert:
HMM mit 2 Zustand (s)
Zustand 0 Pi: 0,5000000000000188 Aij: 0,5 0,5 Opdf: Multivariate Gaußsche Verteilung --- Mittelwert: [0,036 -0,051 0,075]
State 1 Pi: 0,5000000000000188 Aij: 0,5 0,5 Opdf: Multivariate Gaußschen Verteilung --- Mittelwert: [0,036 -0,051 0,075]
jedoch das HMM mit Gyroskop ausgebildeten Daten können Die Zustände des HMM scheinen nicht zu zählen, wie viele Trainings-Iterationen ich probiert habe (500 Iterationen). Die z.B. gelernt Zustandswahrscheinlichkeiten nur NaN
Ausgang für HMM mit Gyroskop Daten trainiert:
HMM mit 2 Zustand (e)
Zustand 0 Pi: NaN Aij:? ? Opdf: Multivariate Gaußverteilung - Mittelwert: [? ? ? ]
Zustand 1 Pi: NaN Aij:? ? Opdf: Multivariate Gaußverteilung - Mittelwert: [? ? ? ]
Was könnte die Ursache für dieses Verhalten sein? Gibt es einen Vorverarbeitungs- oder Normalisierungsschritt, den ich durchführen muss, bevor die Daten im HMM verwendbar sind? Ist die Anzahl der Zustände im HMM nicht ausreichend? Ich habe es mit fünf Zuständen versucht, aber es ergibt dasselbe Ergebnis. https://gist.github.com/Gudui/91d2c6b2452f1ea6a5c925b1eed9b40c
für Gyroskop Ein Ausschnitt aus der Trainingsdatei kann hier gesehen:
Ein Ausschnitt aus der Trainingsdatei für Beschleunigungssensor kann hier gesehen werden https://gist.github.com/Gudui/987cc1c1a7c0311a03988b818e7cbbcb
Für beide Trainingsdateien, wobei jede Zeile darstellen eine Trainingssequenz.
Die Bibliothek finden Sie hier: https://github.com/tanjiti/jahmm
Vielen Dank im Voraus!
ich auf Ihren Daten nur raten bin von der Suche -. Aber 2 Dinge Sie sollten versuchen: (1) Init die Gaussians auf zufällige Werte (2) normalisieren und weiß deine Daten, das heißt, stellen Sie sicher, dass die Daten null mittlere und unkorrelierte Koordinaten haben (zB durch PCA) Dann versuchen Sie wieder hmm –
Ich bin unsicher (1) Was meinst du? Ich werde das als Antwort akzeptieren, wenn du es erklärst. Versucht (2) und meine Gyroskopwerte normalisiert, was zu akzeptablen Ergebnissen führte. Danke! @ItamarKatz – Peter
Siehe meine Antwort zu (1) –