生信自学笔记(十三):线性代数回顾与马尔可夫链

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jining11/article/details/82530809

今天在看关于马尔可夫链的一些基础知识,深感大一的线性代数没有打好基础,许多概念尚模糊不清,一些定理的证明也看得费力,于是花一个下午的时间做了些回顾,总结如下。

线性代数篇

  • 特征向量and特征值

矩阵从直观上来看,能在空间中对向量施以变换,一般来说,这种变换既是在大小上的,也是在方向上的。但在某些情况下,它只能够改变某种向量的大小,而不能改变某种向量的方向,用数学表达式来说,就是Ax=\lambda x,其中\lambda是特征值,x是特征向量。这乍看起来好像没什么大用处,但是当要计算A^Mx时,如果M很大,就可以转换成\lambda^Mx,大大简化计算。当然,我们一般情况下计算时,x不会恰好就是特征向量,但是可以把它转换成特征向量的线性组合,比如说,x = a _1x_1+a _2x_2,那A^Mx=a_1\lambda _1^Mx_1+a_2\lambda _2^Mx_2

  • 行列式

行列式说起来也是很神奇的一个东西,明明是那么复杂的一个矩阵,居然能和一个常数关联起来。也是从直观上来说,行列式是n维平行体的体积。比如说对于一个二维矩阵,就是一个平行四边形的面积;对于一个三维矩阵,就是一个平行六面体的体积。

矩阵的迹,指的是主对角线上元素的总和,它有一个神奇的性质,就是恰好等同于矩阵特征值的总和。一个显而易见的情况是对于三角矩阵,主对角线上的元素恰好与特征值一一对应。

  • 相互间的关系以及进一步推导

如何求出特征值呢,一个方法是将特征值的定义式改写:

(A-I\lambda )x = 0

为了使得x是非零解,一个重要的条件是(A-I\lambda )这个矩阵的行向量有共线现象,也就是说,矩阵不是满秩的。这也可以从满秩矩阵的性质推导出来。(比如说矩阵的逆的存在性啊什么的)。

举一个简单的例子来说:

\begin{bmatrix} a & b\\ c & d \end{bmatrix} x = 0,即  \begin{bmatrix} a & b\\ 0 & d- \frac{bc}{a}\end{bmatrix} x = 0,为使x不成为零向量,必须令d-\frac{bc}{a} = 0, 即两条行向量共线。

共线之后,再回到行列式上面来,既然其对应的几何含义是n维平行体的体积,那么体积等于面积乘高,也就是说在n维平行体的各个面中,如果有一个面的面积为零,总体积必然为零。而两条共线的行向量必然会组合成这个平行体的一个面,因而平行体的总体积为零,行列式为零。

所以我们得出关系1:(A-I\lambda )的行列式为零。

针对二维矩阵的情况,我们可以具体计算一下(A-I\lambda )的行列式,即:

(a-\lambda )(d-\lambda )-bc = 0

展开之后:ad-a\lambda -d\lambda +\lambda ^2 -bc = 0

假设两个解分别为\lambda _1\lambda _2,根据求根公式,有\lambda _1\lambda _2 = ad-bc,换句话说,A矩阵的特征值之积等于A的行列式。

这不是偶然,我们可以证明关系2:矩阵的行列式等于特征值之积。

通过直接对(A-I\lambda )的行列式进行数学上的运算,我们可以得到关系3:三角矩阵的主对角线元素等于特征值,换句话说,它们的乘积是行列式。和已经提到的关系4:矩阵的主对角线元素之和等于特征值之和。

对于矩阵A,如果它有n个特征向量,那么它是可对角化的,假设其特征值为\lambda _1\lambda _2···,对应特征向量为X_1X_2···,

D = \begin{bmatrix} \lambda _1 & 0 & ... & 0 \\ 0 & \lambda _2 & ... & 0 \\ ... & ... & ... & ... \\ 0 & 0 & 0 & \lambda _n \end{bmatrix}

Q = \begin{bmatrix} X_1 & X_2 & ... & X_n \end{bmatrix}

DQ = AQA = Q^{-1}DQA^k = Q^{-1}DQ\times Q^{-1}DQ... = Q^{-1}D^kQ

当k趋近于无穷时,由于

D^k = \begin{bmatrix} \lambda _1^k & 0 & ... & 0 \\ 0 & \lambda _2^k & ... & 0 \\ ... & ... & ... & ... \\ 0 & 0 & 0 & \lambda _n^k \end{bmatrix}

因此绝对值小于1的元素会收敛至零,等于1的元素仍为1,大于1或者为-1的元素不会收敛。因此对于可对角化的矩阵A,当其特征值的绝对值均小于1或者是值等于1时,A在乘幂运算中是收敛的。

马尔可夫链篇

  • 基本概念

马尔可夫链(英语:Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain,缩写为DTMC),因俄国数学家安德烈·马尔可夫(俄语:Андрей Андреевич Марков)得名,为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质。马尔科夫链作为实际过程的统计模型具有许多应用。

其数学上的定义是:

\Pr(X_{{n+1}}=x\mid X_{1}=x_{1},X_{2}=x_{2},\ldots ,X_{n}=x_{n})=\Pr(X_{{n+1}}=x\mid X_{n}=x_{n})

用通俗的话来说:将来和过去无关,只与现在有关。这一性质称之为马氏性或者无后效性。

  • 理论推导

除了无后效性之外,马尔可夫链的另一条性质是时齐性:

P(X_{n+m} = j\space | X_{n} = i) = P(X_{n+m+k} = j\space | X_{n+k} = i)

也就是说,状态之间的转移概率只与时间间隔的长短有关,与起始时间的选择无关。

定义概率转移矩阵P,P_{ij} = 由状态i经过一个时间间隔之后转移到下一个状态j的概率。很容易想象得到,它各个元素均位于0和1之间,并且每一行之和必定为1。(这又称之为右随机矩阵,每一行都是一个随机向量)

当经过多个时间间隔时,定义P(X_{n+m} = j\space | X_{n} = i) = P(m)_{ij},且有P(m+n) = P(m)P(n)

下面证明一下,转移矩阵P满足:  \left | \lambda \right |\leqslant 1 ,规定x_i是特征向量x的第i个元素,x_m是x中的第m个元素,同时它是绝对值最大的元素。

一个简单但不严密的反证法:

\left |x_i{}' \right | = \left |\sum_{j=1}^{n}P_{ij}x_j \right | \leq \sum_{j=1}^{n}P_{ij}\left |x_m \right | = \left |x_m \right |,如果 \left | \lambda \right |> 1 ,那么有\left |x_m{}' \right | = \left |\lambda x_m \right | > \left |x_m \right |,产生矛盾。

一个严密而且也不怎么复杂的证法:

\left |x_m{}' \right | = \left |\lambda \right | \left |x_m \right | = \left|\sum_{j=1}^{n}P_{mj}x_j \right | \leq \sum_{j=1}^{n}\left (P_{ij}\left |x_m \right | \right )= \left |x_m \right |

\left |\lambda \right | \left |x_m \right | \leq \left |x_m \right |, \left |\lambda \right |\leq 1

所以,当转移矩阵可对角化时,一般情况下计算过程是收敛的。

  • 实际应用

转移矩阵在当今最重要的应用之一在于搜索引擎,在pagerank算法中,为了让矩阵收敛,特别提出了这样两个收敛的充要条件:

  1. 强连通性,在有限的时间内可以从一个初始状态到达另一个终止状态,可以看做图的一种问题。
  2. 非周期性,即不存在振荡现象,最典型的例子是这样的矩阵:\begin{bmatrix} 0 & 1\\ 1 & 0 \end{bmatrix},这种情况下,两种可能的状态会来回转换,无法收敛到稳定状态。

为了实现这两个条件,谷歌矩阵在原始矩阵的基础上做了这样两个工作:

  1. 对于全为零的行,将该行所有元素置为1/n。
  2. 取一0和1之间的参数a,对于每一行的随机向量x, 令n = [1/n 1/n ... 1/n],x = ax + (1-a)n,从而令每一个状态都有一定随机性转到其他任何一个状态。
  • 举例说明

下面举一个简单的例子来说明一下,现实生活中最为显著的时间间隔,莫过于代际,而且通常情况下,父辈对子辈的影响也远大于祖父辈。现假设一个人是土豪,他的孩子依然是土豪的概率是0.8,成为穷人的概率是0.2,若一个人是穷人,他的孩子依然是穷人的概率是0.9,成为土豪的概率是0.1。

定义转移矩阵P:

a = np.matrix('0.8 0.2;0.1 0.9')
a
matrix([[0.8, 0.2],
        [0.1, 0.9]])

理论上探究其收敛性:可以看到,矩阵特征值的绝对值的确小于等于1,而且是可对角化的,这说明它是收敛的。

from numpy import linalg as LA
w, v = LA.eig(a)
w
array([0.7, 1. ])
v
matrix([[-0.89442719, -0.70710678],
        [ 0.4472136 , -0.70710678]])

验证其收敛性:

a**55
matrix([[0.33333334, 0.66666666],
        [0.33333333, 0.66666667]])
a**56
matrix([[0.33333333, 0.66666667],
        [0.33333333, 0.66666667]])
a**60
matrix([[0.33333333, 0.66666667],
        [0.33333333, 0.66666667]])
a**70
matrix([[0.33333333, 0.66666667],
        [0.33333333, 0.66666667]])

可以看到,矩阵最终收敛到了一个确定的结果,在这一模型中,无论起始身份为何,漫长的时间(56代)过去后,自己的子孙大约有三分之一的概率成为土豪。

可以通过添加初始的概率矩阵验证一下,这里用了比较极端的数据。

一开始就是土豪的情况:

s = np.matrix('1,0')
s*a
matrix([[0.8, 0.2]])
s*a**55
matrix([[0.33333334, 0.66666666]])
s*a**56
matrix([[0.33333333, 0.66666667]])

一开始就是穷人的情况:

s = np.matrix('0,1')
s*a**50
matrix([[0.33333333, 0.66666667]])

穷人比土豪要更快一些达到收敛状态。

猜你喜欢

转载自blog.csdn.net/jining11/article/details/82530809
今日推荐