统计学习方法第二版 第21章参考答案

本文所写答案是作者自己的见解,大家酌情参考,不足之处敬请指出。

 

21.1 假设方阵A是随机矩阵,即其每个元素非负,每列之和为1,证明  任然是随机矩阵,其中k是自然数。

分析:我们只需要证明任意两个随机矩阵的乘积依然是随机矩阵即可。假设现在有随机矩阵A和随机矩阵B我们需要证明矩阵C=A*B也是随机矩阵即可。

证明:

假设随机矩阵A = [ ,  ,  ]

随机矩阵B =  ,其中  。

所以矩阵C的第i列为:

A*  =  。

显然C矩阵的每个元素都是大于0的,并且C矩阵的第i列的和就等于:

 (1-1)

因为:A是随机矩阵,所以  ,因此式子(1-1)等于:

所以矩阵C的第i列的和等于1.同理可得C的其他列的和为1.所以C是一个随机矩阵。

 

21.2 例21.1中,以不同的初始分布向量R0进行迭代,认得到同样的极限向量R,即PageRank。请验证。

import numpy as np
def pageRank(R0,max_step=100):
    M = np.array([[0,1/2,1,0],[1/3,0,0,1/2],[1/3,0,0,1/2],[1/3,1/2,0,0]])
    Rt = R0
    for i in range(max_step):
        Rt = np.dot(M,Rt)
    return Rt

if __name__=="__main__":
    result = []
    test = [[1/4,1/4,1/4,1/4],[1/2,0,1/2,0],[1/3,1/3,1/3,0],[1/3,1/2,0,1/6],[1/3,1/4,1/6,1/4]]
    for t in test:
        result.append(pageRank(t))
    print(np.array(result))

结果:

统计学习方法第二版 第21章参考答案_第1张图片

附带赠送例21.4的不同R0的验证结果:

import numpy as np
def pageRank(R0,max_step=100,d = 0.85):
    M = np.array([[0,0,1],[1/2,0,0],[1/2,1,0]])
    A = d*M+(1-d)/len(M)
    Rt = np.array(R0)/max(R0)
    for i in range(max_step):
        temp = np.dot(A,Rt)
        Rt = temp/max(temp)
    return Rt/sum(Rt)

if __name__=="__main__":
    result = []
    test = [[1,1,1],[1/2,0,0],[1/3,1/3,0],[1,2,3],[1/6,1/2,1/3]]
    for t in test:
        result.append(pageRank(t))
    print(np.array(result))

结果:

统计学习方法第二版 第21章参考答案_第2张图片

 

 

21.3证明pagerank一般定义中的马尔可夫链具有平稳分布。

首先,根据马尔可夫链的相关知识,我们知道不可约非周期的有限状态马尔可夫链有唯一的平稳分布(原书P419)

证明:因为一般定义中转移矩阵  ,其中M表示原本的状态转移矩阵,1表示一个所有元素都是1的方阵。

1.显然这个时候的转移矩阵T的每个元素都是大于0的,因此所有的状态都是相互连通的,也就是说所有的状态都同属于一类,因此这个马尔可夫链是不可约的。

2.这个时候由于所有状态相互连通,因此所有点的周期都是1,也就是说马尔可夫链是非周期的。

3.显然矩阵的大小是有限的,因此马尔可夫链也是有限的。

 

所以,一般定义中的马尔可夫链具有平稳分布

 

21.4证明随机矩阵的最大特征值为1。

这个我也暂时没搞懂,下面那句话摘抄于维基百科。

Perron–Frobenius 定理保证了每个随机矩阵都具有最大绝对值始终为1的特征值。

你可能感兴趣的:(algorithm)