给出初始转换矩阵
其中x是随机步行者开始行走的初始节点。
然后我们可以计算数量:
表示在步行长度为L的情况下,在x中开始步行时访问边缘(i,j)的预期次数。
由于像Q ^(L-1)这样的矩阵供电,上述数量的计算是非常耗时的,我想知道是否存在类似于HMM的前向 - 后向算法的算法以便计算该数量对于那个简单的(可见的)马尔可夫链。
答案 0 :(得分:1)
针对这些问题,markov模型有一些技巧。
在您的情况下,我假设您希望给定
的特定边i,j被访问的预期次数我将忽略任何类似P的特殊形式,这可能会进一步提高速度。总体思路(可以扩展到有关markov系统的其他问题)是
首先,我们意识到,如果我们知道对边缘开始的状态的实际访问次数,则可以使用过渡矩阵 P 来推断特定边缘的实际计数。 / p>
示例:说说长度为50的链,我们知道平均处于状态1的10倍。在P中,从1跳到2的机会是50%。然后在长度为50 + 1的链中,我们发现平均所有边缘的10 * 50%= 5为1->2。(请注意状态访问和边缘访问之间的区别!)
幸运的是,可以以过渡矩阵的几何序列的形式来写期望状态。只要分母可以倒置,就可以对几何序列使用通常的技巧,但很遗憾,过渡矩阵不是这样。至少不是很简单,但这可以解决。让我用LaTeX写下状态访问向量的数量
E_c{x_0,L} = \sum_{i=0}^{L-1} P^i x_0 = (\sum_{i=0}^{L-1} P^i) x_0
其中x_0是向量,在您的情况下,初始分布在所有位置均为零,但您选择的是一种状态。
请注意,x_0之前的总和是一个矩阵,其中包含所有可能的初始状态的所有状态计数。现在计算这个矩阵。使用几何级数我们得到
\sum_{i=0}^{L-1} P^i = \frac{P^L - Id}{P - Id}
具有ID的身份矩阵。分母是单数,所以我们有问题。幸运的是分子有相同的问题,因此我们可以解决此问题。使用特征值分解并使用左右特征向量矩阵和特征值evD的对角矩阵重写P
P = evR evD evL
\sum_{i=0}^{L-1} P^i = \sum_{i=0}^{L-1} (evR evD evL)^i
= evR (\sum_{i=0}^{L-1} evD^i ) evL
现在,我们为每个特征值保留简单的几何级数。一个特征值是1,这会引起问题。但是在这种情况下,我们只是总结一下。从0到L-1求和1就是L。其他几何级数定义明确。
专业人士:现在,您可以立即计算x_0或L的任意选择的边缘。
缺点:您总是必须进行特征分解,但是如果矩阵很大,这是一个问题。
示例:
一个简单的偶对称矩阵
P = {{0.8, 0.15, 0.05},
{0.075, 0.85, 0.075},
{0.05, 0.15, 0.8}}
我们选择了L = 51
(50个转换)和x_0 = {1, 0, 0}
evD = {{1., 0., 0.}, {0., 0.75, 0.}, {0., 0., 0.7}}
evR = {{-0.612372, -0.707107, 0.612372}, {-0.612372, 0, -0.612372}, {-0.612372, 0.707107, 0.612372}}
evL = {{-0.408248, -0.816497, -0.408248}, {-0.707107, 0, 0.707107}, {0.408248, -0.816497, 0.408248}}
GeometricSeries(evD,50) = {{50., 0., 0.}, {0., 4., 0.}, {0., 0., 3.33333}}
E_c(x_0 = 1) = evR GeometricSeries(evD,50) evL {1, 0, 0}
= {15.3333, 11.6667, 11.3333}
对于过渡1-> 2(15%),我们得到15.3333 * 15%= 2.3