[译] 用 Python 实现马尔可夫链的初级教程

学习马尔可夫链及其性质,了解转移矩阵,并用 Python 动手实现!

马尔可夫链是通常用一组随机变量定义的数学系统,可以根据具体的概率规则进行状态转移。转移的集合满足马尔可夫性质,也就是说,转移到任一特定状态的概率只取决于当前状态和所用时间,而与其之前的状态序列无关。马尔可夫链的这个独特性质就是无记忆性

跟随本教程学会使用马尔可夫链,你就会懂得离散时间马尔可夫链是什么。你还会学习构建(离散时间)马尔可夫链模型所需的组件及其常见特性。接着学习用 Python 及其 numpyrandom 库来实现一个简单的模型。还要学习用多种方式来表示马尔可夫链,比如状态图和转移矩阵

想用 Python 处理更多统计问题?了解一下 DataCamp 的 Python 统计学思维课程

开始吧……

为什么要用马尔可夫链?

马尔可夫链在数学中有广泛使用。同时也在经济学,博弈论,通信原理,遗传学和金融学领域有广泛应用。通常出现在统计学,尤其是贝叶斯统计,和信息论上下文中。在现实中,马尔可夫链为研究机动车辆的巡航定速系统,抵达机场的乘客的排队序列,货币汇率等问题提供了解决思路。最早由 Google 搜索引擎提出的 PageRank 就是基于马尔可夫过程的算法。Reddit 有个叫子版块模拟器的子版块,帖子和评论全部用马尔可夫链自动生成生成,厉害吧!

马尔可夫链

马尔可夫链是具有马尔可夫性质的随机过程。随机过程或者说具有随机性质是指由一组随机变量定义的数学对象。马尔可夫链要么有离散状态空间(一组随机变量的可能值的集合)要么有离散索引集合(通常表示时间),鉴于此,马尔可夫链有众多变种。而通常所说的「马尔可夫链」是指具有离散时间集合的过程,也就是离散时间马尔可夫链(DTMC)。

离散时间马尔可夫链

离散时间马尔可夫链所包含的系统的每一步都处于某个状态,步骤之间的状态随机变化。这些步骤常被比作时间的各个瞬间(不过你也可以想成物理距离或者随便什么离散度量)。离散时间马尔可夫链是随机变量 X1,X2,X3 … 的序列,不过要满足马尔可夫性质,所以转移到下一概率只和现在的状态有关,与之前的状态无关。用概率数学公式表示如下:

Pr( Xn+1 = x | X1 = x1, X2 = x2, …, Xn = xn) = Pr( Xn+1 = x | Xn = xn)

可见 Xn+1 的概率只和之前的 Xn 的概率有关。所以只需要知道上一个状态就可以确定现在状态的概率分布,满足条件独立(也就是说:只需要知道现在状态就可以确定下一个状态)。

Xi 的可能取值构成的可数集合 S 称为马尔可夫链状态空间。状态空间可以是任何东西:字母,数字,篮球比分或者天气情况。虽说时间参数通常是离散的,离散时间马尔可夫链的状态空间却没有什么广泛采用的约束条件,还不如参考任意状态空间下的过程。不过许多马尔可夫链的应用都用到了统计分析更简单的有限或可数无穷状态空间。

模型

马尔可夫链用概率自动机表示(相信我它没有听上去那么复杂!)。系统状态的改变叫做转移。各个状态改变的概率叫做转移概率。概率自动机包括从已知转移到转移方程的概率,将其转换为转移矩阵。

还可以将马尔可夫链看作有向图,其中图 n 的边标注的是 n 时刻状态转移到 n+1 时刻状态的概率,Pr(Xn+1 = x | Xn = xn)。这个式子可以读做,从已知状态 Xn 转移到状态 Xn+1 的概率。这个概念也可以用从时刻 n 到时刻 n+1 的转移矩阵来表示。状态空间的每个状态第一次出现是作为转移矩阵的行,第二次是列。矩阵的每个元素都表示从这一行表示的状态转移到列状态的概率。

如果马尔可夫链有 N 种状态,转移矩阵就是 N x N 维,其中(I, J)表示从状态 I 转移到状态 J 的概率。此外,转移矩阵一定是概率矩阵,也就是每一行元素之和一定是 1。为什么?因为每一行表示自身的概率分布。

所以模型的主要特征包括:状态空间,描述了特定转移发生的概率的转移矩阵以及由初始分布给出的状态空间的初始状态。

好像很复杂?

我们来看一个简单的例子帮助理解这些概念:

如果 Cj 难得心情不好,她会跑步,或者大吃特吃冰淇淋(译者注:原文 gooble 应为 gobble),要么打个盹儿来调整。

根据以往数据,如果她睡了一觉调整心情,第二天她有 60% 的可能去跑步,20% 的可能继续待在床上,还有 20% 的可能吃一大份冰淇淋。

如果她跑步散心,第二天她有 60% 的可能接着跑步,30% 的可能吃冰淇淋,只有 10% 的可能会去睡觉。

最后,如果她难过时纵情冰淇淋,第二天只有 10% 的可能性继续吃冰淇淋,有 70% 的可能性跑步,还有 20%

  • 15
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值