- 马尔卡夫链介绍
则假设我们的序列状态是...Xt−2,Xt−1,Xt,Xt+1,......Xt−2,Xt−1,Xt,Xt+1,...,那么我们的在时刻Xt+1Xt+1的状态的条件概率仅仅依赖于时刻XtXt,即:
P(Xt+1|...Xt−2,Xt−1,Xt)=P(Xt+1|Xt)
既然某一时刻状态转移的概率只依赖于它的前一个状态,那么我们只要能求出系统中任意两个状态之间的转换概率,就能确定马尔卡夫链模型。
- 马尔科夫链模型状态转移矩阵的性质
采用了不同初始概率分布,最终状态的概率分布趋于同一个稳定的概率分布, 也就是说我们的马尔科夫链模型的状态转移矩阵收敛到的稳定概率分布与我们的初始状态概率分布无关。这是一个非常好的性质,也就是说,如果我们得到了这个稳定概率分布对应的马尔科夫链模型的状态转移矩阵,则我们可以用任意的概率分布样本开始,带入马尔科夫链模型的状态转移矩阵,这样经过一些序列的转换,最终就可以得到符合对应稳定概率分布的样本。 这个性质不光对我们上面的状态转移矩阵有效,对于绝大多数的其他的马尔科夫链模型的状态转移矩阵也有效。同时不光是离散状态,连续状态时也成立。
程序代码:
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.3,0.4,0.3]], dtype=float)
for i in range(100):
vector1 = vector1*matrix
print ("Current round:", i + 1)
print (vector1)
程序截图:
马尔科夫链的收敛性质:
如果一个非周期的马尔科夫链有状态转移矩阵PP, 并且它的任何两个状态是连通的,那么limn→∞Pnijlimn→∞Pijn与i无关,我们有:
1)
limn→∞Pnij=π(j)
2)
3)
4)
上面的性质中需要解释的有:
1)非周期的马尔科夫链:这个主要是指马尔科夫链的状态转化不是循环的,如果是循环的则永远不会收敛。幸运的是我们遇到的马尔科夫链一般都是非周期性的。用数学方式表述则是:对于任意某一状态i,d为集合{n∣n≥1,Pnii>0}{n∣n≥1,Piin>0} 的最大公约数,如果 d=1d=1 ,则该状态为非周期的
2)任何两个状态是连通的:这个指的是从任意一个状态可以通过有限步到达其他的任意一个状态,不会出现条件概率一直为0导致不可达的情况。
3)马尔科夫链的状态数可以是有限的,也可以是无限的。因此可以用于连续概率分布和离散概率分布。
4)ππ通常称为马尔科夫链的平稳分布。
总结下基于马尔科夫链的采样过程:
1)输入马尔科夫链状态转移矩阵PP,设定状态转移次数阈值n1n1,需要的样本个数n2n2
2)从任意简单概率分布采样得到初始状态值x0x0
3)for t=0t=0 to n1+n2−1n1+n2−1: 从条件概率分布P(x|xt)P(x|xt)中采样得到样本xt+1xt+1
样本集(xn1,xn1+1,...,xn1+n2−1)(xn1,xn1+1,...,xn1+n2−1)即为我们需要的平稳分布对应的样本集。