和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信科技

您的当前位置: 和记娱乐主页 > 通信科技 >

MLPack之HMM学习

发布日期:2019-12-28 09:15 来源:和记h88 发布人:和记娱乐 点击:

  这个开源的机器学习的库使用到了boost中的很多库,包括tokenizer(分词器);也用到了Armadillo也地方,这是一个基于c++语言开发的线性代数开发库,主要用于矩阵计算。

  其中 hmm_generate_main.cpp:随机的产生一个观测序列然后得到相应的隐藏的状态序列。 hmm_loglik_main.cpp:对于给定的观测序列计算其在给定的HMM参数下的loglikehood。 hmm_train_main.cpp:学习/训练HMM模型的参数,有两种方案,一种是有标记序列的监督式训练;一种是没有标记的非监督式训练,使用的Baum-Welch算法。 hm_viterbi_main.cpp:使用viterbi算法计算给定HMM模型参数和观测序列的情况下最有可能的隐藏状态序列。

  先给定观测序列矩阵dataSeq[seq],然后使用Estimate函数计算观测序列和隐藏状态序列的对数似然函数值,并累加到loglik中(判断算法是否结束使用);同时计算出前向和后向概率分布矩阵分别为forward和backward;stateProb表示在某一时刻t处于某个状态j的概率;scales表示比例因子。

  最终得到的transition即为状态转移矩阵,当然还要归一化和多次迭代。 而观测概率分布在哪里呢?

  emission就是要求的观测概率分布,即在这里求得不同状态state下数据的分布。 3、Viterbi:

  感觉在最终计算stateSeq(用于返回最优状态序列)时感觉不对,有两点:1、在计算出来prob之后就应该从prob中获得t时刻状态为j的最优状态序列;2、最终的stateSeq需要回溯才能够得到,因为第一遍计算的时候还无法确定哪一个状态才是最终的最优状态序列要经过的,所以应该计算出来最优的最后一个状态之后回溯才能得到最优序列。

      和记娱乐,和记h88,h88平台官网