如何使用jahmm,大负数ForwardBackwardScaledCalculator.InProbability()提高HMM草图识别的准确性

时间:2014-07-22 08:03:56

标签: java classification pattern-recognition hidden-markov-models sketching

我已经训练了一个用于草图的嗯模型" D"使用jahmm,该模型通过j -mm网站建议的K-means启动,然后我使用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 个答案:

答案 0 :(得分:2)

自从你问过这已经很久了,但由于我也以类似的方式使用了相同的库,让我试着回答你的问题。

与Hmms的关系是识别概率可靠于数据集的大小,数据集越大,识别的概率就越小。您可以尝试根据数据集大小设置识别阈值,或者获取模型相同精确表示的识别概率的平均值。