【数据挖掘】十大算法之PageRank连接分析算法

简介: 文章介绍了PageRank算法的基本概念和数学模型,包括如何通过一阶马尔科夫链定义随机游走模型以及如何计算网页的重要性评分,并提供了PageRank迭代算法的具体步骤。

1 基本概念

(1)简介

Pagerank算法是基本想法是互联网网页重要度的计算方法。PageRank可以定义在任意有向图上,后来被应用到社会影响力分析、文本摘要等多个问题。

PageRank算法的基本思想是在有向图上定义一个随机游走模型,即一阶马尔科夫链,描述随机游走者沿着有向图随机访问各个节点的行为。在一定的条件下,基线情况访问每个节点的概率收敛到平稳分布,这时各个节点的平稳概率值就是其PageRank值,表示节点的重要度。

(2)随机游走模型

给定一个含有n个结点的有向图,在有向图上定义随机游走模型,即一阶马尔科夫链,其中结点表示状态,有向边表示状态之间的转移,假设从一个结点到通过有向边相连的所有结点的转移概率相等。具体地转移矩阵是一个n阶矩阵M

$$M = \left[\begin{array}{ccc} m_{ij} \end{array}\right]_{n\times n}$$

第i行第j列的元素 m i j m_{ij} mij​取值规则如下:如果结点j有k个有向边连出,并且结点i是其连出的一个结点,则
$$\begin{equation} m_{ij} = \frac{1}{k} \end{equation}$$
否则
$$\begin{equation} m_{ij} = 0,1,j=1,2,...,n。 \end{equation}$$
注意转移矩阵具有性质:
$$\begin{equation} m_{ij} ≥0\end{equation}$$
$$\begin{equation} \sum_{i=1}^{n} m_{ij} = 1 \end{equation}$$

即每个元素非负,每列元素之和为1,即矩阵M为随机矩阵。在有向图上是随机游走形成马尔科夫链,也就是说,随机游走者每经一个单位时间转一个状态,如果当前时刻在第j个结点,那么下一个时刻在第i个结点的概率是mij​,这一概率只依赖于当前的状态,与过去无关,具有马尔科夫性。

1.jpeg

在以上有向图上定义随机游走模型。结点A到B、C和D存在有向边。A以1/2的概率转移到B,100%的概率转移到C,B以1/3的概率转移到A,以1/2概率转移到D ,C以1/3的概率转移到A,1/2的概率转移到D,D以1/3的概率转移到A,1/2的概率转移到B。得到转移矩阵

2.jpeg

随机游走在某个时刻t访问各个结点的概率分布就是马尔科夫链在时刻t的状态分布,可以用一个n维列向量 Rt表示,那么时刻t+1访问各个结点的概率分布 Rt+1​满足

Rt+1=MRt

2 基本定义

给定一个包含n个结点的 v 1 , v 2 , . . , v n v_1,v2,..,v_n v1​,v2,..,vn​的强联通且非周期的有向图,在有向图上定义随机游走模型,即一阶马尔科夫链。随机游走的特点是从一个结点到有有向边的转移概率相等,转移矩阵为M,这个马尔科夫链具有平稳分布R。MR = R

平稳分布R称为这个有向图的PageRank,R的各个分量称为各个结点的PageRank值。
屏幕快照 2024-08-05 下午3.58.01.png

屏幕快照 2024-08-05 下午4.00.25.png

3 一般定义

PageRank一般定义的想法是在基本定义的基础上导入平滑项。

给定一个含有n个结点 vi , i = 1 , 2 , . . . , n的任意有向图,假设考虑一个在图上随机游走模型,即一阶马尔科夫链,其转移矩阵是M,从一个结点到其连出的所有结点的转移概率相等。这个马尔科夫链未必有平稳分布。假设考虑另一个完全随机游走模型,其转移矩阵的元素全部为1/n,也就是说,任意一个结点到任意结点的转移概率都是1/n,两个转移矩阵的线性组合又构成一个新的转移矩阵,在其上可以定义一个新的马尔科夫链。容易证明这个马尔科夫链一定具有平稳分布,且平稳分布满足
屏幕快照 2024-08-05 下午4.01.46.png

式中d(0≤d≤1)是系数,称为阻尼因子,R是n维向量,1是所有分量为1的n维向量。R表示的就是有向图的一般PageRank。
屏幕快照 2024-08-05 下午4.02.18.png

屏幕快照 2024-08-05 下午4.03.00.png

一般Pagerank的定义意味着互联网浏览者,按照以下方法在网上随机游走:

在任意一个网页上,浏览者或者以概率d决定按照超链接随机跳转,这时以等概论从连接出去的超链接跳转到下一个网页;或者以概率(1-d)的决定完全随机跳转,这时以概率1/n跳转到任意一个网页。第二个机制保证从没有连接出去的超链接的网页也可以跳转出。这样可以保证平稳分布,即一般Pagerank的存在,因而一般Pagerank适用于任何结构的网络。

4 Pagerank的计算

4.1 迭代计算法

给定一个含有n个结点的有向图,转移矩阵为M,有向图的一般PageRank由迭代公式
屏幕快照 2024-08-05 下午4.03.38.png

的极限向量R确定。

PageRank的迭代算法,就是按照这个一般定义进行迭代,直至收敛。

算法过程

输入:含有n个结点的有向图,转移矩阵M,阻尼因子d,初始向量 R 0 R_0 R0​

输出:有向图的PageRank向量R。

(1)令t=0

(2)计算
屏幕快照 2024-08-05 下午4.04.00.png

(3)如果 Rt+1​与Rt​充分接近,令R = Rt=1​​,停止迭代。

(4)否则,令t = t+1,执行步骤(2)

举例:给定有向图,取d = 0.8,求图的PageRank。

解:从图21.4得知转移矩阵为
屏幕快照 2024-08-05 下午4.05.45.png

3.jpeg

4.jpeg

4.2 幂法

幂法是一个常用的Pagerank计算方法,通过近似计算矩阵的主特征值和主特征向量求得有向图的一般PageRank。

幂法主要用于近似计算矩阵的朱特征值和主特征向量。主特征值是指绝对值最大的特征值,主特征向量是其对应的特征向量。注意特征向量不是唯一的,知识其方向是确定的,乘上任意系数还是特征向量。

转移矩阵写作
屏幕快照 2024-08-05 下午4.07.14.png

其中d是阻尼因子,E是所有元素为1d n阶方阵。根据Perron-Frobenius定理,一般PageRank的向量R是矩阵A的主特征向量,主特征值是1,所以可以使用冥法近似计算PageRank。

算法过程

输入:含有n个结点的有向图,有向图的转移矩阵M,系数d,向量x0​,计算精度 ϵ:

输出:有向图的PageRankR 。

屏幕快照 2024-08-05 下午4.08.45.png

例子:给定一个如图所示的有向图,取d = 0.85,求有向图的一般PageRank。

5.jpeg

6.jpeg

7.jpeg

4. 3 代数算法

屏幕快照 2024-08-05 下午4.09.27.png

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
87 4
|
4月前
|
人工智能 算法 BI
第一周算法设计与分析 D : 两面包夹芝士
这篇文章介绍了解决算法问题"两面包夹芝士"的方法,通过找出两个数组中的最大最小值,计算这两个值之间的整数个数,包括特判不存在整数的情况。
|
23天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
54 1
|
28天前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
|
2月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
2月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
3月前
|
算法 搜索推荐 开发者
别再让复杂度拖你后腿!Python 算法设计与分析实战,教你如何精准评估与优化!
在 Python 编程中,算法的性能至关重要。本文将带您深入了解算法复杂度的概念,包括时间复杂度和空间复杂度。通过具体的例子,如冒泡排序算法 (`O(n^2)` 时间复杂度,`O(1)` 空间复杂度),我们将展示如何评估算法的性能。同时,我们还会介绍如何优化算法,例如使用 Python 的内置函数 `max` 来提高查找最大值的效率,或利用哈希表将查找时间从 `O(n)` 降至 `O(1)`。此外,还将介绍使用 `timeit` 模块等工具来评估算法性能的方法。通过不断实践,您将能更高效地优化 Python 程序。
70 4
|
3月前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
60 1
|
2月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
3月前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
195 19

热门文章

最新文章