Hits算法

Hits算法背景

假定现在有很多网页,每个网页会有一些链接指向其他网页。

在Hits算法中每个网页被赋予两个值:hub和authority,记为\(h_i\)\(a_i\)

一个网页实质性内容的质量越高,就说它的authority值越高;如果一个网页中链接指向的网站质量越高,就说它的hub值越高。显然一个authority值较高的网页会被较多网页所指向。

于是我们定义一个网页的authority值为所有指向它的网页的hub值之和,一个网页的hub值为它所指向的网页的authority值之和。Hits算法就是在给出网页链接的情况下,通过迭代求出每个网页的authority和hub值。

Hits算法流程

设网页间的邻接矩阵为\(M\),也就是\(M_{i,j}=1\)表示网页\(i\)指向网页\(j\)。一开始假定每个网页的authority值和hub值均为1,然后进行迭代,

每次进行如下操作$$a_i=\sum_{k=1}^nM_{k,i}h_k$$

\[h_i=\sum_{k=1}^nM_{i,k}a_k \]

然后把\(a\)向量和\(h\)向量标准化。
可以设置一个迭代次数的上限或是当变化量小于某个阈值时结束,就得到了每个网站的authority值和hub值。

Hits算法证明

假定\(a^k,h^k\)为操作\(k\)次后的\(a,h\)向量,那么有$$ak=MTh^{k-1}$$

\[h^k=Ma^k \]

可以发现$$ak=(MTM)ka0$$

\[h^k=(MM^T)^kh^0 \]

显然\(MM^T\)\(M^TM\)均为实对称矩阵,又因为一个实对称矩阵必有\(n\)个特征值,并且其特征向量两两正交,设\(MM^T\)特征值从大到小为\(c_1,\dots,c_n\),对应的特征向量为\(z_1,\dots,z_n\),因此\(h^0\)可由其特征向量线性表出,设为$$MM^T=q_1z_1+\dots+q_nz_n$$
那么$$(MMT)kh_0$$

\[=(MM^T)^k(q_1z_1+\dots+q_nz_n) \]

又因为\((MM^T)z_i=c_iz_i\),因此上式$$=q_1(c_1)kz_1+\dots+q_n(c_n)kz_n$$
又因为每次会对向量进行标准化,可以发现最终\(h^k\)向量会收敛到\(MM^T\)的主特征向量,同理\(a^k\)也会收敛,于是我们就证明了这个算法是会收敛的。

posted @ 2019-10-25 13:25  _beginend  阅读(753)  评论(0编辑  收藏  举报