掌握PageRank算法核心!你离Google优化高手只差一步!

news/2024/12/15 19:06:10/文章来源:https://www.cnblogs.com/JavaEdge/p/18608337

0 前言

98年前的搜索引擎体验不好:

  1. 返回结果质量不高:搜索结果不考虑网页质量,而通过时间顺序检索

  2. 易被钻空:搜索引擎基于检索词检索,页面中检索词出现的频次越高,匹配度越高,这样就会出现网页作弊的情况。有些网页为了增加搜索引擎的排名,故意增加某个检索词频率

当时Google拉里·佩奇提出PageRank算法,找到优质网页,这样Google的排序结果不仅能找到用户想要的内容,而且还会从众多网页中筛选出权重高的呈现给用户。

Google的两位创始人都是斯坦福大学的博士生,他们提出PageRank算法受到论文影响力因子的评价启发。当一篇论文被引用的次数越多,证明这篇论文的影响力越大。正是这个想法解决了当时网页检索质量不高的问题。

1 PageRank的简化模型

1.1 PageRank计算过程

4个网页A、B、C、D之间链接信息:

出链:链接出去的链接

入链:链接进来的链接。

图中A有2个入链,3个出链。

一个网页的影响力=所有入链集合的页面的加权影响力之和:

\[PR(u) = \sum_{v \in B_u} \frac{PR(v)}{L(v)} \]

u为待评估的页面,\(B\_{u}\) 为页面u的入链集合。针对入链集合中的任意页面v,它能给u带来的影响力是其自身的影响力PR(v)除以v页面的出链数量,即页面v把影响力PR(v)平均分配给了它的出链,这样统计所有能给u带来链接的页面v,得到的总和就是网页u的影响力,即为PR(u)。

出链会给被链接的页面赋予影响力,统计一个网页链出去的数量,也就是统计这个网页的跳转概率。

例中:

  • A有三个出链到B、C、D。用户访问A时,就有跳转到B、C或D可能,跳转概率均1/3
  • B有两个出链,链接到了A和D上,跳转概率为1/2

可得A、B、C、D四个网页的转移矩阵M:

\[M = \begin{bmatrix} 0 & 1/2 & 1 & 0 \\ 1/3 & 0 & 0 & 1/2 \\ 1/3 & 0 & 0 & 1/2 \\ 1/3 & 1/2 & 0 & 0 \end{bmatrix} \]

设A、B、C、D初始影响力相同:

\[W_0 = \begin{bmatrix} 1/4 \\ 1/4 \\ 1/4 \\ 1/4 \end{bmatrix} \]

第一次转移后,各页面影响力

\[w_{1} \]

变为:

\[W_1 = M W_0 = \begin{bmatrix} 0 & 1/2 & 1 & 0 \\ 1/3 & 0 & 0 & 1/2 \\ 1/3 & 0 & 0 & 1/2 \\ 1/3 & 1/2 & 0 & 0 \end{bmatrix} \begin{bmatrix} 1/4 \\ 1/4 \\ 1/4 \\ 1/4 \end{bmatrix} = \begin{bmatrix} 9/24 \\ 5/24 \\ 5/24 \\ 5/24 \end{bmatrix} \]

再用转移矩阵乘以得到\(w\_{2}\)结果,直到第n次迭代后

\[w_{n} \]

影响力不再发生变化,可收敛到(0.3333,0.2222,0.2222,0.2222),即对应A、B、C、D四个页面最终平衡状态下的影响力。

可见A页面相比于其他页面来说权重更大,也就是PR值更高。而B、C、D页面的PR值相等。

至此,模拟了一个简化PageRank计算过程,实际面临

1.2 问题

等级泄露(Rank Leak)

如一个网页没有出链,就像黑洞,吸收其他网页的影响力而不释放,最终导致其他网页PR值为0

对此,可把没有出链的节点,先从图中去掉,等计算完所有节点PR值,再加上该节点计算。但导致新的等级泄露的节点的产生,工作量还是很大。

等级沉没(Rank Sink)

如果一个网页只有出链,没有入链,计算的过程迭代下来,会导致这个网页的PR值为0(也就是不存在公式中的V)。

能否同时解决等级泄露和等级沉没?

2 PageRank的随机浏览模型

拉里·佩奇提出。他假设:用户不都按跳转链接的方式上网,还可能不论当前处啥页面,都有概率访问其他任意页面,如用户就是要直接输入网址访问其他页面,虽概率小。

所以他定义阻尼因子d,代表用户按跳转链接上网的概率,通常可取固定值0.85,而1-d=0.15则代表了用户不是通过跳转链接的方式来访问网页的,比如直接输入网址。

\[PR(u) = \frac{1-d}{N} + d \sum_{v \in B_u} \frac{PR(v)}{L(v)} \]

其中N为网页总数,这又可重新迭代网页的权重计算,因加入阻尼因子d,一定程度解决等级泄露和等级沉没。

PageRank随机浏览模型可收敛,即可得一个稳定正常PR值。

3 PageRank在社交影响力评估中的应用

网页之间形成网络-互联网,论文之间也存在相互引用,我们所处环境就是各种网络集。有网络,就有出入链,就有PR权重计算,就可用PageRank。如微博,计算某人影响力。

一个人的微博粉丝数不一定等于其实际影响力。如按PageRank,还要看粉丝质量。如果有很多明星或大V关注,这人影响力一定高。僵尸粉即使再多,影响力不高。

工作场景如脉脉,计算个人在职场的影响力。如果你的工作关系是李开复、江南春,职场影响力一定很高。反之,你是学生,在职场上被链入的关系较少,职场影响力就低。

看一个公司经营能力,也可看这家公司都和啥公司合作。如合作都是世界500强,在行业内一定领导者,客户都是小客户,即使数量多,业内影响力也不一定大。

除非像淘宝,海量中小客户,最后大客户也会上门合作。所以权重高的节点,往往有一些权重同样很高的节点在合作。

4 PageRank启发

算是Google搜索引擎重要的技术之一,在1998年帮助Google获得了搜索引擎的领先优势,现在PageRank已经比原来复杂很多,但思想依然带给启发,如想:

  • 自媒体影响力提高,尽量混在大V圈
  • 找高职位工作,尽量结识公司高层或认识更多猎头,因为猎头和很多高职位的人员都有链接。

也可帮我们识别链接农场。链接农场指网页为链接而链接,填充一些无用内容。这些页面相互链接或指向某网页,从而想得到更高权重。

5 总结

本文讨论了PageRank算法原理,对简化PageRank模型模拟。针对简化模型中存在的等级泄露和等级沉没这两个问题,PageRank的随机浏览模型引入了阻尼因子d解决。

同样,PageRank有很广的应用领域,在许多网络结构中都有应用,如计算个人微博影响力。社交网络中,链接质量很重要。

本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发挖掘经验
  • 推荐系统项目

目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

  • 编程严选网

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853431.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ApacheDirectoryStudio如何安装和使用?附安装包

前言 大家好,我是小徐啊。ldap数据库是我们Java开发中,经常会用到的一种数据库。这种数据库是树形结构的,和平常的mysql等数据库还不太一样。但目前对应连接ldap数据库的连接工具比较少,且功能也不强大。今天,小徐就来介绍下一款比较好的连接ldap数据库的连接功能,那就是…

服务器 数据库被攻击如何处理

最近系统有点卡,查看了一下系统事件,发现有人攻击服务器数据库。 以下是我的解决方案 1、修改密码位复杂的密码 2、修改默认数据库默认端口目前已解决下面的腾讯的小哥给的建议,总体差不多一个意思 1、服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂随机密码 ,…

字符数组及应用

这两个等价 长度都为10。这两个等价 长度都为11。如果有:则:注意: 作者QQ4577105

PyQt5 使用 QPlainTextEdit/QTextBrowser 与 Logging 结合后显示日志信息

PyQt5 使用 QPlainTextEdit/QTextBrowser 与 Logging 结合后显示日志信息 本文演示 PyQt5 如何与 Python 的标准库 Logging结合,然后输出日志信息到如:QPlainTextEdit QTextBrowser上 代码结构 本文中全部代码全在test_QPlainTextEdit_Log.py这一个文件中编码,步骤中有变动的…

2024-2025-1 20241314 《计算机基础与程序设计》第十二周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第十二周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十二周作业这个作业的目标 复习作业正文 正文教材学习内容总结引言与文件概述在《C语…

PyQt5 使用结合Logging 在 QPlainTextEdit/QTextBrowser 上显示日志信息

PyQt5 使用结合Logging 在 QPlainTextEdit/QTextBrowser 上显示日志信息 本文演示 PyQt5 如何与 Python 的标准库 Logging结合,然后输出日志信息到如:QPlainTextEdit QTextBrowser上 代码结构 本文中全部代码全在test_QPlainTextEdit_Log.py这一个文件中编码,步骤中有变动的…

uniapp+vue3+uViewPlus

1、uniapp创建项目2、 HuilderX菜单栏 工具->插件安装 -》前往插件市场安下载安装到对应的项目 导入的时候需要看广告 耐心看完 3、uview-plus在main.js中配置代码 import uviewPlus from @/uni_modules/uview-plusapp.use(uviewPlus) 4、在uni.scss中配置样式: @import…

NAS部署quark-auto-save,实现网盘资源自由

安装拉取镜像docker pull cp0204/quark-auto-save:latest一键运行容器docker run -d--name quark-auto-save-p 5005:5005-e TZ=Asia/Shanghai-v /volume1/docker/quark-auto-save:/app/config # 配置文件路径--restart unless-stoppedcp0204/quark-auto-save:latest系统配置首次…

索引与性能优化

title: 索引与性能优化 date: 2024/12/15 updated: 2024/12/15 author: cmdragon excerpt: 索引是数据库性能优化的重要工具,通过建立索引,可以加速数据的检索和查询操作,从而提高数据库的响应速度。虽然索引能显著改善数据访问性能,但不当的使用也可能导致性能下降。 ca…

Differential Transformer: 通过差分注意力机制提升大语言模型性能

Transformer模型已经成为大语言模型(LLMs)的标准架构,但研究表明这些模型在准确检索关键信息方面仍面临挑战。今天介绍一篇名叫Differential Transformer的论文,论文的作者观察到一个关键问题:传统Transformer模型倾向于过分关注不相关的上下文信息,这种"注意力噪声…

idea简单调试

1.行断点是一个小红原点 然后,在main方法中点击调试,程序运行时会在该点停顿,点击 恢复程序就会继续运行2.详细断点 | 源断点 shift+左键唤出断点是一个小黄圆点,并且有一些信息 若点击挂起再点完成,将会变为小红圆点 点击调试,控制台给出断点位置 3.方法断点 是一个小…

30KW储能PCS逆变器双向变流器设计方案

本方案介绍了一款30KW储能PCS逆变双向变流器方案,是双向DCDC的以及三电平逆变PCS技术。此方案包含了原理图(PDF)格式的,包含控制板,滤波板,DCDC模块以及逆变板。本方案是DSP+CPLD的控制架构,DSP是德州仪器(TI)TMS320F28234PGFA,CPLD是Altera的EPM240T100I5。两个处理…