参考文章:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园
写给小白看的马尔科夫链(Markov Chain)最佳入门教程_许进进的博客-CSDN博客_markov链
目录
1.马尔科夫链概述
1.1股票市场模型
2.马尔科夫链模型状态转移矩阵的性质 (本节重点)
2.1代码实例
2.2实现结果
2.3马尔科夫链收敛性质总结
1.马尔科夫链概述
假某一时刻的状态转移的概率只与它本身前一个状态有关,与前前一个、前前前一个状态都无关,用途:这样做可以大大简化模型的复杂度,因此马尔科夫链在时间序列模型中可以得到广泛的应用,比如循环神经网络RNN、隐式马尔科夫模型HMM、MCMC....
精确的数学定义:假设序列状态是,那么在时刻
的状态的条件概率仅仅依赖于前一个时刻
,即:
既然某一时刻状态转移的概率只依赖于它的前一个状态,那么我们只要求出系统任意两个状态之间的转换概率,这个马尔科夫链的模型就确定下来了。
1.1股票市场模型
这个马尔科夫链是表示股市模型的,共有三种状态:牛市(Bull market)、熊市(Bear market)、横盘(Stagnant market) 。每一个状态都以一定的转换概率转化到下一个状态。
具体求解过程:http://t.csdn.cn/XVM6f
2.马尔科夫链模型状态转移矩阵的性质 (本节重点)
马尔科夫链模型的状态转移矩阵最终收敛得到的稳定概率分布与初始状态概率分布无关。用途:得到了这个稳定概率分布对应的马尔科夫链模型的状态转移矩阵,则我们可以用任意的概率分布样本开始,代入马尔科夫模型的状态转移矩阵,经过一些的序列的转换,最终可以得到符合对应稳定概率分布的样本。
这个性质不光对我们上面的状态转移矩阵有效,对于绝大多数的其他的马尔科夫链模型的状态转移矩阵也有效。同时不光是离散状态,连续状态时也成立。
对于一个确定的状态转移矩阵,它的n次幂
在当n大于一定的值时,也可以发现是确定的概率分布。
2.1代码实例
import numpy as np
matrix = np.matrix([[0.9,0.075,0.025],[0.15,0.8,0.05],[0.25,0.25,0.5]], dtype=float)
#vector1 = np.matrix([[0.7,0.1,0.2]], dtype = float)
for i in range(10):
matrix = matrix*matrix
print ("Current round:", i+1)
print (matrix)
2.2实现结果
Current round: 1
[[0.8275 0.13375 0.03875]
[0.2675 0.66375 0.06875]
[0.3875 0.34375 0.26875]]
Current round: 2
[[0.73555 0.212775 0.051675]
[0.42555 0.499975 0.074475]
[0.51675 0.372375 0.110875]]
Current round: 3
[[0.65828326 0.28213131 0.05958543]
[0.56426262 0.36825403 0.06748335]
[0.5958543 0.33741675 0.06672895]]
Current round: 4
[[0.62803724 0.30972343 0.06223933]
[0.61944687 0.3175772 0.06297594]
[0.6223933 0.3148797 0.062727 ]]
Current round: 5
[[0.62502532 0.31247685 0.06249783]
[0.6249537 0.31254233 0.06250397]
[0.62497828 0.31251986 0.06250186]]
Current round: 6
[[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]]
Current round: 7
[[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]]
Current round: 8
[[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]]
Current round: 9
[[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]]
Current round: 10
[[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]
[0.625 0.3125 0.0625]]
我们可以发现,在 以后,
的值稳定不再变化,而且每一行都为[0.625 0.3125 0.0625],这和我们前面的稳定分布是一致的,这个性质不光是离散状态成立,连续状态时也成立。
2.3马尔科夫链收敛性质总结
如果一个非周期的马尔科夫链有状态转移矩阵 ,并且它的任何两个状态是联通的,那么
与i无关,我们有:
(1)
(2)
(3)
(4) 是方程
的唯一非负解,其中:
我们对上面总结的性质做出解释:
(1)非周期的马尔科夫链:这个主要是指马尔科夫链的状态转化不是循环的,如果是循环的则永远不会收敛。幸运的是,我们遇到的马尔科夫链一般都是非周期性的。
用数学方式表述则是:对于任意某一状态i,d为集合{}的最大公约数,如果d=1,则该状态为非周期的。
(2)任何两个状态是连通的:指的是从任意一个状态可以通过有限步数达到其他任意一个状态,不会出现条件概率一直为0导致无法到达的现象。
(3)马尔科夫链的状态数可以是有限的,也可以是无限的,因此可以用于连续概率分布和离散概率分布。
(4) 通常称为马尔科夫链的平稳分布。