最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

R語言中的隱馬爾可夫HMM模型實(shí)例|附代碼數(shù)據(jù)

2023-06-10 23:43 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=17592

最近我們被客戶要求撰寫關(guān)于隱馬爾可夫HMM模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。

最近,我們使用隱馬爾可夫模型開發(fā)了一種解決方案,并被要求解釋這個(gè)方案

HMM用于建模數(shù)據(jù)序列,無論是從連續(xù)概率分布還是從離散概率分布得出的。它們與狀態(tài)空間和高斯混合模型相關(guān),因?yàn)樗鼈冎荚诠烙?jì)引起觀測的狀態(tài)。狀態(tài)是未知或“隱藏”的,并且HMM試圖估計(jì)狀態(tài),類似于無監(jiān)督聚類過程。

例子

在介紹HMM背后的基本理論之前,這里有一個(gè)示例,它將幫助您理解核心概念。有兩個(gè)骰子和一罐軟糖。B擲骰子,如果總數(shù)大于4,他會(huì)拿幾顆軟糖再擲一次。如果總數(shù)等于2,則他拿幾把軟糖,然后將骰子交給A?,F(xiàn)在該輪到A擲骰子了。如果她的擲骰大于4,她會(huì)吃一些軟糖,但是她不喜歡黑色的其他顏色(兩極分化的看法),因此我們希望B會(huì)比A多。他們這樣做直到罐子空了。

現(xiàn)在假設(shè)A和B在不同的房間里,我們看不到誰在擲骰子。取而代之的是,我們只知道后來吃了多少軟糖。我們不知道顏色,僅是從罐子中取出的軟糖的最終數(shù)量。我們?cè)趺粗勒l擲骰子?HMM。

在此示例中,狀態(tài)是擲骰子的人,A或B。觀察結(jié)果是該回合中吃了多少軟糖。如果該值小于4,骰子的擲骰和通過骰子的條件就是轉(zhuǎn)移概率。由于我們組成了這個(gè)示例,我們可以準(zhǔn)確地計(jì)算出轉(zhuǎn)移概率,即1/12。沒有條件說轉(zhuǎn)移概率必須相同,例如A擲骰子2時(shí)可以將骰子移交給他,例如,概率為1/36。

模擬

首先,我們將模擬該示例。B平均要吃12顆軟糖,而A則需要4顆。

#?設(shè)置simulate?<-?function(N,?dice.val?=?6,?jbns,?switch.val?=?4){??#模擬變量????#可以只使用一個(gè)骰子樣本????#不同的機(jī)制,例如只丟1個(gè)骰子,或任何其他概率分布??????b<-?sample(1:dice.val,?N,?replace?=?T)?+?sample(1:dice.val,?N,?replace?=?T)????a?<-?sample(1:dice.val,?N,?replace?=?T)?+?sample(1:dice.val,?N,?replace?=?T)????bob.jbns?<-?rpois(N,?jbns[1])????alice.jbns?<-?rpois(N,?jbns[2])????#?狀態(tài)?????draws?<-?data.frame(state?=?rep(NA,?N),?obs?=?rep(NA,?N),?????#?返回結(jié)果????return(cbind(roll?=?1:N,?draws))#?模擬場景draws?<-?simulate(N,?jbns?=?c(12,?4),?switch.val?=?4)#?觀察結(jié)果ggplot(draws,?aes(x?=?roll,?y?=?obs))?+?geom_line()

如您所見,僅檢查一系列計(jì)數(shù)來確定誰擲骰子是困難的。我們將擬合HMM。由于我們正在處理計(jì)數(shù)數(shù)據(jù),因此觀察值是從泊松分布中得出的。

fit.hmm?<-?function(draws){??#?HMM???mod?<-?fit(obs?~?1,?data?=?draws,?nstates?=?2,?family?=?poisson()??#?通過估計(jì)后驗(yàn)來預(yù)測狀態(tài)??est.states?<-?posterior(fit.mod)??head(est.states)??#?結(jié)果???hmm.post.df?<-?melt(est.states,?measure.vars?=???#?輸出表格??print(table(draws[,c("state",?"est.state.labels")]))

##?iteration?0?logLik:?-346.2084?##?iteration?5?logLik:?-274.2033?##?converged?at?iteration?7?with?logLik:?-274.2033?##????????est.state.labels##?state???alice?bob##???a?????49???2##???b??????3??46

模型迅速收斂。使用后驗(yàn)概率,我們估計(jì)過程處于哪個(gè)狀態(tài),即誰擁有骰子,A或B。要具體回答該問題,我們需要更多地了解該過程。在這種情況下,我們知道A只喜歡黑軟糖。否則,我們只能說該過程處于狀態(tài)1或2。下圖顯示了HMM很好地?cái)M合了數(shù)據(jù)并估計(jì)了隱藏狀態(tài)。

#?繪圖輸出????g0?<-?(ggplot(model.output$draws,?aes(x?=?roll,?y?=?obs))?+?geom_line()?+????????theme(axis.ticks?=?element_blank(),?axis.title.y?=?element_blank()))?%>%?ggplotGrob????g1?<-?(ggplot(model.output$draws,?aes(x?=?roll,?y?=?state,?fill?=?state,?col?=?state))?+???????????g0$widths?<-?g1$widths????return(grid.arrange(g0,?g1plot.hmm.output(hmm1)

令人印象深刻的是,該模型擬合數(shù)據(jù)和濾除噪聲以估計(jì)狀態(tài)的良好程度。公平地說,可以通過忽略時(shí)間分量并使用EM算法來估計(jì)狀態(tài)。但是,由于我們知道數(shù)據(jù)形成一個(gè)序列,因?yàn)橛^察下一次發(fā)生的概率取決于前一個(gè)即\(P(X_t | X_ {t-1})\),其中\(zhòng)(X_t \ )是軟糖的數(shù)量。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

隱馬爾可夫模型(HMM)識(shí)別不斷變化的股市狀況股票指數(shù)預(yù)測實(shí)戰(zhàn)

左右滑動(dòng)查看更多

01

02

03

04

考慮到我們構(gòu)造的問題,這可能是一個(gè)相對(duì)簡單的案例。如果轉(zhuǎn)移概率大得多怎么辦?

?simulate(100,?jbns?=?c(12,?4),?switch.val?=?7)

##?iteration?0?logLik:?-354.2707?##?iteration?5?logLik:?-282.4679?##?iteration?10?logLik:?-282.3879?##?iteration?15?logLik:?-282.3764?##?iteration?20?logLik:?-282.3748?##?iteration?25?logLik:?-282.3745?##?converged?at?iteration?30?with?logLik:?-282.3745?##????????est.state.labels##?state???alice?bob##???alice????54???2##???bob???????5??39

plot(hmm2)

這有很多噪音數(shù)據(jù),但是HMM仍然做得很好。性能的提高部分歸因于我們對(duì)從罐中取出的軟糖數(shù)量的選擇。分布越明顯,模型就越容易拾取轉(zhuǎn)移。公平地講,我們可以計(jì)算中位數(shù),并將所有低于中位數(shù)的值都?xì)w為一個(gè)狀態(tài),而將所有高于中位數(shù)的值歸為另一狀態(tài),您可以從結(jié)果中看到它們做得很好。這是因?yàn)檗D(zhuǎn)移概率非常高,并且預(yù)計(jì)我們會(huì)從每個(gè)狀態(tài)觀察到相似數(shù)量的觀察結(jié)果。當(dāng)轉(zhuǎn)移概率不同時(shí),我們會(huì)看到HMM表現(xiàn)更好。

如果觀察結(jié)果來自相同的分布,即A和B吃了相同數(shù)量的軟糖怎么辦?

hmm3?<-?fit.hmm(draws)plot(hmm3)

不太好,但這是可以預(yù)期的。如果從中得出觀察結(jié)果的分布之間沒有差異,則可能也只有1個(gè)狀態(tài)。

實(shí)際如何估算狀態(tài)?

首先,狀態(tài)數(shù)量及其分布方式本質(zhì)上是未知的。利用對(duì)系統(tǒng)建模的知識(shí),用戶可以選擇合理數(shù)量的狀態(tài)。在我們的示例中,我們知道有兩種狀態(tài)使事情變得容易。可能知道確切的狀態(tài)數(shù),但這并不常見。再次通過系統(tǒng)知識(shí)來假設(shè)觀察結(jié)果通常是合理的,這通常是合理的。

從這里開始,使用 Baum-Welch算法?來估計(jì)參數(shù),這是EM算法的一種變體,它利用了觀測序列和Markov屬性。除了估計(jì)狀態(tài)的參數(shù)外,還需要估計(jì)轉(zhuǎn)移概率。Baum-Welch算法首先對(duì)數(shù)據(jù)進(jìn)行正向傳遞,然后進(jìn)行反向傳遞。然后更新狀態(tài)轉(zhuǎn)移概率。然后重復(fù)此過程,直到收斂為止。

在現(xiàn)實(shí)世界

在現(xiàn)實(shí)世界中,HMM通常用于

  • 股票市場預(yù)測,無論市場處于牛市還是熊市

  • 估計(jì)NLP中的詞性

  • 生物測序

  • 序列分類

僅舉幾例。只要有觀察序列,就可以使用HMM,這對(duì)于離散情況也適用。

點(diǎn)擊文末?“閱讀原文”

獲取全文完整資料。

本文選自《R語言中的隱馬爾可夫HMM模型實(shí)例》。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

python中使用馬爾可夫決策過程(MDP)動(dòng)態(tài)編程來解決最短路徑強(qiáng)化學(xué)習(xí)問題
隱馬爾可夫模型(HMM)識(shí)別不斷變化的股市狀況股票指數(shù)預(yù)測實(shí)戰(zhàn)
馬爾可夫Markov區(qū)制轉(zhuǎn)移模型分析基金利率
馬爾可夫區(qū)制轉(zhuǎn)移模型Markov regime switching
時(shí)變馬爾可夫區(qū)制轉(zhuǎn)換MRS自回歸模型分析經(jīng)濟(jì)時(shí)間序列
馬爾可夫轉(zhuǎn)換模型研究交通傷亡人數(shù)事故時(shí)間序列預(yù)測
如何實(shí)現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型、Metropolis算法?
Matlab用BUGS馬爾可夫區(qū)制轉(zhuǎn)換Markov switching隨機(jī)波動(dòng)率模型、序列蒙特卡羅SMC、M H采樣分析時(shí)間序列
R語言BUGS序列蒙特卡羅SMC、馬爾可夫轉(zhuǎn)換隨機(jī)波動(dòng)率SV模型、粒子濾波、Metropolis Hasting采樣時(shí)間序列分析
matlab用馬爾可夫鏈蒙特卡羅 (MCMC) 的Logistic邏輯回歸模型分析汽車實(shí)驗(yàn)數(shù)據(jù)
stata馬爾可夫Markov區(qū)制轉(zhuǎn)移模型分析基金利率
PYTHON用時(shí)變馬爾可夫區(qū)制轉(zhuǎn)換(MRS)自回歸模型分析經(jīng)濟(jì)時(shí)間序列
R語言使用馬爾可夫鏈對(duì)營銷中的渠道歸因建模
matlab實(shí)現(xiàn)MCMC的馬爾可夫轉(zhuǎn)換ARMA - GARCH模型估計(jì)
R語言隱馬爾可夫模型HMM識(shí)別不斷變化的股票市場條件
R語言中的隱馬爾可夫HMM模型實(shí)例
用機(jī)器學(xué)習(xí)識(shí)別不斷變化的股市狀況—隱馬爾科夫模型(HMM)
Matlab馬爾可夫鏈蒙特卡羅法(MCMC)估計(jì)隨機(jī)波動(dòng)率(SV,Stochastic Volatility) 模型
MATLAB中的馬爾可夫區(qū)制轉(zhuǎn)移(Markov regime switching)模型
Matlab馬爾可夫區(qū)制轉(zhuǎn)換動(dòng)態(tài)回歸模型估計(jì)GDP增長率
R語言馬爾可夫區(qū)制轉(zhuǎn)移模型Markov regime switching
stata馬爾可夫Markov區(qū)制轉(zhuǎn)移模型分析基金利率
R語言如何做馬爾可夫轉(zhuǎn)換模型markov switching model
R語言隱馬爾可夫模型HMM識(shí)別股市變化分析報(bào)告
R語言中實(shí)現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型


R語言中的隱馬爾可夫HMM模型實(shí)例|附代碼數(shù)據(jù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
平远县| 沙雅县| 昌平区| 剑川县| 丰宁| 来凤县| 繁峙县| 波密县| 康乐县| 扬中市| 剑川县| 遵义市| 西宁市| 阳泉市| 无锡市| 炉霍县| 涿鹿县| 通化市| 凉城县| 阿图什市| 凯里市| 桐乡市| 车致| 志丹县| 广宁县| 贡山| 西城区| 英德市| 建宁县| 兴国县| 汉川市| 商城县| 随州市| 喀喇| 湟源县| 海口市| 招远市| 柳河县| 凌云县| 徐汇区| 方山县|