貝葉斯隱馬爾可夫模型是一種用於分割連續多變量數據的機率模型。該模型將數據解釋爲一系列隱藏狀態生成。每一個狀態都是重尾分佈的有限混合,具備特定於狀態的混合比例和共享的位置/分散參數。算法
該模型中的全部參數都配備有共軛先驗分佈,並經過變化的貝葉斯(vB)推理算法學習,其本質上與指望最大化類似。該算法對異常值具備魯棒性,而且能夠接受缺失值。學習
本文從未知的BRHMM生成一組數據序列 參數,並僅從這些數據中估算出 生成它們的模型。 結果繪製爲 時間序列 spa
NumState=2; NumSym=3; NumFeat=5;
NumSeq=2; NumPoint=100; NumMiss=20;
EmissParam=1/5; LocParam=2; DispParam=5;
NumDeg=5; NumObs=1000;
fprintf('\n') fprintf('Sampling data ... ')
[Trans,Emiss,Loc,Disp]=GenParam(NumState,NumSym,NumFeat,... TransParam,EmissParam,LocParam,DispParam);
Obj= bhnn(NumState,NumSym,NumFeat);
Obj.TransWeight=Trans; Obj.TransStren(:)=NumObs; Obj.EmissWeight=Emiss; Obj.EmissStren(:)=NumObs; Obj.CompLoc=Loc; Obj.CompScale(:)=NumObs; Obj.CompDisp=Disp; Obj.CompPrec(:)=max(NumObs,NumFeat);
fprintf('Done\n') fprintf('Estimating model ... ')
Obj=BHMM(NumState,NumSym,NumFeat);
Obj.TransWeight=Trans; Obj.TransStren(:)=NumObs;
% 更新狀態 fprintf('Done\n') fprintf('\n') end