算法概述
Page L, Brin S, Motwani R, et al. The PageRank citation ranking: Bringing order to the web[R]. Stanford InfoLab, 1999.
PageRank是1997年谷歌第一代搜索引擎的底层算法。大幅提高了搜索结果的相关率和质量,成为互联网第一个爆款应用,造就了传奇的谷歌公司。
PageRank是搜索引擎、信息检索、图机器学习、知识图谱、线性代数必读经典算法。
PageRank把互联网表示为由网页节点和引用链接构成的有向图,通过链接结构,计算网页节点重要度。来自重要网页节点的引用链接,权重更高。
通过线性方程组、矩阵乘法、特征值和特征向量、随机游走、马尔科夫链,五种角度,理解并求解PageRank值。讲解PageRank的收敛性分析及针对特殊节点的改进方法,最后扩展PageRank在推荐系统中计算节点相似度排序的升级变种。
知识概览
背景历史








基础数学知识
特征向量与特征根的几何意义



算法简介

把链接视为投票

以“流”的方式传递重要性

根据所有分数和为一的假设联立方程求解节点分数

使用矩阵分解的方式求解特征值,即为对应的节点分数


也可以使用幂迭代的方式来高效求解特征值


幂迭代法
由于用户是在随机登录,因此加入随机游走引入时序

达到稳态分布时,求解的分数才有意义



遍历定理:对于一个不可约的和非周期的马尔可夫链,有唯一稳态存在,
且从任意状态出发都可达到稳态。

PageWork两大问题及其解决方案



使用随机传送来绕过异常的“死点”和“陷阱”




pageRank 相关的例子及应用



图上的邻近性可以用来做推荐系统



不同的pageRank推荐方式

小结

参考PPT
黑底白色PPT:斯坦福CS224W图机器学习
https://web.stanford.edu/class/cs224w
纯黑底PPT:PageRank: A Trillion Dollar Algorithm(作者:Reducible)
https://www.youtube.com/watch?v=JGQe4kiPnrU
绿底PPT:Google‘s PageRank Algorithm(作者:Global Software Support)
https://www.youtube.com/playlist?list=PLH7W8KdUX6P2n4XwDiKsEU6sBhQj5cAqa
曼彻斯特大学:https://personalpages.manchester.ac.uk/staff/yanghong.huang/teaching/MATH36032/pagerank.pdf
斯坦福CS345 Data Mining:https://wenku.baidu.com/view/5be822bfbb4cf7ec4bfed052.html?_wkts_=1669773903123&bdQuery=web+in+1839
参考视频
https://www.youtube.com/watch?v=meonLcN7LD4
https://www.youtube.com/watch?v=P8Kt6Abq_rM&list=PLH7W8KdUX6P2n4XwDiKsEU6sBhQj5cAqa&index=4
PageRank与马尔科夫链:https://www.youtube.com/watch?v=JGQe4kiPnrU
其它参考资料
《数学之美》(作者:吴军), 人民邮电出版社
得到APP:张潇雨·商业经典案例课-谷歌
得到APP:吴军·谷歌方法论
PageRank原始论文1:http://infolab.stanford.edu/~backrub/google.html
PageRank原始论文2:http://ilpubs.stanford.edu:8090/422
Bryan K, Leise T. The $25,000,000,000 eigenvector: The linear algebra behind Google[J]. SIAM review, 2006, 48(3): 569-581.
思考题
PageRank值可以被恶意刷高吗?
很难,因为刷高意味着要使得一个重要节点指向该节点,而我们很难凭空创造一个重要节点。
PageRank为什么被称为“民主自治”算法?
因为一个节点的重要程度完全取决于指向该节的节点数量及他们的质量。
简述理解和计算PageRank的几个角度:线性方程组、矩阵左乘、特征向量、随机游走、马尔科夫链
线性方程组:根据节点的指向关系和节点分数总和为一的关系联立方程求解。
矩阵左乘:代表进行一次流转,即一次迭代。根据遍历定理,多次迭代后可以达到稳态,得到节点分数。
特征向量:矩阵分解求解特征向量和特征值,得到节点分数。
随机游走:即从任意一个节点开始,进行多次游走后停下,模拟多次后得到所停到节点的概率即为分数。
马尔科夫链:根据状态转移矩阵求解出稳态,其中状态值就为分数。
PageRank假设某节点的所有出链接权重相同,这是否足够合理?如何改进?
不合理,因为不同的链接针对不同任务的应用场景,其意义也不同。
针对不同的应用场景而设置不同的。
Spider Trap和Dead End节点,会对求解PageRank值产生什么影响?
如何改进?改进方法足够科学吗?
Spider Trap和Dead End会PageRank值在一些节点完全为零,而在一些点而虚高。
使用随机传送的方法,在数学上规避这种情况的发生概率。这样科学,因为它模拟了人们可能随时退出一个网页而开启另一新的网页这一行为。
Random Teleport概率β的值,会对求解PageRank值产生什么影响?
越小则随机传送的概率就越大,越可能规避较大Spider Trap。
PageRank、Personlized PageRank、RandomWalk with Restart,这三种算法有什么区别?
这是三种算的区别在于对节点状态的初始化不同,适用于不同的使用场景。
求解PageRank时,为什么求解线性方程组和矩阵特征值的算法复杂度是O(n^3)?
因为计算机在求解方程组时是使用迭代逼近法。
求解PageRank时,为什么最终选择了简单粗暴的Power Iteration(幂迭代)?
因为它复杂度低且可以根据上一时刻而实时地动态更新。
Damping Factor设置为一个常数,是否足够科学?(看完抖音后更可能看开微博,而不是公开课网站)
有一定的科学依据,因为根据对人们的行为习惯统计可以预测下一个打开的链接更可能是什么,而又先验的概率。