传说中的Markov"不过如此”

  因为看一篇题为 Passive Measurement of Interference in WiFi Network with Application in Misbehavior Detection的文章,学习了马尔科夫模型。之前一直主观觉得马尔科夫模型太难,看过之后其实不过如此,恰恰相反,这个模型本身还简化了原本复杂的概率网络。《模式识别》对马尔科夫和隐马尔可夫介绍得非常详尽易懂。马尔科夫模型是一个非常useful的工具。

 

几个重要概念:

马尔可夫假设:在一个随着时间观测到的对象序列中,T时刻观测到某对象的概率只和T-1时观测到的对象有关系。

马尔科夫模型的表示:

  S:状态转换图中的状态集合

  A:状态转移概率矩阵,aij表示从状态i迁移到状态j的概率

  B:bij表示在状态i上观测到对象vj的概率

  p:初始状态上观测到各值的概率,是一个向量

马尔科夫的三个核心问题:

  估值问题(evaluation): 已知markov模型,和序列V,求观测到该序列的概率

  解码问题(decoding):已知模型和t时刻观测到的Vt,求最可能观测到的序列

  学习问题(Learning):已知状态集合S和观测序列V,求模型的各参数A,B,p

 

下面是evaluation代码(解码过程类似),前向算法

 

%% HMM model: A, B, initialstate, finalstate, 

%state transition propability

A=[1    0   0   0; 

   0.2  0.3 0.1 0.4;

   0.2  0.5 0.2 0.1;

   0.8  0.1 0.0 0.1

   ];

%b_jkv(t): v(t)'s occupation probability when the current state is w_j in time t

B=[1    0   0   0   0;

   0    0.3 0.4 0.1 0.2;

   0    0.1 0.1 0.7 0.1;

   0    0.5 0.2 0.1 0.2

    ];



final_state=1; %the final state

init_state=2; %the initial state





%% observed sequence

V=[2,4,3,1]; %visable sequence, v1 is the empty visable symbol.

% # of states

c=size(A);

% # of time slots

T=length(V);



%% HMM forward algorithm : for evaluation problem of HMM: give a HMM model, calculate P(V)

a=zeros(c, T);

for t=1:T

        for j=1:c

            if t==1

                a(j, t)=1*A(init_state, j)*B(j, V(t));

            else

                sum=0;

                for i=1:c

                    sum=sum+a(i, t-1)*A(i, j);

                end

                a(j, t) = B(j, V(t))*sum;

            end

        end

end

a(1, T)

学习问题:在MATLAB中集成了hmmestimate等函数,可以完成各种问题的解决。

 

summary: markov其实大致分为两部分,一部分是理解状态图中的概率迁移,以及markov假设;一部分是具体实现,由于markov问题的高复杂度,才出现了前向、后向算法,而那些算法的目的只是在多项式复杂度内进行求解。

 

 

你可能感兴趣的:(mark)