数学建模社区-数学中国

标题: 关于马尔科夫的那点事(详细介绍马尔科夫模型、马尔科夫链) [打印本页]

作者: 1440359316    时间: 2021-10-12 15:09
标题: 关于马尔科夫的那点事(详细介绍马尔科夫模型、马尔科夫链)
前言:我发现网上很多博客在讲马尔科夫相关的知识点的时候, 总是讲的不是很清楚,有的纯粹只关注理论,看不太懂,有的一上来就搞几个算例,更是一片懵逼,有的又将一些概念一会儿换一个说法,一会儿是马尔科夫过程,一会儿是马尔科夫模型,一会儿是马尔科夫链,傻傻分不清楚,也不好理解,决定自己抽点时间,好好写一下,会详细介绍马尔科夫模型、马尔科夫链、隐马尔可夫模型、条件随机场等相关的概念和案例,本文为第一篇。文中的理解方式是按照自己的理解方式来叙述的,不适合于每个人。/ e* ~. J8 p" {, Q

* q/ z1 _/ G9 ]( d一、马尔科夫模型7 E. Q7 k% ~. ]6 z$ J5 w! U
1.1 马尔可夫过程$ c  Z" J% d, Z" \, T
( `3 L2 l7 P# l9 E' @: [  d
       马尔可夫过程(Markov process)是一类随机过程。由俄国数学家A.A.马尔可夫于1907年提出。该过程具有如下特性:在已知目前状态(现在)的条件下,它未来的演变(将来)不依赖于它以往的演变 (过去 )。例如森林中动物头数的变化构成——马尔可夫过程。在现实世界中,有很多过程都是马尔可夫过程,如液体中微粒所作的布朗运动、传染病受感染的人数、车站的候车人数等,都可视为马尔可夫过程。(这里虽然我也不清楚这些现象到底是不是,姑且就认为是吧!)
( ^7 M: Y0 L. u- ?' {0 Y& I$ n# y9 G5 e. p
马尔科夫过程中最核心的几个概念:过去,现在,将来。其中最核心的在于“现在”如何理解。4 ]2 @" K, I7 l, X

; Q0 J- S$ q0 C5 g# I4 \" ]& K在马尔可夫性的定义中,"现在"是指固定的时刻,但实际问题中常需把马尔可夫性中的“现在”这个时刻概念推广为停时(见随机过程)。例如考察从圆心出发的平面上的布朗运动,如果要研究首次到达圆周的时刻 τ以前的事件和以后的事件的条件独立性,这里τ为停时,并且认为τ是“现在”。如果把“现在”推广为停时情形的“现在”,在已知“现在”的条件下,“将来”与“过去”无关,这种特性就叫强马尔可夫性。具有这种性质的马尔可夫过程叫强马尔可夫过程。在相当一段时间内,不少人认为马尔可夫过程必然是强马尔可夫过程。首次提出对强马尔可夫性需要严格证明的是J.L.杜布。直到1956年,才有人找到马尔可夫过程不是强马尔可夫过程的例子。马尔可夫过程理论的进一步发展表明,强马尔可夫过程才是马尔可夫过程真正研究的对象。
5 z* f, M; h" E. l  M
5 `+ x& T1 h. y- i$ ~; M" G(这段话实在是太过于抽象了,不好理解,心里有数就行,因为这里的过去、现在、将来和我们生活中是有所差别的,不太好理解!)
, |8 x- x4 B2 r" a# ^2 F: X" g: C3 P3 r- u' ]/ ^
所以:一个马尔科夫过程就是指过程中的每个状态的转移只依赖于之前的 n个状态,这个过程被称为 n阶马尔科夫模型,其中 n是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态,这也是后面很多模型的讨论基础,很多时候马尔科夫链、隐马尔可夫模型都是只讨论一阶模型,甚至很多文章就将一阶模型称之为马尔科夫模型,现在我们知道一阶只是一种特例而已了。) u/ o1 {; F' @& u; g+ w

  c& p5 A& o  n- g对于一阶马尔科夫模型,则有:
6 U% Y  n6 r! E' r2 B5 A  C; V. Z4 `6 T
如果第 i 时刻上的取值依赖于且仅依赖于第 i−1 时刻的取值,即8 V5 v8 n/ U, t  E9 X) ^3 X

% S! |4 }; Z7 w1 B 马1.png
+ A" `+ e+ Z+ ?0 B; p& C! `  K; t* h4 N6 Z5 _# {- k1 X
​ 从这个式子可以看出,xi 仅仅与 xi-1有关,二跟他前面的都没有关系了,这就是一阶过程。
# Y- i0 f8 R1 M- e* F3 w& p; ^/ B" j) x9 g6 Y
: S' V+ ^" O# i1 q8 B9 E) p; ^1 N
总结:马尔科夫过程指的是一个状态不断演变的过程,对其进行建模后称之为马尔科夫模型,在一定程度上,马尔科夫过程和马尔科夫链可以打等号的。9 J+ U5 b3 O3 e- r* N
4 z" Y3 \' C$ e9 S5 K. E: v
1.2 马尔科夫性(无后效型)
& ?' }8 n% _* n  M" s' A% c5 c# s; Y8 q7 y
在马尔科夫过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未来状态)是无关的。这种性质叫做无后效性。简单地说就是将来与过去无关,值与现在有关,不断向前形成这样一个过程。& @8 s& m: C% ^2 |6 s0 Q

; k! y9 {& `) L' t0 Y( K1.3 马尔可夫链
( a1 S9 d9 B8 G0 B6 G# a/ X
' h& V- n+ t+ {# M时间和状态都是离散的马尔可夫过程称为马尔可夫链,简记为Xn=X(n),n=0,1,2…马尔可夫链是随机变量X1,X2,X3…的一个数列。6 m% b( L  K& C+ C: O

& i# Y* a. n2 X这种离散的情况其实草是我们所讨论的重点,很多时候我们就直接说这样的离散情况就是一个马尔科夫模型。
- T1 s" y+ g% j$ ^9 T0 T; {! }  H+ S9 X$ B' r3 Y
(1)关键概念——状态空间! q6 l8 a% c  H* [; \
1 }2 H/ p+ @9 V2 `, q' R, p
马尔可夫链是随机变量X1,X2,X3…Xn所组成的一个数列,每一个变量Xi 都有几种不同的可能取值,即他们所有可能取值的集合,被称为“状态空间”,而Xn的值则是在时间n的状态。2 l* n' t9 W- S5 q( e

9 r2 {5 v/ ?: N! d' r2 i# x4 y(2)关键概念——转移概率(Transition Probability)! K+ D/ h0 |0 p& R+ E- i

" \' `  H! R& v- x马尔可夫链可以用条件概率模型来描述。我们把在前一时刻某取值下当前时刻取值的条件概率称作转移概率。7 |9 v1 ~7 _$ w8 S* x
, D9 Q" \6 T. q
马2.png ) O; F3 p' t. @: Z( o
  K4 P) q9 z9 A2 c
上面是一个条件概率,表示在前一个状态为s的条件下,当前状态为t的概率是多少。
2 B5 x: L7 x) b, J6 V* u! V9 G+ e
; e4 f1 |7 B6 j- p8 [/ j8 \(3)关键概念——转移概率矩阵
1 ~1 h1 B3 |  h1 @( G8 `* P
. b  V5 l3 |# ^, ~很明显,由于在每一个不同的时刻状态不止一种,所以由前一个时刻的状态转移到当前的某一个状态有几种情况,那么所有的条件概率会组成一个矩阵,这个矩阵就称之为“转移概率矩阵”。比如每一个时刻的状态有n中,前一时刻的每一种状态都有可能转移到当前时刻的任意一种状态,所以一共有n*n种情况,组织成一个矩阵形式如下:
- E& J* }: g# f. F2 m3 F 马3.png ) ?. U9 e4 D2 n# s9 o; J
: L4 {8 c: _2 ^

! Y0 F( T, i% i1.4 马尔可夫模型的应用
1 {; }0 \& x8 l5 P; U/ J5 q9 T1 S: \8 Q9 T7 i
      马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法、序列分类等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的统计工具。到目前为止,它一直被认为是实现快速精确的语音识别系统的最成功的方法之一。) k5 I! e, X( E: V6 [

# I2 N7 ]1 G7 H/ _/ w二、马尔科夫模型的案例之一——天气预报
5 q" R# O1 ?# V, U0 G* ~, `; f下面是一个马尔科夫模型在天气预测方面的简单例子。如果第一天是雨天,第二天还是雨天的概率是0.8,是晴天的概率是0.2;如果第一天是晴天,第二天还是晴天的概率是0.6,是雨天的概率是0.4。问:如果第一天下雨了,第二天仍然是雨天的概率是多少?,第十天是晴天的概率是多少?;经过很长一段时间后雨天、晴天的概率分别是多少?
+ q$ ^$ W' u3 e/ L  g0 o& w' y2 k/ u1 U! n9 X' }
首先构建转移概率矩阵,由于这里每一天的状态就是晴天或者是下雨两种情况,所以矩阵是2x2的,如下:
0 v# O( X1 E3 v# W0 x4 ^; o5 T& B
  u; T3 E( X5 h 马4.png
" {& p- Y' u7 R, \1 J# [# n! S注意:每列和为1,分别对雨天、晴天,这样构建出来的就是转移概率矩阵了。如下:
7 I7 r( \' H% o) L! m$ ?9 o* A' Z7 `1 t1 V& ?$ \+ S' y3 U
马5.png
; R( F2 g/ c- s+ ~) W# E1 b" S" g6 O! W9 Y. L4 A/ R3 G
假设初始状态第一天是雨天,我们记为
! ~$ T5 f3 d8 p1 h: B7 V7 l7 s. c7 L& J6 N
马6.png 8 Z+ U7 t& M' \: V

: {" ?: i5 G' a( H& v这里【1,0】分别对于雨天,晴天。
0 I2 g$ m% E4 [; T: u! \$ O& Z
. }% V. s1 B! l, ]3 }0 r7 X6 ]6 {初始条件:第一天是雨天,第二天仍然是雨天(记为P1)的概率为:! Y2 q( V9 M% a
2 V- n4 R7 N8 |5 u' F+ {3 a
P1 = AxP0
+ k; {2 Z9 X! u) g' ]) ^4 a) `2 q. v" k- l, G
得到P1 = 【0.8,0.2】,正好满足雨天~雨天概率为0.8,当然这根据所给条件就是这样。
& S4 R6 u, ]1 a9 [( I$ o8 S9 S) z: f4 [, p
下面计算第十天(记为P9)是晴天概率:3 G# a9 ?! S. V* a- q. {! n/ Q
" _4 S- l' f8 n/ O/ v
马7.png
& N; W7 {  ?7 v% D6 p0 W# h: a0 Q8 Y0 `/ S
得到,第十天为雨天概率为0.6668,为晴天的概率为0.3332。) D9 [% q# M5 A
: H3 S& o8 c9 G2 Y3 g5 o& Y- k
下面计算经过很长一段时间后雨天、晴天的概率,显然就是下面的递推公式了:
- G, J) f0 E. `. S/ C0 K% t7 E8 @7 H
: a# `+ z) A( o5 d+ G" O' C6 p# o0 q 马8.png
4 y) J* p  l6 w' u/ j. |% }& N) u, n  K' p
2.2 递推公式的改进
4 ?* X- ?2 g7 }0 h' O& z% C2 [; w" Q9 d- o
虽然上面构造了一个递推公式,但是直接计算矩阵A的n次方是很难计算的,我们将A进行特征分解(谱分解)一下,得到:/ t3 {% i$ B( j2 L" V0 U% _; n! |

/ l( {' _8 }3 N8 D$ H* `4 y
: R' M4 {4 v0 r5 Z8 I" B 马9.png 2 ^8 C7 [4 r" a
9 u0 T  W# s1 K" b3 |1 `& r; ]6 A2 P

6 T0 X2 H! W% d6 H* |" E现在递推公式变成了下面的样子:
! `0 c: `  c( }4 K" U# V
$ E9 }4 M+ ?' V6 T- i9 ]2 U3 p
8 K: Q3 ~; D* m8 \ 马10.png ! |- y- |3 ?  ?$ ~# p9 ]

* @& K! X, u$ x; ^0 |) X1 a+ {6 g, D. u* }, c9 J2 G: ^$ a; u
显然,当n趋于无穷即很长一段时间以后,Pn = 【0.67,0.33】。即雨天概率为0.67,晴天概率为0.33。并且,我们发现:初始状态如果是P0 =【0,1】,最后结果仍然是Pn = 【0.67,0.33】。这表明,马尔科夫过程与初始状态无关,跟转移矩阵有关。
5 m$ @4 J6 y, Y! E7 E
" c5 m" z4 G5 j6 W6 h4 ~! F* {) ?, w; v1 U: w8 g
" T! e/ P7 N( K1 }9 C0 P4 D( t: t
三、再看一个例子——DAN的CPG岛
7 a2 ~, P1 \/ I为什么还要看这个例子,因为在上面的天气预报我们是直接给出了概率转移矩阵,但是在实际应用中这个概率转移事先是不知道的,那该怎么办呢?需要自己去做统计才能得到。
3 V1 d& F0 \  x; X1 s; P0 A
( H2 {" |$ ^+ N* u4 @9 z问题描述:基因组上CpG相对富集的区域被称作CpG岛,接下来我们要从给定的一定DNA序列,判断它是否来自CpG岛,这属于一个两分类问题。——这属于一个序列分类问题。& q5 z# a7 ~4 ^/ q0 a$ q% O

  i8 p: u5 ]$ p1 tDNA序列每个位置上的核苷酸都可以被当作一个有四种可能取值的离散随机变量x={A,T,G,C} 。5 p% q* K; M) a* N0 P' C3 N* G
在上述问题中我们要考虑连续位置上出现的CpG双核苷酸,可以用马尔科夫模型来表示这种相邻位置之间的依赖关系。如果第4 P7 T, t- `3 ~3 P& Z

: M# q, l$ }$ F' W0 M3 Wi 时刻上的取值依赖于且仅依赖于第i−1时刻的取值,即  h- l7 z# K( p  d3 _/ H9 y
& a$ U: o! ~4 J: F
马11.png " ]# [5 n1 ?7 u  T: k3 R

3 ]  q0 @7 l+ H则我们把这个串称作一个一阶马尔科夫链(模型)。
/ ?6 D4 K& ^! l" B
3 Z: ~& {1 h+ m- P/ W9 X6 c2 U1 e" K1 g* K1 m" o
对于DNA序列来说,每一位置的取值有四种,我们把它们称作四种状态,转移概率就是一个4∗4 的矩阵,称作转移概率矩阵或状态转移矩阵,如下图。
/ W  x* q& r0 d3 @
7 s) |6 Q6 v/ `( _9 G# \" c 马12.png ( t, o  H: @; s& q8 h/ j8 R
' }2 C& R9 b, i' a
如果知道两类(CpG岛与非CpG岛)的状态转移矩阵,那么对于一个序列样本,我们就可以用上述公式分别计算每一类模型下观察到该特定序列的可能性或似然度 马13.png ,用同样的类别似然比(或对数似然比)来进行类别判断。
1 f$ j* M1 y" i+ Z! R. @/ n) G' L4 f8 W, g, ~9 U; o" ?9 _: e7 ?- i
3.1 关键问题——状态转移矩阵的确定
. K5 b6 @) \: R+ Q1 k
# U" w, n& w- z那么怎样去确定马尔科夫状态转移矩阵(离散概率模型)呢?* T5 Q1 M1 r9 _$ m, H0 m2 f

7 y! {' L# H) s0 ~; l首先收集充分的、有代表性的一些CpG岛序列的片段和一些非CpG岛序列的片段,用它们构成两类训练样本。在每一类样本中,统计在所有位置上出现A、T、C、G的次数,再统计在每个A、T、C、G后面出现A、T、C、G次数,然后用下面两个公式来统计概率:& ]9 E3 @) ]4 v6 ~2 k  j! Z6 P
% I9 V3 d  ?& t; Q
马14.png
8 p3 n0 _5 b% `, G& Y$ V
. ~3 n# M  w0 h. U/ J7 P 马15.png 4 g: e/ _# S- A7 L

4 J+ s$ ]" J: ~9 Q8 L( g7 g* @$ Y8 q" n1 a5 I/ e
% r# F/ i3 p  W' ^, ]& d" a( f. W
加号表示的是正样本,减号表示的是负样本。得到如下的转移矩阵:. m' S' g6 b+ g# f( N( g6 D# v7 A
马16.png % b" ~* a/ S9 d$ h3 p) ^

+ C  G) \) s: m2 `% h; [) B7 c' B, J  `- n
对于任意一段待判别的DNA序列,可以根据状态转移矩阵计算它属于CpG岛的似然比,再通过与一定的阈值比较进行判别。大于阈值的为正样本,否则为负样本,计算过程就与上面类似了,建立递推关系。0 O2 X9 x8 ~% I: Q, Q& c- `& f
6 P% W9 F7 L  s2 Z" }8 Y0 s

+ h# }; n" x9 m4 g. X9 W0 ?$ ?  H" C9 h; ]' _
四、马尔科夫模型与时间序列的关系与区别* ~6 e- K7 N" F: c: |- A+ U
乍一看,马尔科夫模型与时间序列是有一定的关系,有时候甚至有人说马尔科夫过程的状态序列就是一个时间序列,的确,从时间的推移角度来说,这么说好像没很么问题,但是它们之间还是有很多区别的,个人总结以下几点:
' i# q0 f! }* R8 g* |- A
9 T) E  R# i' s+ k(1)马尔科夫模型是概率模型。每一个时间点的观测值体现为状态值,所谓状态值就是某一个类别的概率,这跟时间序列显然不一样;& Z$ ?+ J* }0 H  s( G2 Z# D
' K& a1 ]& U* h. [; \3 \6 b8 m6 c) }* s
(2)马尔科夫模型当前状态与之前状态的关系是通过转移概率、转移概率矩阵来决定的,这也是和时间序列不一样的地方。
  W3 p" _( B/ \————————————————9 q9 S, Q; ?; p, {* H# u
版权声明:本文为CSDN博主「LoveMIss-Y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
* O( ]$ P& j0 w5 b! g  \% S8 s原文链接:https://blog.csdn.net/qq_27825451/article/details/100117715
& R, y7 f$ {. y* A/ M) {' w
& z1 H; A2 w: V& m. ]5 d1 z7 z9 Z! N6 f! A+ \, Q) Q9 U" T6 E" [





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5