機(jī)器學(xué)習(xí)_隱馬爾可夫模型HMM

1. 馬爾可夫鏈

?馬爾可夫鏈?zhǔn)菨M(mǎn)足馬爾可夫性質(zhì)的隨機(jī)過(guò)程烟零。馬爾可夫性質(zhì)是無(wú)記憶性。
?也就是說(shuō)祝谚,這一時(shí)刻的狀態(tài),受且只受前一時(shí)刻的影響酣衷,而不受更往前時(shí)刻的狀態(tài)的影響交惯。我們下面說(shuō)的隱藏狀態(tài)序列就馬爾可夫鏈。

2. 隱馬爾可夫模型

?隱馬爾可夫模型(Hidden Markov Model穿仪,HMM)是統(tǒng)計(jì)模型席爽,用它處理的問(wèn)題一般有兩個(gè)特征:
?第一:?jiǎn)栴}是基于序列的,比如時(shí)間序列啊片,或者狀態(tài)序列只锻。
?第二:?jiǎn)栴}中有兩類(lèi)數(shù)據(jù),一類(lèi)序列數(shù)據(jù)是可以觀測(cè)到的紫谷,即觀測(cè)序列齐饮;而另一類(lèi)數(shù)據(jù)是不能觀測(cè)到的,即隱藏狀態(tài)序列笤昨,簡(jiǎn)稱(chēng)狀態(tài)序列祖驱,該序列是馬爾可夫鏈,由于該鏈不能直觀觀測(cè)瞒窒,所以叫“隱”馬爾可夫模型捺僻。
?簡(jiǎn)單地說(shuō),狀態(tài)序列前項(xiàng)能算出后項(xiàng)崇裁,但觀測(cè)不到匕坯,觀測(cè)序列前項(xiàng)算不出后項(xiàng),但能觀測(cè)到寇壳,觀測(cè)序列可由狀態(tài)序列算出。
?HMM模型的主要參數(shù)是λ=(A,B,Π)妻怎,數(shù)據(jù)的流程是通過(guò)初始狀態(tài)Pi生成第一個(gè)隱藏狀態(tài)h1壳炎,h1結(jié)合生成矩陣B生成觀測(cè)狀態(tài)o1,h1根據(jù)轉(zhuǎn)移矩陣A生成h2,h2和B再生成o2匿辩,以此類(lèi)推腰耙,生成一系列的觀測(cè)值。

HMM

3. 舉例

1) 問(wèn)題描述

假設(shè)我關(guān)注了一支股票铲球,它背后有主力高度控盤(pán)挺庞,我只能看到股票漲/跌(預(yù)測(cè)值:2種取值),看不到主力的操作:賣(mài)/不動(dòng)/買(mǎi)(隱藏值:3種取值)稼病。漲跌受主力操作影響大选侨,現(xiàn)在我知道一周之內(nèi)股票的漲跌,想推測(cè)這段時(shí)間主力的操作然走。假設(shè)我知道有以下信息:

i. 觀測(cè)序列O={o1,o2,...oT}
一周的漲跌O={1, 0, 1, 1, 1}

ii. HMM模型λ=(A,B,Π)

  • 隱藏狀態(tài)轉(zhuǎn)移矩陣A
    主力從前一個(gè)操作到后一操作的轉(zhuǎn)換概率A={{0.5, 0.3, 0.2},{0.2, 0.5, 0.3},{0.3, 0.2, 0.5}}
  • 隱藏狀態(tài)對(duì)觀測(cè)狀態(tài)的生成矩陣B(3種->2種)
    主力操作對(duì)價(jià)格的影響B(tài)={{0.6, 0.3, 0.1},{0.2, 0.3, 0.5}}
  • 隱藏狀態(tài)的初始概率分布Pi(Π)
    主力一開(kāi)始的操作的可能性Pi={0.7, 0.2, 0.1}

2) 代碼

import numpy as np
from hmmlearn import hmm

states = ["A", "B", "C"]
n_states = len(states)

observations = ["down","up"]
n_observations = len(observations)

p = np.array([0.7, 0.2, 0.1])
a = np.array([
  [0.5, 0.2, 0.3],
  [0.3, 0.5, 0.2],
  [0.2, 0.3, 0.5]
])
b = np.array([
  [0.6, 0.2],
  [0.3, 0.3],
  [0.1, 0.5]
])
o = np.array([[1, 0, 1, 1, 1]]).T

model = hmm.MultinomialHMM(n_components=n_states)
model.startprob_= p
model.transmat_= a
model.emissionprob_= b

logprob, h = model.decode(o, algorithm="viterbi")
print("The hidden h", ", ".join(map(lambda x: states[x], h)))

c) 分析

?這里我們使用了Python的馬爾可夫庫(kù)hmmlearn援制,可通過(guò)命令 $ pip install hmmlearn安裝(sklearn的hmm已停止更新,無(wú)法正常使用芍瑞,所以用了hmmlearn庫(kù))
?馬爾可夫模型λ=(A,B,Π)晨仑,A,B,Π是模型的參數(shù),此例中我們直接給出拆檬,并填充到模型中洪己,通過(guò)觀測(cè)值和模型的參數(shù),求取隱藏狀態(tài)竟贯。

4. HMM的具體算法

?第一:根據(jù)當(dāng)前的觀測(cè)序列求解其背后的狀態(tài)序列答捕,即示例中decode()函數(shù)(Viterbi方法)。
?第二:根據(jù)模型λ=(A,B,Π)澄耍,求當(dāng)前觀測(cè)序列O出現(xiàn)的概率(向前向后算法)
?第三:給出幾組觀測(cè)序列O噪珊,求模型λ=(A,B,Π)中的參數(shù)(Baum-Welch方法)。具體方法是隨機(jī)初始化模型參數(shù)A,B,Π齐莲;用樣本O計(jì)算尋找更合適的參數(shù)痢站;更新參數(shù),再用樣本擬合參數(shù)选酗,直至參數(shù)收斂阵难。

?在實(shí)際使用中,比如語(yǔ)音識(shí)別芒填,我們先用一些已有的觀測(cè)數(shù)據(jù)O呜叫,訓(xùn)練模型λ的參數(shù),然后用訓(xùn)練好的模型λ估計(jì)新的輸入數(shù)據(jù)O出現(xiàn)的概率殿衰。

?至此朱庆,我們介紹了HMM的核心操作及對(duì)應(yīng)算法,如果你對(duì)具體的Viterbi或者Baum-Welch算法的實(shí)現(xiàn)感興趣闷祥,推薦以下兩篇文章娱颊,一篇是算法公式及說(shuō)明,一篇是具體Python代碼實(shí)現(xiàn),建議對(duì)照著看:
http://www.cnblogs.com/hanahimi/p/4011765.html
http://www.cnblogs.com/pinard/p/6945257.html

5. 最大期望EM算法

?EM(Expectation Maximization)最大期望算法是十大數(shù)據(jù)挖掘經(jīng)典算法之一箱硕。之前一直沒(méi)見(jiàn)過(guò)EM的實(shí)現(xiàn)工具和應(yīng)用場(chǎng)景拴竹,直到看見(jiàn)HMM的具體算法。HMM的核心算法是通過(guò)觀測(cè)值計(jì)算模型參數(shù)剧罩,具體使用Baum-Welch算法栓拜,它是EM的具體實(shí)現(xiàn),下面來(lái)看看EM算法惠昔。
?假設(shè)條件是X幕与,結(jié)果是Y,條件能推出結(jié)果X->Y舰罚,但結(jié)果推不出條件纽门,現(xiàn)在手里有一些對(duì)結(jié)果Y的觀測(cè)值,想求X营罢,那么我們舉出X的所有可能性赏陵,再使用X->Y的公式求Y,看哪個(gè)X計(jì)算出的Y和當(dāng)前觀測(cè)最契合饲漾,就選哪個(gè)X蝙搔。這就是最大似然的原理。在數(shù)據(jù)多的情況下考传,窮舉因計(jì)算量太大而無(wú)法實(shí)現(xiàn)吃型,最大期望EM是通過(guò)迭代逼近方式求取最大似然。
?EM算法分為兩個(gè)步驟:E步驟是求在當(dāng)前參數(shù)值和樣本下的期望函數(shù)僚楞,M步驟利用期望函數(shù)調(diào)整模型中的估計(jì)值勤晚,循環(huán)執(zhí)行E和M直到參數(shù)收斂。

6. 隱馬爾可夫模型HMM與循環(huán)神經(jīng)網(wǎng)絡(luò)RNN&LSTM

?RNN是循環(huán)神經(jīng)網(wǎng)絡(luò)泉褐,LSTM是RNN的一種優(yōu)化算法赐写,近年來(lái),RNN在很多領(lǐng)域取代了HMM膜赃。下面我們來(lái)看看它們的異同挺邀。
?首先,RNN和HMM解決的都是基于序列的問(wèn)題跳座,也都有隱藏層的概念端铛,它們都通過(guò)隱藏層的狀態(tài)來(lái)生成可觀測(cè)狀態(tài)。

?從對(duì)比圖中可以看出疲眷,它們的數(shù)據(jù)流程很相似(Pi與U禾蚕,A與W,B與V對(duì)應(yīng))狂丝,調(diào)參數(shù)矩陣的過(guò)程都使用梯度方法(對(duì)各參數(shù)求偏導(dǎo))换淆,RNN利用誤差函數(shù)在梯度方向上調(diào)U,V,W(其中還涉及了激活函數(shù))虚倒,而HMM利用最大期望在梯度方向上調(diào)Pi,A,B(Baum-Welch算法),調(diào)參過(guò)程中也都用到類(lèi)似學(xué)習(xí)率的參數(shù)产舞。
?不同的是,RNN中使用激活函數(shù)(紅色方塊)讓該模型的表現(xiàn)力更強(qiáng)菠剩,以及LSTM方法修補(bǔ)了RNN中梯度消失的問(wèn)題易猫;相對(duì)來(lái)說(shuō)RNN框架也更加靈活。
?RNN和HMM不是完全不同的兩類(lèi)算法具壮,它們有很多相似之處准颓,我們也可以把RNN看成HMM的加強(qiáng)版。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棺妓,一起剝皮案震驚了整個(gè)濱河市攘已,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怜跑,老刑警劉巖样勃,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異性芬,居然都是意外死亡峡眶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)植锉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辫樱,“玉大人,你說(shuō)我怎么就攤上這事俊庇∈ㄊ睿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵辉饱,是天一觀的道長(zhǎng)搬男。 經(jīng)常有香客問(wèn)我,道長(zhǎng)鞋囊,這世上最難降的妖魔是什么止后? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮溜腐,結(jié)果婚禮上撩鹿,老公的妹妹穿的比我還像新娘。我一直安慰自己疯淫,他們只是感情好宪卿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著望众,像睡著了一般匪补。 火紅的嫁衣襯著肌膚如雪伞辛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天夯缺,我揣著相機(jī)與錄音蚤氏,去河邊找鬼。 笑死踊兜,一個(gè)胖子當(dāng)著我的面吹牛竿滨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捏境,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼于游,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了垫言?” 一聲冷哼從身側(cè)響起贰剥,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筷频,沒(méi)想到半個(gè)月后蚌成,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凛捏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年笑陈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葵袭。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涵妥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坡锡,到底是詐尸還是另有隱情蓬网,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布鹉勒,位于F島的核電站帆锋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏禽额。R本人自食惡果不足惜锯厢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脯倒。 院中可真熱鬧实辑,春花似錦、人聲如沸藻丢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悠反。三九已至残黑,卻和暖如春馍佑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梨水。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工拭荤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疫诽。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓穷劈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親踊沸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容