zoukankan      html  css  js  c++  java
  • 传说中的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问题的高复杂度,才出现了前向、后向算法,而那些算法的目的只是在多项式复杂度内进行求解。

  • 相关阅读:
    记一则玄乎奇玄的ADG误删自救事件
    ORACLE 日常信息查询sql
    Linux脚本判断磁盘容量
    postgresql数据库创建触发器记录表修改时间
    centos7关闭防火墙
    centos7 安装mysql5.7(二进制tar包方式)
    Oracle11G RMAN-06214: Datafile Copy /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_cpbd.f
    SQLPlus中set命令
    oradehub命令
    记一报错解决:ORA-00845: MEMORY_TARGET not supported on this system
  • 原文地址:https://www.cnblogs.com/zhchngzng/p/3384282.html
Copyright © 2011-2022 走看看