隱馬爾可夫模型
隱馬爾可夫模型
隱馬爾可夫模型(Hidden Markov Model,HMM)是統計模型,它用來描述一個含有隱含未知引數的馬爾可夫過程。其難點是從可觀察的引數中確定該過程的隱含引數。然後利用這些引數來作進一步的分析,例如模式識別。
在正常的馬爾可夫模型中,狀態對於觀察者來說是直接可見的。這樣狀態的轉換概率便是全部的引數。而在隱馬爾可夫模型中,狀態並不是直接可見的,但受狀態影響的某些變數則是可見的。每一個狀態在可能輸出的符號上都有一概率分佈。因此輸出符號的序列能夠透露出狀態序列的一些資訊。
馬爾可夫模型的演化
上邊的圖示強調了HMM的狀態變遷。有時,明確的表示出模型的演化也是有用的,我們用x(t1) 與x(t2)來表達不同時刻t1 和t2的狀態。
在這個圖中,每一個時間塊(x(t), y(t))都可以向前或向後延伸。通常,時間的起點被設定為t=0 或 t=1.
使用隱馬爾可夫模型
HMM有三個經典(canonical)問題:
- 已知模型引數,計算某一特定輸出序列的概率.通常使用forward演算法解決.
- 已知模型引數,尋找最可能的能產生某一特定輸出序列的隱含狀態的序列.通常使用Viterbi演算法解決.
- 已知輸出序列,尋找最可能的狀態轉移以及輸出概率.通常使用Baum-Welch演算法以及Reversed Viterbi演算法解決.
另外,最近的一些方法使用Junction tree演算法來解決這三個問題。
具體例項
假設你有一個住得很遠的朋友,他每天跟你打電話告訴你他那天作了什麼.你的朋友僅僅對三種活動感興趣:公園散步,購物以及清理房間.他選擇做什麼事情只憑天氣.你對於他所住的地方的天氣情況並不瞭解,但是你知道總的趨勢.在他告訴你每天所做的事情基礎上,你想要猜測他所在地的天氣情況.
你認為天氣的執行就像一個馬爾可夫鏈.其有兩個狀態 "雨"和"晴",但是你無法直接觀察它們,也就是說,它們對於你是隱藏的.每天,你的朋友有一定的概率進行下列活動:"散步", "購物", 或 "清理". 因為你朋友告訴你他的活動,所以這些活動就是你的觀察資料.這整個系統就是一個隱馬爾可夫模型HMM.
你知道這個地區的總的天氣趨勢,並且平時知道你朋友會做的事情.也就是說這個隱馬爾可夫模型的引數是已知的.你可以用程式語言(Python)寫下來:
states = ('Rainy', 'Sunny') bservations = ('walk', 'shop', 'clean') start_probability = {'Rainy': 0.6, 'Sunny': 0.4} transition_probability = { 'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3}, 'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6}, } emission_probability = { 'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5}, 'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1}, }
在這些程式碼中,start_probability代表了你對於你朋友第一次給你打電話時的天氣情況的不確定性(你知道的只是那個地方平均起來下雨多些).在這裡,這個特定的概率分佈並非平衡的,平衡概率應該接近(在給定變遷概率的情況下){'Rainy': 0.571, 'Sunny': 0.429}< transition_probability 表示基於馬爾可夫鏈模型的天氣變遷,在這個例子中,如果今天下雨,那麼明天天晴的概率只有30%.程式碼emission_probability 表示了你朋友每天作某件事的概率.如果下雨,有 50% 的概率他在清理房間;如果天晴,則有60%的概率他在外頭散步.
這個例子在Viterbi演算法頁上有更多的解釋。
隱馬爾可夫模型的應用
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12443821/viewspace-567535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HMM隱馬爾可夫模型HMM隱馬爾可夫模型
- 隱馬爾可夫模型詳解隱馬爾可夫模型
- 10_隱馬爾可夫模型隱馬爾可夫模型
- ML-隱馬爾可夫模型隱馬爾可夫模型
- 機器學習之隱馬爾可夫模型機器學習隱馬爾可夫模型
- 隱馬爾可夫模型 | 賽爾筆記隱馬爾可夫模型筆記
- 隱馬爾可夫模型(HMM)詳解隱馬爾可夫模型HMM
- 隱馬爾可夫模型及應用隱馬爾可夫模型
- 隱馬爾可夫模型(HMM)中文分詞隱馬爾可夫模型HMM中文分詞
- 【HMM】隱馬爾科夫模型HMM馬爾科夫模型
- 隱馬爾可夫模型(HMM)實現分詞隱馬爾可夫模型HMM分詞
- HMM隱馬爾可夫模型來龍去脈(二)HMM隱馬爾可夫模型
- NLP-隱馬爾可夫模型及使用例項隱馬爾可夫模型
- 隱馬爾科夫模型HMM(一)HMM模型馬爾科夫模型HMM
- 隱馬爾可夫模型的Viterbi解碼演算法隱馬爾可夫模型Viterbi演算法
- 馬爾可夫鏈模型(轉載)馬爾可夫模型
- 用簡單易懂的例子解釋隱馬爾可夫模型隱馬爾可夫模型
- 隱馬爾科夫模型(HMM)分詞研究馬爾科夫模型HMM分詞
- 維特比演算法和隱馬爾可夫模型的解碼維特比演算法隱馬爾可夫模型
- 用hmmlearn學習隱馬爾科夫模型HMMHMM馬爾科夫模型
- 使用馬爾可夫模型自動生成文章馬爾可夫模型
- 隱馬爾科夫模型前向後向演算法馬爾科夫模型演算法
- CVPR 2021 | 時間序列疾病預測的因果隱馬爾可夫模型隱馬爾可夫模型
- 【機器學習】--隱含馬爾科夫模型從初識到應用機器學習馬爾科夫模型
- 理解馬爾可夫決策過程馬爾可夫
- 從語言建模到隱馬爾可夫模型:一文詳述計算語言學隱馬爾可夫模型
- 一個隱馬爾科夫模型的應用例項:中文分詞馬爾科夫模型中文分詞
- 隱馬爾科夫模型python實現簡單拼音輸入法馬爾科夫模型Python
- 隱馬爾科夫模型HMM(三)鮑姆-韋爾奇演算法求解HMM引數馬爾科夫模型HMM演算法
- 機器學習知識點(十)馬爾可夫鏈機器學習馬爾可夫
- 隱馬爾科夫模型HMM(四)維特比演算法解碼隱藏狀態序列馬爾科夫模型HMM維特比演算法
- 在 Swift 中使用馬爾可夫鏈生成文字Swift馬爾可夫
- 「馬爾可夫決策過程」學習筆記馬爾可夫筆記
- 隱馬爾科夫模型HMM(二)前向後向演算法評估觀察序列概率馬爾科夫模型HMM演算法
- AI產品經理必修:揭開演算法的面紗(隱含馬爾可夫)AI演算法馬爾可夫
- MCMC(二)馬爾科夫鏈馬爾科夫
- 圖˙譜˙馬爾可夫過程˙聚類結構----by林達華馬爾可夫聚類
- 馬爾可夫鏈你知道多少?Python視覺化解析MCMC馬爾可夫Python視覺化