PageRank
在本节我们可以了解到
- PageRank的原理
- PageRank如何应用到推荐系统上
- 从矩阵角度理解Embeddings
1、把图看成一个矩阵
在本节课,我们将矩阵角度来研究图
- 通过随机游走挖掘节点的重要性(PageRank)
- 通过矩阵分解来重新理解Node Embeddings
1 PageRank
PageRank最初是用于挖掘网页重要性的算法,网页之间的连接往往是有向图。
1.1 想法
PageRank是一个"flow"模型,通过“投票”的想法来定义一个节点的重要性
- 每个节点能获得它源节点连接带有的重要性比例
- 如果重要性为的节点有出度,则节点每条连接指向的节点能获得的“投票”
- 节点的重要性定义为所有指向它的连接重要性总和
1.2 随机邻接矩阵
定义随机邻接矩阵M
- 令节点有出度
- 如果则有
- M是一个列随机矩阵
- M的列总和为1
- M是一个列随机矩阵
向量:每个节点的重要性
- 是节点的重要性分数
- 的和为1
"flow" 等式可以写成
1、一个计算例子
1.3 PageRank与随机游走的联系
- 想象一个随机上网的冲浪选手
- 在时刻,冲浪选手在节点
- 在时刻,冲浪选手随机从节点的一个出度溜走了
- 从溜到在某些节点停止了
- 无限重复这个过程
- 做一些假设
- 令为时刻所有节点的状态
- 是所有节点的一个概率分布
1、迭代得到稳定分布
- 如何得到冲浪选手在时刻的状态?
- 从一个链均匀的随机走
- 由随机游走得到的状态,当时说明达到稳定分布。
- 我们原始的节点排名满足
- 因此对于这种随机游走是一个稳定分布
2、回顾伴随矩阵的特征值分解
-
实际上,其中的是特征值为1的特征向量。
-
PageRank实际上是求,即求中特征值为1的特征向量
-
我们可以根据迭代方法求解
1.4 总结
- PageRank
- 通过网络连接的结构计算节点的重要性
- 使用随机分布矩阵进行随机游走
- PageRank实际上是解决中求解问题
2 如何求解PageRank?
2.1 迭代
给定一个带有个节点的图,我们使用一个迭代过程:
- 给每个节点初始化一个重要性
- 重复PageRank直到收敛
- 的计算过程为
1、具体过程
- 一个简单的迭代方法
- 初始化:
- 迭代:
- 当停止
可以证明50次迭代可以停止。
2、一个计算例子
2.2 存在两个问题
存在两个问题:
- 一些节点没有出边,存在消失的情况
- 陷入了局部死循环(所有节点都在同一个group中)
1、局部死循环
如图可以看到,节点b的出边只有自己,因此迭代得到一直是同一种分布。
2、消失的问题
如图中,节点b没有任何出边,迭代消失。
3、解决死循环的方法
- 解决循环的方法:在每一步,冲浪选手有两种选择
- 有概率随机跟从一个边
- 有的概率跳到图上的任意一个节点
- 一般来说设置为0.8到0.9之间
4、解决消失的方法
- 当到了消失的节点,赋予随机跳走的功能
5、为什么跳走可以解决问题?
2.3 最终的PageRank模型
- 在每步中,冲浪选手有两种选择
- 有概率,随机跟从一个链游走
- 有概率,随机跳到某些节点
- 得到最终的PageRank模型
- 随机邻接矩阵改写为:
- 因此模型改为求解。
1、一个计算例子
2.4 总结
PageRank模型
- 目标:求解
- 方法:
- 初始化
- 迭代(马尔科夫链)
- 限制
- 解决的问题:死循环和消失
3 随机重启和Personalized PageRank
3.1 想法
-
目标:计算相似的节点
- 什么物品我们该推荐给买过物品Q的客户?
- 想法:历史中如果Q和P被相似的客户购买过,那么我们就把P推荐给Q。
-
问题:如何找出P?
2、Personalized PageRank
- PageRank
- 计算所有节点的重要性
- 在一个图上有概率从当前节点随机跳走
- Pensonalized PageRank
- 计算给定节点群与图上节点的相似性
- 图上的邻近
- Q:什么物品和物品Q最接近?
- 随机重启游走
- 跳回开始定义的节点群:
3.2 模型
- 给定一个查询节点群,此处定义只有一个节点
- 定义迭代次数
- 随机游走到该物品的购物者
- 从上面得到的购物者,随机游走到他所购买的物品
- 标记该物品被游走次数+1
- 定义概率:
- 根据随机重启回到节点群
- 定义迭代次数
3.3 PageRank演变总结
- PageRank
- 从任何节点可以随机跳走
- 节点有相同的概率被冲浪选手选择
- 特定主题PageRank,通过Personalized PageRank实现
- 跳回到特定的节点群
- 节点可以有不同的概率被冲浪选手选择
- 通过重启进行随机游走
- 主题特定的PageRank总是跳回到相同的节点
4 矩阵分解和Node Embeddings
1、回顾
Node Embeddings实际上是找到嵌入矩阵
4.1 和矩阵分解的联系
- 节点的简单相似性:如果节点,是相似的,他们就有边连接
- 这代表:
- 因此:
1、矩阵分解
- Node Embeddings实际上是求解问题
2、随机游走矩阵分解
- Deepwalk实际上是求解
- 式子的解释,可以从word2vec角度理解。
4.2 存在的限制
1、数据更新后,模型需要整体重新训练
2、无法解决结构相似性问题
- 下面5和11是无法进行游走的,但这两个子图存在结构相似性,而随机游走无法捕捉。
3、无法使用节点、边、图上自带的特征
5 总结
- PageRank
- 用于计算节点的重要性
- 通过邻接矩阵可以高效的进行计算
- Personalized PageRank(PPR)
- 对给定的一些节点进行重要性计算
- 通过随机游走可以高效的进行计算
- 基于随机游走的Node Embeddings可以看成矩阵分解
- 把图看成矩阵问题进行求解是所有算法中最关键的想法