維特比演算法(Viterbi Algorithm)
尋找最可能的隱藏狀態序列 (Finding most probable sequence of hidden states)
對於一個特殊的隱馬爾科夫模型(HMM)及一個相應的觀察序列,我們常常希望能找到生成此序列最可能的隱藏狀態序列。
之前的那個問題變轉,http://blog.csdn.net/jeiwt/article/details/8076019
假設連續觀察3天的海藻溼度為(Dry,Damp,Soggy),求這三天最可能的天氣情況。天氣只有三類(Sunny,Cloudy,Rainy),而且海藻溼度和天氣有一定的關係。
已知:
隱藏的狀態:Sunny,Cloudy, Rainy;海藻溼度有四類{Dry,Dryish, Damp,Soggy }
觀察狀態序列:{Dry, Damp, Soggy };
初始狀態序列:Sunny(0.63),Cloudy(0.17),Rainy(0.20);
狀態轉移矩陣:
sunny | cloudy | rainy |
---|---|---|
sunny | 0.5 | 0.375 |
cloudy | 0.25 | 0.125 |
rainy | 0.25 | 0.375 |
Cloudy(昨天)->Sunny(今天)的概率是0.25;
Sunny(昨天)->Rainy(今天)的概率是0.125.
- 混淆矩陣(海藻溼度與天氣的相關性):
Dry | Dryish | Damp | Soggy |
---|---|---|---|
Sunny | 0.6 | 0.2 | 0.15 |
cloudy | 0.25 | 0.25 | 0.25 |
Rainy | 0.05 | 0.10 | 0.35 |
由HMM可知,Day2的天氣僅取決於Day1;Day3的天氣又只取決於Day2的天氣。
Day1由於是初始狀態,我們分別求
P(Day1-Sunny)=0.63*0.6;
P(Day1-Cloudy)=0.17*0.25;
P(Day1-Rain)=0.20*0.05;
Choose max{ P(Day1-Sunny) , P(Day1-Cloudy),P(Day1-Rainy)}, 得到P(Day1-Sunny)最大,得出第1天Sunny的概率最大。
Day2的天氣又取決於Day1的天氣狀況,同時也受Day2觀察的海藻情況影響。
P(Day2-Sunny)= max{ P(Day1-Sunny)*0.5, P(Day1-Cloudy)*0.25, P(Day1-Rainy)*0.25} *0.15;
P(Day2-Cloudy)= max{ P(Day1-Sunny)*0.375, P(Day1-Cloudy)*0.125, P(Day1-Rainy)*0.625} *0.25;
P(Day2-Rainy)= max{ P(Day1-Sunny)*0.125, P(Day1-Cloudy)*0.625 , P(Day1-Rainy)*0.375} *0.35;
Choosemax{ P(Day2-Sunny) , P(Day2-Cloudy), P(Day2-Rainy)},得到P(Day2-Rainy)最大,得出第2天Rainy的概率最大。
故{Sunny,Rainy}是前兩天最大可能的天氣序列。
Day3的天氣又取決於Day2的天氣狀況,同時也受Day3觀察的海藻情況影響。
P(Day3-Sunny)= max{ P(Day2-Sunny)*0.5, P(Day2-Cloudy)*0.25, P(Day2-Rainy)*0.25} *0.05;
P(Day3-Cloudy)= max{ P(Day2-Sunny)*0.375, P(Day2-Cloudy)*0.125, P(Day2-Rainy)*0.625} *0.25;
P(Day3-Rainy)= max{ P(Day2-Sunny)*0.125, P(Day2-Cloudy)*0.625, P(Day2-Rainy)*0.375} *0. 05;
Choosemax{ P(Day3-Sunny) , P(Day3-Cloudy), P(Day3-Rainy)},得到 P(Day3-Rainy)最大,得出第3天Rainy的概率最大。
故{Sunny,Rainy,Rainy}是這三天最可能的天氣序列。
相關文章
- HMM-維特比演算法理解與實現(python)HMM維特比演算法Python
- Part 1.2 基於維特比演算法來優化上述流程維特比演算法優化
- 維特比演算法和隱馬爾可夫模型的解碼維特比演算法隱馬爾可夫模型
- Algorithm演算法Go演算法
- 條件隨機場CRF(三) 模型學習與維特比演算法解碼條件隨機場CRF模型維特比演算法
- 【Algorithm】全排列演算法Go演算法
- 演算法之路 - Way to Algorithm演算法Go
- (EM演算法)The EM Algorithm演算法Go
- 隱馬爾科夫模型HMM(四)維特比演算法解碼隱藏狀態序列馬爾科夫模型HMM維特比演算法
- 隱馬爾可夫模型的Viterbi解碼演算法隱馬爾可夫模型Viterbi演算法
- Java實現:拋開jieba等工具,寫HMM+維特比演算法進行詞性標註JavaJiebaHMM維特比演算法詞性標註
- 遺傳演算法 (Genetic Algorithm)演算法Go
- C++_STL—演算法Algorithm篇C++演算法Go
- Manacher's Algorithm 馬拉車演算法Go演算法
- 貪心演算法(貪婪演算法,greedy algorithm)演算法Go
- Algorithm-sort 排序演算法 pythonGo排序演算法Python
- 字串演算法(string_algorithm)字串演算法Go
- Algorithm-search 查詢演算法 pythonGo演算法Python
- 簡單的量子演算法(二):Simon's Algorithm演算法Go
- 聯邦平均演算法(Federated Averaging Algorithm,FedAvg)演算法Go
- Algorithm(4th) 1.5 union-find演算法Go演算法
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- 滑動視窗演算法(Sliding Window Algorithm)演算法Go
- algorithmGo
- [譯] Swift 演算法學院 – Z-Algorithm 字串搜尋Swift演算法Go字串
- 【Algorithm】連結串列演算法中啞結點作用Go演算法
- [譯] Swift 演算法學院 - Z-Algorithm 字串搜尋Swift演算法Go字串
- 優化演算法(五)—人工蜂群演算法Artificial Bee Colony Algorithm(ABC)優化演算法Go
- Kruskal algorithmGo
- SciTech-BigDataAIML-Algorithm: Github的Hello 演算法專案AIGoGithub演算法
- 機器學習演算法系列(十八)-隨機森林演算法(Random Forest Algorithm)機器學習演算法隨機森林randomRESTGo
- 《algorithm-note》演算法筆記中文版正式釋出!Go演算法筆記
- Expectation Maximization AlgorithmGo
- Branch and Bound AlgorithmGo
- Introduction to AlgorithmGo
- Z-algorithmGo
- 機器學習演算法系列(十九)-自適應增強演算法(Adaptive Boosting Algorithm)機器學習演算法APTGo
- 機器學習演算法系列(十七)-決策樹學習演算法(Decision Tree Learning Algorithm)機器學習演算法Go