求解最可能的天氣

2018-02-24 16:09 更新

求解最可能的隱狀態(tài)序列是HMM的三個典型問題之一,通常用維特比算法解決。維特比算法就是求解HMM上的最短路徑(-log(prob),也即是最大概率)的算法。

稍微用中文講講思路,很明顯,第一天天晴還是下雨可以算出來:

  1. 定義V[時間][今天天氣] = 概率,注意今天天氣指的是,前幾天的天氣都確定下來了(概率最大)今天天氣是X的概率,這里的概率就是一個累乘的概率了。

  2. 因為第一天我的朋友去散步了,所以第一天下雨的概率V[第一天][下雨] = 初始概率[下雨] 發(fā)射概率[下雨][散步] = 0.6 0.1 = 0.06,同理可得V[第一天][天晴] = 0.24 。從直覺上來看,因為第一天朋友出門了,她一般喜歡在天晴的時候散步,所以第一天天晴的概率比較大,數(shù)字與直覺統(tǒng)一了。

  3. 從第二天開始,對于每種天氣Y,都有前一天天氣是X的概率 X轉(zhuǎn)移到Y(jié)的概率 Y天氣下朋友進行這天這種活動的概率。因為前一天天氣X有兩種可能,所以Y的概率有兩個,選取其中較大一個作為V[第二天][天氣Y]的概率,同時將今天的天氣加入到結(jié)果序列中

  4. 比較V[最后一天][下雨]和[最后一天][天晴]的概率,找出較大的哪一個對應(yīng)的序列,就是最終結(jié)果。

算法的代碼可以在github上看到,地址為:

https://github.com/hankcs/Viterbi

運行完成后根據(jù)Viterbi得到結(jié)果:

Sunny Rainy Rainy

Viterbi被廣泛應(yīng)用到分詞,詞性標(biāo)注等應(yīng)用場景。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號