Je suis entrain d'entrainer des HMM implémentés en JaHMM avec des données de capteur d'un accéléromètre et un gyroscope obtenu à partir d'un portable Android.Classification Données du gyroscope HMM Jahmm Impossible d'apprendre le modèle
Le HMM entraîné avec les données de l'accéléromètre délivre des états finement appris, et a un taux d'erreur acceptable.
Les deux HMM de s'initialisés comme suit:
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);
sortie pour HMM formé avec les données de l'accéléromètre:
HMM avec 2 état (s)
Etat 0 Pi: ,5000000000000188 Aij: 0.5 0.5 Opdf: Distribution gaussienne multi-variée --- Moyenne: [0.036 -0.051 0.075]
État 1 Pi: ,5000000000000188 Aij: 0,5 0,5 OPDF: distribution gaussienne multivariée --- Mean: [0,036 -0,051 0,075]
Cependant, le HMM formé avec gyroscopique données peuvent ne semblent pas apprendre les états du HMM, quel que soit le nombre d'itérations d'entraînement que j'ai essayé (500 itérations). Le p. probabilités d'état acquises est juste NaN
sortie pour HMM formé avec les données gyroscopique:
HMM avec 2 état (s)
Etat 0 Pi: NaN Aij: ? Opdf: Distribution gaussienne multi-variée --- Moyenne: [? ? ? ]
État 1 Pi: NaN Aij:? ? Opdf: Distribution gaussienne multi-variée --- Moyenne: [? ? ? ]
Quelle pouvait être la cause de ce problème? Existe-t-il une étape de prétraitement ou de normalisation que je dois effectuer avant que les données soient utilisables dans le HMM? Le nombre d'états dans le HMM est-il insuffisant? J'ai essayé avec cinq états, mais cela donne le même résultat.
Un extrait du fichier de formation pour accéléromètre peut être vu ici: https://gist.github.com/Gudui/91d2c6b2452f1ea6a5c925b1eed9b40c
Un extrait du fichier de formation pour gyroscopique peut être vu ici: https://gist.github.com/Gudui/987cc1c1a7c0311a03988b818e7cbbcb
Pour les deux fichiers de formation, chaque ligne représentent une séquence d'entraînement.
La bibliothèque est disponible ici: https://github.com/tanjiti/jahmm
Merci à l'avance!
Je suis juste deviner en regardant vos données -. Mais 2 choses vous devriez essayer: (1) init les gaussiennes à des valeurs aléatoires (2) normaliser et blanchir vos données, c'est-à-dire s'assurer que les données ont zéro coordonnées moyennes et non corrélées (par exemple par PCA), puis recommencer hmm –
à propos de (1) Que voulez-vous dire? Je vais accepter cela comme une réponse, si vous expliquez.Essayé (2) et normalisé mes valeurs de gyroscope, qui ont donné des résultats acceptables.Merci! @ItamarKatz – Peter
Voir ma réponse à propos de (1) –