转载请注明出处
1、李航老师《统计学习方法》第二版第二十一章课后题答案
21.1 假设方阵A是随机矩阵,即其每个元素的非负,每列元素的和为1,证明 A k A^{k} Ak仍然是随机矩阵,其中k是自然数。
证明:
为了方便的使用矩阵乘法,我们令
A
=
A
T
A=A^{T}
A=AT,也就是A是一个行随机矩阵,每行的元素之和为1.
设
e
e
e是一个元素全为1的列向量,他的维数和矩阵A的位数是一样的。那么
A
e
=
e
(1)
Ae=e\tag{1}
Ae=e(1)在公式(1)的两边同时用
A
A
A作用,得
A
∗
A
e
=
A
2
e
=
A
e
=
e
(2)
A*Ae=A^{2}e=Ae=e\tag{2}
A∗Ae=A2e=Ae=e(2)由此可知
A
2
A^{2}
A2也是一个行随机矩阵。那么由归纳法可证,
A
k
A^{k}
Ak也是行随机矩阵。再利用乘幂和矩阵转置的运算关系,那么对于列随机矩阵也成立。
注:
这里使用了矩阵的特征值和特征向量。
21.2 例21.1中,以不同的初始分布向量 R 0 R_{0} R0进行迭代,仍然得到同样的极限向量 R R R,即PageRank。请验证。
证明:
由于题目给了一个实例,而且是要验证。首先明白一个定理:几何重数不超过代数重数。因为要求的极限向量就是转移矩阵的特征值1对应的元素均不小于0且元素之和为1的特征向量。那么我们只需要验证给定的转移矩阵只有一个一重的特征值1即可。
import numpy as np
from fractions import Fraction
M=np.array([[0,0.5,1,0],
[Fraction(1,3),0,0,0.5],
[Fraction(1,3),0,0,0.5],
[Fraction(1,3),0.5,0,0]],dtype=np.float64)
eig,eig_v=np.linalg.eig(M)
输出的特征值为:[-0.5, 1. , 0. , -0.5],由此可见特征值1是一重的,那么对应的特征子空间也是一维的,又由于所求极限向量的特殊性,是唯一的。
21.3 证明PageRank算法一般定义中的马尔可夫链具有平稳分布,即式(21.11)成立。
证明:
有个定理可以直接证出来。
定理21.1:不可约的非周期的有限状态的马尔科夫链具有唯一的平稳分布。
一般定义改进之后,就是一个不可约的且非周期的有限状态马尔科夫链。因而由这个定理,就可以推出来。
另外:如果想要一个数学性的证明,请参看上面的两个例题。
一般定义所得的矩阵也是随机矩阵,利用一些矩阵论的知识,该矩阵有一个一重的特征值1,那么对应的特征子空间也是1维的,又由于平稳分布的的特殊性,就一定有平稳分布存在。
21.4证明随机矩阵的最大特征值为1.
证明:
假设是行随机矩阵,也就是每一行的元素之和为1,如果是列随机矩阵,那么考虑该矩阵的转置,因为一个矩阵
A
A
A与
A
A
A的转置矩阵具有相同的特征值。
由前面的题目可以知道随机矩阵一定有特征值1,下面我们采用反证法证明随机矩阵
M
M
M不可能有大于一的特征值。
假设,
M
M
M有大于一的特征值
λ
\lambda
λ,那么
M
x
=
λ
∗
x
Mx=\lambda*x
Mx=λ∗x,其中
x
x
x为对应的特征向量。由于可以使
x
x
x中的元素均是不小于0的数,设
x
i
x_{i}
xi为
x
x
x中最大的元素。由于每行元素和为1,且元素均不小于0.
由于是凸组合关系,所以有
∑
j
=
1
n
a
k
j
∗
x
j
=
λ
∗
x
k
<
=
x
i
(3)
\sum_{j=1}^{n}a_{kj}*x_{j}=\lambda *x_{k}<=x_{i}\tag{3}
j=1∑nakj∗xj=λ∗xk<=xi(3)不等式(3)对于
k
=
1
,
2
,
.
.
.
,
n
k=1,2,...,n
k=1,2,...,n均成立。
但是
λ
>
1
\lambda>1
λ>1,所以有
λ
∗
x
i
>
x
i
\lambda*x_{i}>x_{i}
λ∗xi>xi。与不等式(3)矛盾。所以最大特征值就是1.
2、关于PageRank算法的一些问题和想法
在这一节,假设读者对PageRank算法有了一定的了解。
2.1 如何求解PageRank算法定义中的线性方程组?
1、有几种消去方法
例如:行主元消去法、列主元消去法和全主元消去法。
在求解线性方程组时,一个小问题需要考虑下,那就是矩阵的病态性质,用矩阵的条件数来衡量,当条件数大于10时,即
c
o
n
d
(
A
)
>
10
cond(A)>10
cond(A)>10,我们认为矩阵是病态的。此时如果矩阵的元素有点误差,就会造成解的千差万别。
2、迭代法
例如:高斯赛德尔迭代法和超松弛迭代法
3、优化方法
可以将PageRank算法一般定义中的 R = d M R + 1 − d n ∗ e R=dMR+\frac{1-d}{n}*e R=dMR+n1−d∗e化为 R = ( d M + 1 − d n ∗ E ) R = A R R=(dM+\frac{1-d}{n}*E)R=AR R=(dM+n1−d∗E)R=AR,再整理得 ( E − A ) R = 0 (E-A)R=0 (E−A)R=0,将R看为系数,那么方程求解就转化为给定一组特征去拟合0向量,定义一个误差损失函数loss®,自然可以使用带约束的优化方法来求解,还要构造拉格朗日函数。
4、幂法及其加速方法
幂法应该是用的最多的方法了,因为要求的是最大特征值的特征向量,幂法就是用来求最大的特征值以及对应的特征向量。值得注意的是,幂法的收敛速度取决于第二大特征值,越接近0收敛的越快。为了加速收敛,还可以使用一些带原点位移的加速方法。
2.2 原始PageRank算法的缺陷之一:时间单向性
1、为什么有时间单向性?
直观上的理解就是如果一个网页在网站上存在的时间很长,那么别的网站会引用这个网站,也就是由别的网站结点到这个网站结点的有向边很多,那么根据PageRank算法的定义可知,一个网站的重要性是通过别的和这个网站有链接关系的网站的重要性来衡量的。旧的网页较那些新的网页会有较多的链接,就导致了对旧网页的评分很高,对新的网页的评分较低。上面的说法暂时先避免像微博热搜之类的这样的网页。PageRank算法仅仅是分析图的链接关系的无监督学习算法。
2、一个简单改进算法
在PageRank算法的公式中加入一个小偏置项
W
t
=
e
/
T
(4)
W_{t}=e/T\tag{4}
Wt=e/T(4)
其中T是一个网页被搜索到的次数,e是一个和阻尼因子有关的常数。作者认为如果一个网页被搜索的次数很高,那么就认为这个网页是一个旧网页,相应的加上的时间感知价值
W
t
W_{t}
Wt就比较小。
改进后的公式是:
R
=
1
−
d
n
∗
E
1
+
d
M
R
+
W
(5)
R=\frac{1-d}{n}*E1+dMR+W\tag{5}
R=n1−d∗E1+dMR+W(5)
作者的仿真实验:
数据分析
系列1是原始的PageRank算法的实验结果,系列2是改进后的实验结果。在仿真实验中作者假设结点4也就是Page编号里面的第四个网页被访问了10次,取e=1.那么给Page4加上的时间感知价值就是0.1,其他的网页为1.由数据可以看到改进后的算法对Page4的排名较原始算法小了一些。
注:公式中的e的值如何选取呢?
作者给了几组不同的e的取值对实验数据的影响。如下图:
3、另外一个方法如下(偷个懒,在PPT中截了几张图,啊哈哈哈哈,不想打字了):
一般来说利用的信息越多,排名越准确。
4、别的时间因子
这些时间因子都是加在了权值上,重新构造转移矩阵,或者加了平滑项来改善PageRank算法的时间单向性缺陷。
5、现有时间因子的不足和优点
第一次些博客,不足之处欢迎大家批评指正,有问题可以一起讨论,一起进步。
参考文献:
李航老师的《统计学习方法》第二版第二十一章
李庆扬老师的《数值分析》第五版
Yujing Wang,Yunhai Tong,Ming Zeng. Ranking Scientific Articles by Exploiting Citations, Authors, Journals, and Time Information.
戚华春,黄德才,郑月锋. 具有时间反馈的PageRank改进算法.