Как повысить точность распознавания эскизов HMM, используя большое отрицательное число ForwardBackwardScaledCalculator.InProbability()

Я подготовил модель hmm для эскиза "D", используя jahmm, модель инициализируется с помощью K-средних, как предложено на сайте jahmm, затем я использую алгоритм Baum-Welch. После обучения я тестирую последовательность наблюдений и получаю вероятность методом ForwardBackwardScaledCalculator.InProbability(), код которого;

... //training KMeansLearner<ObservationInteger> kml = new KMeansLearner<ObservationInteger>(20, new OpdfIntegerFactory(256), seqs); KullbackLeiblerDistanceCalculator klc = new KullbackLeiblerDistanceCalculator(); Hmm initHmm = kml.learn(); BaumWelchLearner bwl = new BaumWelchLearner(); Hmm<ObservationInteger> learntHmm = bwl.iterate(initHmm, seqs); for (int i = 0; i < 10; i++) { System.out.println("Distance at iteration : " + klc.distance(learntHmm, initHmm)); learntHmm = bwl.iterate(learntHmm, seqs); } return learntHmm //test ForwardBackwardScaledCalculator fbc = new ForwardBackwardScaledCalculator(testseqs,trainedHmm); System.out.println(fbc.lnProbability());

однако результат lnProbability() равен -196.25146 или даже меньше (-300), в чем здесь проблема? это потому, что HMm плохо обучен или из-за набора данных? Очень ценю любые предложения!

1 ответ

С тех пор, как вы спросили, прошло много времени, но поскольку я также использовал ту же библиотеку аналогичным образом, позвольте мне ответить на ваш вопрос.

Что касается Hmms, то вероятность распознавания зависит от размера набора данных, и чем больше набор данных, тем меньше вероятность распознавания. Вы можете попытаться установить порог распознавания в зависимости от размера набора данных или получить среднее значение вероятности распознавания при одинаковых точных представлениях вашей модели.

Другие вопросы по тегам