[学习笔记]PageRank算法
参考资料:改变世界的谷歌PageRank算法
pagerank算法用于计算节点重要度
思想
如果网页被更多的入度(被引用),则网页更重要。
被重要网站引用比被普通网站引用更加凸显重要性。
所以考虑一个网站是否重要,需要看引用它的网站是否重要,这就成了一个递归的问题。
理解pagerank的五个角度
迭代求解线性方程组

例子

这里看上去有三个方程,三个未知数,其实只有2个方程。
虽然高斯消元可以求解,但是可扩展性较差。
节点j的rank值 r j r_j rj是考虑所有到 j j j的节点的rank值,各自除以它的出度,再求和。
迭代求解

迭代左乘M矩阵
迭代的过程用矩阵表示:(左边的矩阵的i行j列 A i j 有非零值 A_{ij}有非零值 Aij有非零值表示存在第j个节点到第i个节点的有向边)

左边的矩阵称为列概率矩阵(列转移矩阵/列替代矩阵,column stochastic matrix)
右边的向量叫pagerank向量
矩阵的特征向量
迭代公式:
r = M ⋅ r r=M \cdot r r=M⋅r其实可以看作是
1 ⋅ r = M ⋅ r 1 \cdot r=M \cdot r 1⋅r=M⋅r
从这个角度看,pagerank向量就是M矩阵的特征值为1的特征向量。

对于Column Stochastic矩阵,由Perreon-Frobenius定理,最大的特征值就是1,且存在唯一的主特征向量(特征值1对应的特征向量),向量所有元素求和为1。
通过幂迭代的方式,可以快速求解pagerank向量。
随机游走
随机游走->计数求和->归一化为概率,得到的就是pagerank向量。


马尔科夫链


求解pagerank


收敛性分析

1. 是否收敛-收敛,收敛到同一个结果
Ergodic Theorem
根据Ergodic Theorem,对于不可约(irreducible)和非周期(aperiodic)的马尔可夫链:
1.存在一个唯一的稳定的马尔科夫分布
2.并且所有初始分布收敛到同一个分布
可约(reducible)马尔可夫链和不可约马尔可夫链
可约是存在孤立的状态
不可约是所有状态都可达

周期马尔可夫链和非周期马尔可夫链

2.结果是不是代表重要度-两类问题
Spider trap问题
所有的出度边都在group里面,导致这个group吸收了所有的重要度

dead end问题
没有出度,重要度最终为0

对于这两种情况,即使收敛了,也不是合理的网络重要度。
例子




解决办法
spider trap问题的解决办法

dead end的解决办法

最终解决办法


pagerank的升级-mapreduce的工作

pagerank算法用于计算节点相似度-用于推荐系统
给定:一个bipartite graph用于表示用户和商品的交互
目标:寻找与指定节点最相似的节点
假设:被同一个用户访问过的节点,更可能是相似的
pagerank,随机游走视角的启发
pagerank的一种解释是:随机游走,并有概率随机传送到网络中的任意一个节点,继续游走
Topic-Specific PageRank(也称为personalized pagerank):随机游走,并有传送到指定的一些节点,继续游走
random walks with restarts:随机游走,并有传送到指定的一个节点,继续游走
随机游走访问次数-相似性的度量
给定一个节点集query_nodes,模拟一个随机游走:
- 记录访问次数
- 在概率 α \alpha α下,在query_nodes中重启walk
- 有高访问次数的节点则和query_nodes中的点有更高的相似性
伪代码

优点

代码实战
参考资料:https://www.bilibili.com/video/BV1Wg411H7Ep/?p=16&spm_id_from=pageDriver
相关文章:
[学习笔记]PageRank算法
参考资料:改变世界的谷歌PageRank算法 pagerank算法用于计算节点重要度 思想 如果网页被更多的入度(被引用),则网页更重要。 被重要网站引用比被普通网站引用更加凸显重要性。 所以考虑一个网站是否重要,需要看引用它的网站是否重要&#…...
【洛谷算法题】P5704-字母转换【入门1顺序结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5704-字母转换【入门1顺序结构】🌏题目描述🌏输入格式&a…...
Pytorch——查找、替换module相关操作
nn.Module类可用操作 1. model.named_parameters() # 遍历模型的所有参数并打印它们的名称和形状 for name, param in model.named_parameters():print(f"Parameter Name: {name}, Parameter Shape: {param.shape}")输出示例: Parameter Name: conv1.w…...
组件安全以及漏洞复现
组件安全 1. 概述 A9:2017-使⽤含有已知漏洞的组件 A06:2021-Vulnerable and Outdated Components 组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成…...
人工智能安全-4-小样本问题
0 提纲 小样本学习问题数据增强基于模型的小样本学习基于算法的小样本学习相关资源1 小样本学习问题 在小样本监督分类中,通常将问题表述为 N-way-K-shot分类, 当K = 1,称为one-shot learning;当K = 0时,成为zero-shot learning(ZSL)。ZSL就要求学习的问题具备充足的先…...
iOS 17中的Safari配置文件改变了游戏规则,那么如何设置呢
Safari在iOS 17中最大的升级是浏览配置文件——能够在一个应用程序中创建单独的选项卡和书签组。这些也可以跟随你的iPad和Mac,但在本指南中,我们将向你展示如何使用运行iOS 17的iPhone。 你可能有点困惑,为什么Safari中没有明显的位置可以添…...
AC自动机小结
AC自动机是一种多模匹配算法。 常见操作 查询一个串的子串 任何一个串的子串都可以表示成他的一个前缀的后缀 他的前缀可以在Trie树上查询 后缀相当于其在fail树上的所有祖先 例1 : HDU4117 接上。首先AC自动机要学会离线。 对于每个点查询祖先复杂度很大。…...
【C++】构造函数分类 ③ ( 调用有参构造函数的方法 | 括号法 | 等号法 )
文章目录 一、在不同的内存中创建类的实例对象1、括号法调用构造函数2、等号法调用构造函数 二、完整代码示例 一、在不同的内存中创建类的实例对象 在上一篇博客 【C】构造函数分类 ② ( 在不同的内存中创建类的实例对象 | 栈内存中创建实例对象 | new 关键字创建对象 ) 中 , …...
uni-app 之 uni.request 网络请求API接口
uni-app 之 uni.request 网络请求API接口 image.png <template><!-- vue2的<template>里必须要有一个盒子,不能有两个,这里的盒子就是 view--><view>--- uni.request 网络请求API接口 ---<view><!-- 免费的测试接口 --…...
代码随想录33|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯, 34. 在排序数组中查找元素的第一个和最后一个位置
509. 斐波那契数 链接地址 class Solution { public:int fib(int n) {if (n < 1) return n;vector<int> dp(n 1);dp[0] 0;dp[1] 1;for (int i 2; i < n 1; i) {dp[i] dp[i - 1] dp[i - 2];}return dp[n];} };70. 爬楼梯 链接地址 class Solution { public…...
什么是Executors框架?
Executors 是 Java 标准库中的一个工具类,位于 java.util.concurrent 包中,用于创建和管理线程池。它提供了一组静态工厂方法,用于快速创建不同类型的线程池。Executors 框架的目标是使线程池的创建和管理更加简单和方便。 以下是一些 Executors 框架的常用工厂方法和线程池…...
【kafka】kafka单节点/集群搭建
概述 本章节将分享不同版本的kafka单节点模式和集群模式搭建。 在kafka2.8版本之前,需要依赖zookeeper服务,而在kafka2.8版本(包括)之后,可以不在依赖zookeeper服务。本章节将分kafka2.8版本之前的版本和之后的版本分…...
如何进行机器学习
进行机器学习主要包含以下步骤: 获取数据:首先需要获取用于学习的数据,数据的质量和数量都会影响机器学习的效果。如果自己的数据量较少,可以尝试在网上寻找公开数据集进行训练,然后使用自己的数据进行微调。另一种方…...
Vue项目使用axios配置请求拦截和响应拦截以及判断请求超时处理提示
哈喽大家好啊,最近做Vue项目看到axios axios官网:起步 | Axios 中文文档 | Axios 中文网 (axios-http.cn) 重要点: axios是基于Promise封装的 axios能拦截请求和响应 axios能自动转换成json数据 等等 安装: $ npm i…...
《DevOps实践指南》- 读书笔记(四)
DevOps实践指南 Part 3 第一步 :流动的技术实践11. 应用和实践持续集成11.1 小批量开发与大批量合并11.2 应用基于主干的开发实践11.3 小结 12. 自动化和低风险发布12.1 自动化部署流程12.1.1 应用自动化的自助式部署12.1.2 在部署流水线中集成代码部署 12.2 将部署…...
盲打键盘的正确指法指南
简介 很多打字初学者,并不了解打字的正确指法规范,很容易出现只用两根手指交替按压键盘的“二指禅”情况。虽然这样也能实现打字,但是效率极低。本文将简单介绍盲打键盘的正确指法,以便大家在后续的学习和工作中能够提高工作效率…...
【MySQL】索引 详解
索引 详解 一. 概念二. 作用三. 使用场景四. 操作五. 索引背后的数据结构B-树B树聚簇索引与非聚簇索引 一. 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各…...
怎么通过ip地址连接共享打印机
在现代办公环境中,共享打印机已成为一种常见的需求。通过共享打印机,多个用户可以在网络上共享同一台打印机,从而提高工作效率并减少设备成本。下面虎观代理小二二将介绍如何通过IP地址连接共享打印机。 确定打印机的IP地址 首先࿰…...
迅为i.MX8mm小尺寸商业级/工业级核心板
尺寸: 50mm*50mm CPU: NXP i.MX8M Mini 主频: 1.8GHz 架构: 四核Cortex-A53,单核Cortex-M4 PMIC: PCA9450A电源管理PCA9450A电源管理NXP全新研制配,iMX8M的电源管理芯片有六个降压稳压器、五…...
vue中v-for循环数组使用方法中splice删除数组元素(错误:每次都删掉点击的下面的一项)
总结:平常使用v-for的key都是使用index,这里vue官方文档也不推荐,这个时候就出问题了,我们需要key为唯一标识,这里我使用了时间戳(new Date().getTime())处理比较复杂的情况, 本文章…...
分布式电池管理系统:基于微控制器架构的智能电池保护与均衡解决方案
分布式电池管理系统:基于微控制器架构的智能电池保护与均衡解决方案 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS SmartBMS是一个开源的智能电池管理系统,专…...
猫抓插件:让网页资源捕获变得高效简单的浏览器扩展解决方案
猫抓插件:让网页资源捕获变得高效简单的浏览器扩展解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字时代,我们每天浏览网页时都会遇到各种有价值的媒体资源——可…...
BepInEx游戏插件加载器完全指南:从入门到精通Unity游戏扩展工具
BepInEx游戏插件加载器完全指南:从入门到精通Unity游戏扩展工具 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 如何用BepInEx解锁游戏自定义功能?解决玩家…...
深求·墨鉴实战教程:DeepSeek-OCR-2 API接入企业OA系统实现自动归档
深求墨鉴实战教程:DeepSeek-OCR-2 API接入企业OA系统实现自动归档 1. 引言:企业文档管理的痛点与解决方案 在日常办公中,企业每天都会产生大量的纸质文档和电子文件,包括合同、报表、会议纪要、审批单等。传统的人工归档方式不仅…...
Python 字典遍历全攻略:5 种常用方法 + 性能对比 + 实战优化技巧
在 Python 开发中,字典(dict) 是最常用的数据结构之一,以键值对形式存储数据,具备查询快、易操作的特点。而字典的遍历是日常开发中高频操作 —— 从简单的数据读取,到大规模数据处理、接口返回值解析&…...
OpenClaw语音交互:nanobot对接Whisper实现声控任务触发
OpenClaw语音交互:nanobot对接Whisper实现声控任务触发 1. 为什么需要语音交互能力 作为一个长期使用OpenClaw进行个人工作流自动化的用户,我一直在思考如何让这个工具更加"无感"地融入日常。键盘输入固然高效,但在某些场景下——…...
OpenClaw对接Qwen3-32B-Chat私有镜像:RTX4090D本地部署全流程
OpenClaw对接Qwen3-32B-Chat私有镜像:RTX4090D本地部署全流程 1. 为什么选择本地私有化部署? 去年冬天,当我第一次尝试用OpenClaw自动化处理周报时,发现公有云API的响应延迟和隐私顾虑成了瓶颈。直到在星图镜像广场发现Qwen3-32…...
避坑指南:SpringBoot整合Drools 7.20时热部署冲突的解决方案
SpringBoot与Drools 7.20热部署冲突深度排查指南 当SpringBoot的devtools热部署功能遇上Drools规则引擎,就像两个高效率的工人同时修改同一台机器——看似都能独立工作,组合时却可能引发难以察觉的运行时故障。本文将带您深入这个典型的技术冲突现场&…...
Llama-3.2V-11B-cot应用落地:农业病虫害图谱跨季节推理验证系统
Llama-3.2V-11B-cot应用落地:农业病虫害图谱跨季节推理验证系统 1. 项目背景与价值 农业病虫害防治一直是农业生产中的重大挑战。传统方法依赖人工观察和经验判断,存在效率低、准确性不足等问题。Llama-3.2V-11B-cot多模态大模型为解决这一难题提供了创…...
ESP32开发实战:5分钟搞定MicroPython调用C库驱动LED(附完整代码)
ESP32混合编程实战:用MicroPython调用C库实现高性能LED控制 在物联网设备开发中,ESP32凭借其出色的性价比和丰富的功能接口成为硬件开发者的首选。而MicroPython作为嵌入式领域的Python实现,以其简洁的语法和快速的开发周期赢得了大量开发者的…...

