Pagerank学习笔记

news2024/11/17 5:51:24

前言

通过b站视频学习以及网上资料整理后进行学习笔记的撰写,只包含pr的一些简单原理及其应用。不包括pr的自定义实现。

一、pagerank简介

背景简介

PageRank算法 由Google创始人Larry Page 在斯坦福读大学时提出,又称PR,佩奇排名。主要针对网页进行排名,计算网站的重要性,优化搜素引擎的搜索结果。PageRank把互联网表示为由网页节点和引用链接构成的有向图,通过链接结构,计算网页节点重要度。来自重要网页节点的引用链接,权重更高。

PR值是表示其重要性的因子

两个假设

 数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。

质量假设:指向页面一的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面一,则页面一越重要。

入链和出链:1、入链数:指向该节点的链接数。2、出链数:由该节点指出的链接数。

优点:通过网页之间的链接来决定网页重要性,一定程度消除了人为对排名结果的影响。

二、pagerank算法介绍

$\operatorname{PR}(\mathrm{a})_{\mathrm{i}+1}=\sum_{\mathrm{i}=0}^{\mathrm{n}} \frac{\mathrm{PR}(\mathrm{Ti})_{\mathrm{i}}}{\mathrm{L}(\mathrm{Ti})}$

  • PR(a)表示当前节点a的PR值
  • PR(Ti)表示其他各个节点(指向a)的PR值
  • L(Ti)   表示其他节点(指向a)的出链数
  • i代表循环次数
  • 各个点的初始PR值为1/n,n代表网页个数

实例计算讲解

以上图进行讲解,初始值各个点PR值均为1/4,当i = 1时

L(C)=2,L(D)=1    

因为C的出链数为2(指向A和D),D的出链数为1(指向A)

PR(C)和PR(D)的初始值均为1/4

 其他同理计算后得到如下表:

 矩阵化表达

 转化为右边矩阵。从A->A的概率为0,A->B的概率是1/2,A->C的概率是1/2,A->D的概率是0.(因为A指向B和C,所以分别为1/2,而不指向A和D,所以为0)。其他数据同理可得。

PR(a) = M*V

上述矩阵成为M矩阵,那么V矩阵呢?V是上一次的PR值构成的列向量。

如,初始值的PR构成的列向量如下所示:

计算之后所得结果和前面的表格相同 :

 

 pagerank的一些问题

 Dead Ends问题

 通过多次迭代后发现,所有的PR值都会归为0

 解决办法:修正M矩阵

 如何得到右边矩阵?

首先,由于A节点对应的是010,不满足第一行条件,改为000.
B节点对应的是000,满足第一行条件,所以改为111.
C节点对应010,同A,改为000
所以得到的矩阵a=[0,0,0,1,1,1,0,0,0]

 再乘以1/3即可得到右边矩阵。

所以,该方法计算PR值的完整公式为:

PR = (M + a^{^{T}}(\frac{e}{n}))*V

  •  a=[a0,a1,a2,...,an],当有一列全为0时(该节点没有出链),ai=1,其他时候ai=0
  • e为由1填满的列矩阵
  • n为M矩阵的行/列数
  • V为PR值的矩阵

 Spider Traps问题

 多次迭代后,发现A的PR值趋近于1,其他节点趋近于0

 解决办法:Random Teleport

 将节点图转换为转移概率矩阵,修正矩阵M

 pagerank最终修正公式

 $P R(a)=\left[\beta\left(M+a^T\left(\frac{e}{n}\right)\right)+(1-\beta) \frac{e{e T}}{n}\right]^* V$

  •  a=[a0,a1,a2,...,an],当有一列全为0时(该节点没有出链),ai=1,其他时候ai=0
  • e为由1填满的列矩阵
  • β表示跟随出链打开网页的概率
  • 1-β表示随机跳转到其他网页的概率,比如说浏览A的时候有一定概率打开B或C或D
  • ee^{T}表示由1填满的n*n的矩阵
  • n为M矩阵的行/列数
  • V是各个节点PR值构成的列向量

 pagerank的缺点

  1. 存放时间久的网站,pagerank值会越来越大,而新生成的网站增长值更慢。
  2. 查询结果可能会偏离我的搜索内容。
  3. 通过僵尸网站或链接,人为地去刷pr值。

pagerank代码应用Demo

import networkx as nx
import matplotlib.pyplot as plt

# 创建有向图
G = nx.DiGraph()

# 添加边
G.add_edge("A", "B")
G.add_edge("A", "C")
G.add_edge("B", "C")
G.add_edge("C", "A")

# 计算PageRank值
pagerank = nx.pagerank(G)

# 提取节点和PageRank值
nodes = pagerank.keys()
pr_values = pagerank.values()

# 绘制图形
plt.figure(figsize=(8, 6))
pos = nx.spring_layout(G)  # 定义节点位置
nx.draw_networkx(G, pos, node_color='lightblue', node_size=[v * 10000 for v in pr_values], alpha=0.8, font_size=12, font_color='black')
nx.draw_networkx_labels(G, pos, font_size=12, font_color='black')
plt.title("PageRank Visualization", fontsize=14)
plt.axis('off')

# 输出节点的PageRank值
labels = {node: f"{node}: {pagerank[node]*100:.2f}%" for node in nodes}
plt.text(0.5, -0.1, '\n'.join(labels.values()), horizontalalignment='center', verticalalignment='center', transform=plt.gca().transAxes, bbox=dict(facecolor='white', alpha=0.5))

plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker容器(五)Docker Compose

一、概述 1.1介绍 Docker Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,…

bootstrap+thymeleaf 页面多选回显时莫名其妙多了

bootstrapthymeleaf 页面多选回显时莫名其妙多了 问题现象问题分析问题处理总结 问题现象 今天遇到的问题的描述正如标题中的一样,就是后台管理系统在配置完内容后点击保存,回显时发现页面竟然莫名其妙多了一些数据。项目整体后台管理系统采用的是boots…

分类预测 | Matlab实现DRN深度残差网络数据分类预测

分类预测 | Matlab实现DRN深度残差网络数据分类预测 目录 分类预测 | Matlab实现DRN深度残差网络数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现DRN深度残差网络数据分类预测(完整源码和数据),运行环境为Matl…

usb_camera传输视频流编码的问题记录!

前言: 大家好,今天给大家分享的内容是,一个vip课程付费的朋友,在学习过程中遇到了一个usb采集的视频数据流,经过ffmpeg编码,出现了问题: 问题分析: 其实这个问题不难,关键…

wordpress子比主题打开文章详情页一直出现在首页的问题

遇到过几次这种情况了,不知是不是中了木马,无从下手,试了很多方法都不行快要疯了,之前试过解决不了只能重新安装,现在又出现了,第二次了,太麻烦了,突然无意中打开index.php文件发现被…

Android与RN远程过程调用的原理

Android与RN远程过程调用的原理是通过通信协议进行远程过程调用。RPC(Remote Procedure Call)是分布式系统常见的一种通信方式,从跨进程到跨物理机已经有几十年历史。 在React Native中,通信机制是一个C实现的桥,打通了Java和JS,实现了两者的…

数据被halo勒索病毒锁定?这里有恢复秘笈!

在当今数字化的社会,数据的重要性不言而喻。然而,随着网络技术的发展,数据安全问题也日益凸显。近年来,勒索病毒成为网络安全的一大威胁,其中halo勒索病毒更是让人闻风丧胆。一旦数据被这种病毒锁定,用户将…

42. 接雨水(Java)

目录 题目描述:输入:输出:代码实现: 题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入: height [0,1,0,2,1,0,1,3,2,1,2,1]输出&#xff1…

SpringCloud学习(11)-SpringCloudAlibaba-Nacos数据模型

一、Nacos数据模型 1.1、数据模型 对于Nacos配置管理,通过Namespace、Group、Date ID能够定位到一个配置集。Nacos数据模型如下所示: 1.2、命名空间(Namespace) 可用于进行不同环境的配置隔离。例如: 1)、可以隔离开发环境——测试环境和…

数据可视化高级技术Echarts(快速上手柱状图进阶操作)

目录 1.Echarts的配置 2.程序的编码 3.柱状图的实现(入门实现) 相关属性介绍(进阶): 1.标记最大值/最小值 2.标记平均值 3.柱的宽度 4. 横向柱状图 5.colorBy series系列(需要构造多组数据才能实现…

基于java实现的二手车交易网站

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea…

C++初级----string类(STL)

1、标准库中的string 1.1、sring介绍 字符串是表示字符序列的类,标准的字符串类提供了对此类对象的支,其接口类似于标准字符容器的接口,但是添加了专门用于操作的单字节字符字符串的设计特性。 string类是使用char,即作为他的字符…

蓝桥杯 【日期统计】【01串的熵】

日期统计 第一遍写的时候会错了题目的意思,我以为是一定要八个整数连在一起构成正确日期,后面发现逻辑明明没有问题但是答案怎么都是错的才发现理解错了题目的意思,题目的意思是按下标顺序组成,意思就是可以不连续,我…

vue快速入门(八)绑定方法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-if与button响应回顾事件方法写法 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

《QT实用小工具·十七》密钥生成工具

1、概述 源码放在文章末尾 该项目主要用于生成密钥&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain.h" #include "qmessag…

Spring Boot 学习(1)——环境搭建

一只老辣鸟的自我救赎 不科普&#xff0c;简单记录学习过程。 开发环境约束&#xff1a; jdk1.8 Spring Boot 1.5.9 Spring 4.3.13 Maven 3.3.3 Intellij IDEA 2017 【脑瓜灵光的开发环境随意&#xff0c;不灵光尽量按上述约束设置。看了好些教程总…

使用vue开发的前后台框架推荐

对于Vue后台前台框架&#xff0c;以下是几个值得推荐的选项&#xff1a; Element UI&#xff1a;一个基于Vue.js的桌面端组件库&#xff0c;提供了丰富的UI组件和交互方式&#xff0c;非常适合构建后台管理系统。 Element UI是一套为开发者、设计师和产品经理准备的基于Vue 2.…

蓝桥杯第十三届省赛C++B组(未完)

目录 刷题统计 修剪灌木 X进制减法 【前缀和双指针】统计子矩阵 【DP】积木画 【图DFS】扫雷 李白打酒加强版 DFS (通过64%&#xff0c;ACwing 3/11&#xff09;; DFS(AC) DP&#xff08;AC&#xff09; 砍竹子(X) 刷题统计 题目描述 小明决定从下周一开始努力刷题准…

springboot之RESTful接口与Swagger

一、RESTful GET获取资源、POST新建资源、PUT更新资源、DELETE删除资源。 RESTful两大特性 1、安全性&#xff1a;GET请求不会引起资源本身改变。 2、幂等性&#xff1a;对一个接口请求和多次请求返回的资源应该一致。 2xx&#xff1a;成功 4xx&#xff1a;客户端错误。 …

Spring Boot集成JWT快速入门demo

1.JWT是什么&#xff1f; JWT&#xff0c;英文全称JSON Web Token&#xff1a;JSON网络令牌。为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准(RFC 7519)。这个规范允许我们使用JWT在客户端和服务端之间传递安全可靠的信息。JWT是一个轻便的安全跨平台传输格式&am…