1. PageRank 算法问题与改进

PageRank 算法在实际迭代过程中会遇到两个问题:

  • 死节点(dead ends)

产生此问题的原因是有些节点没有向外的连接,如下图的bbb,那么就会导致最终重要性得分会变成0.

出现此问题后不满足列和为1的假设,最终求解会出现问题。

  • 局部陷阱(spider traps)

这种问题是由于所有的往外的连接都在一个小的组内,最终这个“陷阱”会吸收掉所有的重要性,如下图的bbb所示。

这个问题在数学本身的求解上并不是问题,但出现局部陷阱后得到的并不是我们所期望的重要性得分。

解决上面两个问题的方法比较简单,在出现问题的节点上加入传送(teleports)机制:

  • 以β\betaβ的概率按照已知的连接情况进行游走;
  • 以1−β1-\beta1−β的概率随机跳到任意一个节点上.

若添加的是均匀传送且在出问题的节点上β=0\beta=0β=0,则转移矩阵可变为:

而在实际的操作中,我们可以在每一次转移时都进行随机传送的操作,则节点jjj重要性得分计算方程变为:

rj=∑i→jβridi+(1−β)1Nr_{j}=\sum_{i \rightarrow j} \beta \frac{r_{i}}{d_{i}}+(1-\beta) \frac{1}{N} rj​=i→j∑​βdi​ri​​+(1−β)N1​

注意,上述方程在遇到死节点时,是需要将随机传送的概率设置为1的。此时,就可以进行幂迭代法进行求解,只是迭代的转移矩阵变为了:

G=βM+(1−β)[1N]N×N\boldsymbol{G}=\beta \boldsymbol{M}+(1-\beta)\left[\frac{1}{N}\right]_{N \times N} G=βM+(1−β)[N1​]N×N​

递归式为:

r=G⋅r\boldsymbol{r}=\boldsymbol{G} \cdot \boldsymbol{r} r=G⋅r


2. 拓展及延伸

注意到,前面我们使用的随机传送策略是所有的节点等概率传送,但在实际的应用中节点之间的联系往往不是等概率的。以推荐系统为例,下图表示用户与商品的交互情况。

当用户购买了一个商品后,我们期望找到一个相似的商品推荐给用户,这样用户就有较大的概率买另一件推荐的商品。那么如何通过随机游走策略来计算商品之间的相似度呢?这里可以引入Personalized PageRank策略,通过排列节点与传送节点的接近程度S\boldsymbol{S}S,可以推荐与当前商品最相关的一系列商品。

前文所述的PageRank方法的传送概率是平均概率1/N1/N1/N,如:

S=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]\boldsymbol{S}=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1] S=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]

而对于Personalized PageRank(Topic Specific PageRank)我们可以指定某些节点的传送,如:

S=[0.1,0,0,0.2,0,0,0.5,0,0,0.2]\boldsymbol{S}=[0.1,0,0,0.2,0,0,0.5,0,0,0.2] S=[0.1,0,0,0.2,0,0,0.5,0,0,0.2]

但在商品推荐中的传送,是需要重新回到已被购买的item(出发节点)上,这一策略核心为restart,如:

S=[0,0,0,0,1,0,0,0,0,0,0]\boldsymbol{S}=[0,0,0,0, 1, 0,0,0,0,0,0] S=[0,0,0,0,1,0,0,0,0,0,0]

此时,随机游走的策略就是从QQQ节点出发,随机走到连接的User上,再随机走到对应User连接到的Item上,以此迭代游走。每次都到另一个Item上都有一定的概率跳回到最初始的出发节点QQQ上,最后计算每个节点被走过的次数,便可以计算与当前Item的相似度(次数越高则相似度越大)

图中红色箭头中的数字为走过该节点的次数。


参考

  • CS224W: Machine Learning with Graphs

图机器学习——3.2 PageRank 算法问题改进与延伸相关推荐

  1. 基于图机器学习的微生物网络关系预测算法研究

    龙亚辉预答辩公告 浏览次数:410日期:2021-03-19编辑:院研究生秘书 预答辩公告 论文题目 基于图机器学习的微生物网络关系预测算法研究 答辩人 龙亚辉 指导教师 骆嘉伟 答辩委员会 主席 王 ...

  2. 【白话机器学习】算法理论+实战之PageRank算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  3. 机器学习(十九)——PageRank算法, KNN, loss function详解

    http://antkillerfarm.github.io/ PageRank算法 概述 在PageRank提出之前,已经有研究者提出利用网页的入链数量来进行链接分析计算,这种入链方法假设一个网页的 ...

  4. pagerank数据集_机器学习十大经典算法-PageRank(附实践代码)

    Yo, yo, check it out. 保证看完不晕倒... 如果公式让你脑瓜疼,请忽略公式,或者忽略脑瓜. Kagging咖金:推荐系统之关联规则(附实践代码)​zhuanlan.zhihu.c ...

  5. cs224w(图机器学习)2021冬季课程学习笔记4 Link Analysis: PageRank (Graph as Matrix)

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Graph as Matrix 2. PageRank / the Google Algor ...

  6. 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码

    在上一篇文章:机器学习之PageRank算法应用与C#实现(1)算法介绍 中,对PageRank算法的原理和过程进行了详细的介绍,并通过一个很简单的例子对过程进行了讲解.从上一篇文章可以很快的了解Pa ...

  7. PageRank算法改进

    PageRank算法的应用 PageRank 算法是 Google 搜索引擎进行网页排名的一种算法,那么它如何映射到其他领域? 比如,我们如何在文献排名中应用PageRank算法呢? 对文献的质量进行 ...

  8. 图的链接分析 (link analysis): PageRank 算法

    目录 PageRank 的定义 前置知识 基本想法 PageRank 的基本定义 PageRank 的一般定义 PageRank 的计算 代数算法 迭代算法 幂法 (power method) Why ...

  9. 机器学习之MATLAB代码--IWOA_BILSTM(基于改进鲸鱼算法优化的BiLSTM预测算法)(十六)

    机器学习之MATLAB代码--IWOA_BILSTM基于改进鲸鱼算法优化的BiLSTM预测算法(十六) 代码 数据 结果 代码 1. %% 基于改进鲸鱼算法优化的BiLSTM预测算法 clear;cl ...

最新文章

  1. 关于CSS中表单的一些属性和使用
  2. Spring框架中有哪些不同类型的事件
  3. 『数据库』数据库系统效率Max--数据库并发控制
  4. java webservice 服务器_java如何写webservice服务端
  5. PYTHON1.day07
  6. JavaMail简单接收邮件
  7. 人生苦短我用python(02)动态加载模块
  8. AK的故事之英语学习篇(mistake)
  9. Android手机证书安装
  10. 中国象棋人机对弈搜索算法学习-极大极小值,负极大值,alpha-beta算法
  11. stm32+ucos,si4438调试
  12. Python开发 之 Python3打包(windows/linux)详解
  13. Roaring 20s(还有一些《A ConvNet for the 2020s》读后感)
  14. IOS模拟用户触发各种事件
  15. 世界上最好的拍照手机,华为拍照的四种功能揭晓,拍出你想拍的
  16. 计算机与网络安全经历了几个阶段,计算机历史上计算范式经历了哪六个发展阶段?...
  17. 财务内部收益率用计算机怎么算,财务内部收益率EXCEL怎么计算
  18. 匈牙利算法原理与Python实现
  19. 微软的奥尔良项目简介
  20. JSP中动态添加或删除table的行

热门文章

  1. ADB打开蓝牙,给蓝牙wifi 芯片上下电
  2. Java面向对象编程——接口
  3. 解读阿里云成功运营生态体系的两个关键密码:开放与双向赋能
  4. 键盘快捷键大全 - Mac 技巧
  5. [影评]一刀倾城(附相关评论及剧中部分台词各一)
  6. 戴眼镜会需要眼镜盒,该怎么创建眼镜盒嗯?下面我们就来看看3dmax创建眼镜盒模型的技巧。
  7. 使用webpack脚手架创建一个vue项目
  8. windows下配置PPPoE服务器
  9. python修改电脑名称_windows更改计算机名称
  10. FPGA VHDL语言实现FIR低通滤波器,包含完整代码,可在modelsim仿真 可仿真