《概率统计》状态转移:初识马尔科夫链

回顾两类重要的随机过程

在上一篇随机过程的概述中,我们提到过两类非常非常典型且重要的随机过程,一类是:伯努利过程和泊松过程,这一类随机过程是无记忆性的,也就是说未来的状态不依赖于过去的状态——新的“成功”或“到达”不依赖于该过程过去的历史情况。

而另一类则正好相反,未来的情况会依赖于过去的情况,并且能够在某种程度上通过过去发生的情况去预测未来,例如这一篇我们的核心内容——马尔科夫过程,它在许许多多的领域都有深入和广泛的应用。

离散时间的马尔科夫链

马尔科夫链三要素

这是一类随着时间而发生状态变换的过程,因此分为离散时间的马尔科夫链和连续时间的马尔科夫链两类。我们首先考虑离散时间的马尔科夫链,它的状态在确定的离散时间点上发生变化。

离散时间的马尔科夫链有三个核心概念点:离散时间、状态空间、转移概率

在离散时间的马尔科夫链中,我们通常使用 n 来表示时刻,用 Xn 来表示马尔科夫链在此时的状态,那么显然马尔科夫链所有的状态会构成一个集合 S,这个集合 S 我们把它称作是这个离散时间马尔科夫链的状态空间。

那么,在这个状态空间的基础之上,我们来讨论马尔科夫链的第二个概念:转移概率。转移概率是这么描述的:当离散时间的马尔科夫链当前的状态是 i 时,下一个状态等于 j 的概率就是转移概率,我们记作是 \(P_{ij}\)。

转移概率 \(P_{ij}\) 本质上用一个条件概率就可以表达:

\(P_{ij} = P(X_{n+1} = j| X_{n} = i), i,j ∈S\)

我们举一个拥有三个状态的离散时间马尔科夫链,它的转移概率图如下:

在这幅图中标明的是"古明地觉"的三种状态,每天他都处于这三种状态中的一种:要么宅在家中,要么在外面运动,要么吃美食。这就是"古明地觉"的状态空间,如果今天"古明地觉"宅在家中,明天他仍然宅在家中的概率是 0.2,明天出去吃美食的概率是 0.6,明天出去运动的概率是 0.2,这就是他的几个转移概率。

马尔科夫性

如果我们说离散时间、状态空间和转移概率是离散时间马尔科夫链的构成要素,那么马尔科夫性则是它的灵魂特征。

这个特性具体描述为:只要时刻 n 马尔科夫链的状态为 i,不论过去发生了什么,也不论马尔科夫链是如何到达状态 i 的,下一个时刻 n+1 转移到状态 j 的概率一定都是转移概率\(P_{ij}\)

我们还是用上面的图例来说明,比如"古明地觉"今天是在吃美食,那么不管她昨天是在运动还是宅在家中,他明天出去运动的概率都不变,就是 0.3,出去继续吃美食的概率也不变,还是 0.6。概况的说来就是:下一个状态只与当前状态有关,而与更早的历史状态无关。

语言上七七八八的说了这么多,又是举例子,又是理论术语的,其实落实在数学语言的表达上,还是一个条件概率等式的事儿:

即对任意的时刻 n,对状态空间中的任意状态 i, j ∈ S,以及时刻n前(也就是历史上的)任何可能的状态序列\(i_{0},i_{1},...,i_{n-1}\),均有:

\(P(X_{n+1} = j|X_{n}=i,X_{n-1}=i-1,...,x_{0}=i_0) = P(X_{n+1} = j|X_n=i) = P_{ij}\)

很清楚也很直白:下一个状态 \(X_{n+1}\)的状态只依赖于前一个状态\(X_n\)

转移概率和状态转移矩阵

那么问题来了,这个转移概率\(P_{ij}\)具有什么样的性质呢?首先\(P_{ij}\)必须满足非负性,这是必须的

其次再有\(∑_{j=1}^{m}P_{ij} = 1\),这个等式对于所有的i都成立。其实这个很好理解,我们还是对照着上面那个"古明地觉"的状态图来看。比如她今天宅在家中,那么她明天继续宅在家中的概率是 0.2,明天出去运动的概率是 0.2,明天出去吃美食的概率是 0.6,不管这三个概率如何取值,如何分配,有一点是肯定的,就是三者相加必须等于 1。

我们关注一下这里特殊一点的情况,即当 i=j 时,\(P_{ij}\) 的取值问题。其实就是对应了"古明地觉"今天宅在家中,明天继续宅在家中的情况。虽然状态没有发生变化,但是我们可以认为是状态发生了一次特殊的转移,也就是自身转移。

在状态空间 S 中,任意两个状态 i 和 j 之间都有一个转移概率\(P_{ij}\),并且满足\(P_{ij}\)?≥ 0(当状态 i 无法转移到状态 j 的时候,\(P_{ij}\)=0)。那么我们可以把状态空间中的状态间的所有转移概率按照顺序组织成一个二维矩阵,其中第i行、第j列的元素就是\(P_{ij}\),那么这个二维矩阵:

就称为是转移概率矩阵,它刻画了对应的马尔科夫链的本质。

我们沿用"古明地觉"的例子:我们令状态 1 为宅在家中;状态 2 为运动;状态 3 为吃美食,那么这个马尔科夫链就是一个 3×3 的 2 维矩阵。

马尔科夫链性质的总结

到这里,我们有必要停下来梳理一下马尔科夫链的最基本性质,一个马尔科夫链由以下主要特征确定:

  • 第一是状态集合S = {1, 2, 3, ..., m}
  • 第二是可能发生状态转移的(i, j),即那些\(P_{ij} > 0\)的状态对;
  • 第三是\(P_{ij}\)的取值;

而这三点都可以最终由一个二维的转移概率矩阵所描述。

并且由该上述特征所描述的马尔科夫链是一个随机变量序列\(X_{0},X_{1},X_{2},...,X_{n}\),它们取值于状态空间S,并且满足:对于任意的时间n,所有状态i,j∈S,以及之前所有可能的状态序列:\(i_{0},i_{1},...,i_{n}\),均有:

\(P(X_{n+1} = j|X_{n}=i,X_{n-1}=i-1,...,x_{0}=i_0) = P(X_{n+1} = j|X_n=i) = P_{ij}\)

一步到达与多步转移

刚才我们花大篇幅介绍的转移概率\(P_{ij}\)给出的是从状态i一步到达状态j的转移概率\(P_{ij} = P(X_{n+1}=j|X_{n}=i)\)。那么我们进一步拓展,我们不是通过一步,而是通过m步(其中m>1)从状态i转移到状态j,那么这个对应的就是m步的状态转移概率。

写成条件概率的形式就是:

\(P^{m}(i, j) = P(X_{n+m} = j|X_{n} = i)\)

这里我们换一个例子来看看,社会的流动性问题是大家都非常关注的一个问题,社会的流动性强,社会的底层通过自身的努力使得家族向社会中层甚至上层流动是社会始终保持活力重要推动力。

社会学中就有一个非常有名的反映社会阶层流动的马尔科夫链,在这个马尔科夫链的状态空间中,有三个状态,状态 1 是处于贫困水平,状态 2 是中产阶级,状态 3 是财富自由,它的状态转移矩阵为:

我们不讨论这里面数据的合理性和准确性,单单就事论事,如\(P_{13}=0.1\),表示如果这一代人处于贫困水平,下一代人想成为财富自由的概率为 0.1,而继续处于贫困水平的概率要大得多,为 0.7。而如果这一代人处于财富自由的水平,那么他的下一代处于财富自由的概率也要大不少,为 0.4。

那么,我们现在思考这么一个问题,假设爷爷处于贫困水平(状态 1),那么父亲处于中产阶级(状态 2),而你处于财富自由水平(状态 3)的概率有多大?

从哪里入手呢?还是紧扣定义,从条件概率表达式入手:

\(P(X_{2}=3,X_{1}=2|X_{0}=1)\) =?$ P(X_{2}=3,X_{1}=2,X_{0}=1) \over P(X_{0}=1)$

=\(P(X_{2}=3,X_{1}=2,X_{0}=1) \over P(X_{1}=2,X_{0}=1)\)?· \(P(X_{1}=2,X_{0}=1) \over P(X_{0}=1)\)

=\(P(X_{2}=3|X_{1}=2,X_{0}=1) · P(X_{1}=2,X_{0}=1)\)

由于这是一个马尔科夫链,因此满足:

\(P(X_{2}=3|X_{1}=2,X_{0}=1) = P(X_{2}=3|X_{1}=2)\)

因此有:

\(P(X_{2}=3,X_{1}=2|X_{0}=1) = P(X_{2}=3|X_{1}=2)P(X_{1}=2|X_{0}=1)\)

对应到转移概率矩阵中,就是从状态 1 转移到状态 2 的概率乘以从状态 2 转移到状态 3 的概率:

\(P_{12}P_{23} = 0.2·0.2 = 0.04\)

接下来我们不指定父亲的状态,只看这么一个问题,就是假设爷爷是贫困水平(状态 1),问孙子处于财富自由(状态 3)状态的概率有多大?

那么这里只指定了爷爷和孙子所处的状态,那么父亲这一代可以是处于贫穷、中产和财富自由中的任意一种状态,那么这个概率的表达式写起来也很简单:

\(P(X_{2}=3|X_{0}=1) = P(X_{2}=3,X_{1}=1|X_{0}=1) + P(X_{2}=3,X_{1}=3|X_{0}=1)=P_{11}P_{13}+P_{12}P_{23}+P_{13}P_{33}\)

\(=∑_{k=1}^{3}P_{1k}P_{k3}=0.7·0.1+0.2·0.2+0.1·0.4=0.15\)

上面具体计算出来的结果对我们而言其实并不重要,我们重点还是回过头来看这个式子:

\(P(X_{2}=3|X_{0}=1) = P_{11}P_{13}+P_{12}P_{23}+P_{13}P_{33}\)

对线性代数熟悉的同学应该对这个等式很敏感,它实际上就是

该转移矩阵中,第一行和第三列点乘的结果,如果按照矩阵相乘的运算法则,这个计算出来的结果恰好位于结果矩阵的第一行第三列,也正对应了从状态 1 到状态 3,两步状态转移的概率值。

试想,如果我们将概率转移矩阵与自身相乘,也就是求它的二次幂,即:

那么得到的新的 3×3 的二维矩阵里就包含了所有状态间,通过两步到达的概率值:

import numpy as np

A = np.array([[0.7, 0.2, 0.1],
              [0.3, 0.5, 0.2],
              [0.2, 0.4, 0.4]])

print(A @ A)
"""
[[0.57 0.28 0.15]
 [0.4  0.39 0.21]
 [0.34 0.4  0.26]]
"""

从结果中我们可以看出,第一行第三列确实就是我们刚刚求出来的概率值 0.15。

那么以此类推,我们想看看 n 步状态转移概率,那么就是求取上面的状态转移矩阵的n次幂

from functools import reduce
import numpy as np

A = np.array([[0.7, 0.2, 0.1],
              [0.3, 0.5, 0.2],
              [0.2, 0.4, 0.4]])

print(np.array(reduce(np.ndarray.__matmul__, [A] * 3)))
"""
[[0.513 0.314 0.173]
 [0.439 0.359 0.202]
 [0.41  0.372 0.218]]
"""
print(np.array(reduce(np.ndarray.__matmul__, [A] * 5)))
"""
[[0.47683 0.3353  0.18787]
 [0.46251 0.34373 0.19376]
 [0.45662 0.34708 0.1963 ]]
"""
print(np.array(reduce(np.ndarray.__matmul__, [A] * 10)))
"""
[[0.46823165 0.34033969 0.19142866]
 [0.4679919  0.34048014 0.19152797]
 [0.46789259 0.3405383  0.19156911]]
"""
print(np.array(reduce(np.ndarray.__matmul__, [A] * 20)))
"""
[[0.46808515 0.34042551 0.19148934]
 [0.46808508 0.34042555 0.19148937]
 [0.46808505 0.34042556 0.19148938]]
"""
print(np.array(reduce(np.ndarray.__matmul__, [A] * 100)))
"""
[[0.46808511 0.34042553 0.19148936]
 [0.46808511 0.34042553 0.19148936]
 [0.46808511 0.34042553 0.19148936]]
"""

很显然,随着 n 的逐渐增大,n 步状态转移矩阵收敛于:

[[0.46808511 0.34042553 0.19148936]
 [0.46808511 0.34042553 0.19148936]
 [0.46808511 0.34042553 0.19148936]]

我们发现,它每行的三个元素都是一模一样的,这说明不论你现在是贫穷水平、中产阶级还是财富自由,过了很多代以后,你的后代落入到三个阶层中任意一个阶层的概率都是一定的。而且最大的概率都是变成贫困阶层。当然这个只是我们依据给定的数据计算而来,具体是否符合社会学的常识,就不是我们所关心的问题了。不过确实也说明,富有从来不是一件容易的事儿。

最后我们看看由 n 步转移概率所派生出来的路径概率问题。

给定一个马尔科夫链模型,我们可以计算未来任何一个给定状态序列的概率,特别的我们有:

\(P(X_{0}=i_{0},X_{1}=i_{1},...,X_{n}=i_{n})=P(X_{0}=i_{0})P_{i_{0}i_{1}}P_{i_{1}i_{2}}···P_{i_{n-1}i_{n}}\)

这个结合马尔可夫性和条件概率的描述形式,说明起来也是非常简单。

首先由贝叶斯定理可得:

\(P(X_{0}=i_{0},X_{1}=i_{1},...,X_{n}=i_{n})=P(X_{n}=i_{n}|X_{0}=i_{0},X_{1}=i_{1},...,X_{n-1}=i_{n-1})P(X_{0}=i_{0},X_{1}=i_{1},X_{2}=i_{2},...X_{n-1}=i_{n-1})\)

然后依照马尔可夫性:

\(P(X_{n}=i_{n}|X_{0}=i_{0},X_{1}=i_{1},...,X_{n-1}=i_{n-1})=P(X_{n}=i_{n}|X_{n-1}=i_{n-1}) = P_{i_{n-1}i_{n}}\)

从而得到:

\(P(X_{0}=i_{0},X_{1}=i_{1},...,X_{n}=i_{n})= P_{i_{n-1}i_{n}}P(X_{0}=i_{0},X_{1}=i_{1},...,X_{n-1}=i_{n-1})\)

然后我们在这个式子的基础上不断递推就能得到最开始的:

\(P(X_{0}=i_{0},X_{1}=i_{1},...,X_{n}=i_{n})= P(X_{0}=i_{0})P_{i_{0}i_{1}}P_{i_{1}i_{2}}···P_{i_{n-1}i_{n}}\)

这个路径问题举个例子就很好理解了,比如从你的太爷爷开始,太爷爷是贫穷,爷爷是贫穷,爸爸是中产,你是财富自由,你儿子中产,你孙子贫穷,这就是一个路径,当然是一个非常悲剧,典型的努力拼搏最后又富不过三代的悲剧路径:那么路径概率是\(P(X_{0}=1)P_{11}P_{12}P_{23}P_{32}P_{21}\),最左边的 \(P(X_{0}=1)\) 表示太爷爷是贫穷的概率,这个值指定了,整个路径的概率就可以计算出来了。

原文地址:https://www.cnblogs.com/traditional/p/12609648.html

时间: 2024-10-06 22:57:01

《概率统计》状态转移:初识马尔科夫链的相关文章

《概率统计》基于马尔科夫链的近似采样

楔子 从这一篇开始,我们主要来介绍基于马尔科夫链的近似采样过程.具体如何采样,以及整个采样过程中的思维过程,我们随着这篇的内容讲解而逐步展开 马尔科夫链的稳态与采样的关系 马尔科夫链的平稳分布是一个意义非凡的重要特性,我们换个角度说明一下大家就能明白它的重要意义:也就是说无论我们的起始状态是位于状态 1.状态 2 还是状态 3,在状态转移矩阵 P 的作用下,经过足够大的 n 步转移之后,它处于三种状态的概率都是固定的 利用下面这幅图,我们可以把这个状态转移和到达稳态的过程表达得更加直白一些: 好

13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概率等概念,是计算机学生必学的知识点,然而理论的抽象性往往让学生很难深入地去体会和理解.而本文,将这些抽象的理论概念,用可视化的方式来解释,还可调节相应参数来改变结果,使这些抽象概念变得生动而立体! 计算机相关概念太难.太抽象?别怕,往下看! 人类对视觉信息的记忆要远远大于文字信息.使用图表等形式的可视化,可以让抽象.难懂的概念一目了然:在此基础之上,添

马尔科夫链和隐马尔可夫模型(转载)

马尔可夫模型是由Andrei A. Markov于1913年提出的 ?? 设 SS是一个由有限个状态组成的集合 S={1,2,3,-,n?1,n}S={1,2,3,-,n?1,n} 随机序列 XX 在 tt时刻所处的状态为 qtqt,其中 qt∈Sqt∈S,若有: P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i)P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i) aij≥0∑jnaij=1aij≥0∑jnaij=1 则随机序列 XX构成一个一

MCMC(二)马尔科夫链

MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)M-H采样和Gibbs采样(待填坑) 在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难.因此我们需要本篇讲到的马尔科夫链来帮忙. 1. 马尔科夫链概述 马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态.举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只

Chapter 4 马尔科夫链

4.1 引言 现在要研究的是这样一种过程: 表示在时刻的值(或者状态),想对一串连续时刻的值,比如:,, ... 建立一个概率模型. 最简单的模型就是:假设都是独立的随机变量,但是通常这种假设都是没什么根据的,也缺乏研究的意义. 举例来说的话,如果用来代替某个公司,比如Google,在个交易日之后的股票价格. 那么说第天的股票价格和之前第天,第天,第乃至第天的股票价格一点关系都没有,这样是说不过去的. 但是说第天股票的收盘价格依赖于第天的收盘价格还是有点道理的. 同样还可以做出这样的合理假设:在

利用隐马尔科夫链(HMM)模型实现中文分词

1.什么是HMM? 隐马尔科夫链(HMM)是一个五元组: 隐状态集合 ; 观测状态集合: 状态概率转移矩阵: 观察状态概率矩阵: 初始状态概率分布: 2.HMM有两个假设: 齐次马尔可夫链假设:任意时刻的隐藏状态只依赖与前一时刻的隐藏状态. 观测独立性假设:任意时刻的观察状态,只依赖与当前时刻的隐藏状态. 3.HMM可以解决3类基本问题: 评估观察序列的概率. 学习模型参数.即给定观察序列,估计模型的参数,是观察序列出现的概率最大. 预测问题.即给定观察序列和模型,求最有可能出现的对应状态序列.

马尔科夫链及其平稳状态

马尔科夫链的定义如下 从定义中我们不难看出马氏链当前状态只与前一个状态相关.比如我们预测明天天气,只考虑今天天气状况,不考虑昨天前天的天气状况. 举个具体的例子.社会学家把人按其经济状况分为3类:下层,中层,上层,我们用1,2,3表示这三个阶层.社会学家发现决定一个人的收入阶层最重要的因素就是其父母的收入阶层.如果一个人的收入属于下层类别,则它的孩子属于下层收入的概率为0.65,属于中层收入的概率为0.28,属于上层收入的概率为0.07.从父代到子代,收入阶层转移概率如下 我们用P表示这个转移矩

马尔科夫链

马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态.举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系.当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等,当然MCMC也需要它. 原文地址:https://www.cnblogs.com/lansebandaoti/p/11343132.html

马尔科夫链 Markov Chains

Good resource, Markov Chains Explained Visually,  http://setosa.io/ev/markov-chains/ ============================ 马尔可夫链(Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain),因俄国数学家安德烈·马尔可夫(俄语:Андрей Андреевич Марков)得名,为状态空间中经过从一个状态到另一个状态的转换的随机过程.该过程