| 第82行: |
第82行: |
| | * 对于没有blacklinks (inedges)的网页,即没人给她投票,其PageRank永远等于0。 | | * 对于没有blacklinks (inedges)的网页,即没人给她投票,其PageRank永远等于0。 |
| | | | |
| − | 对于第一个问题,给等式乘以一个小于1的常数<math> d </math>(damping factor),这个常数被翻译成阻尼系数,意思为任意时刻浏览者访问到某页面后继续访问下一个页面的概率;对于第二个问题,给等式加上一个常数。新的等式如下(<math> N </math>表示网页总数,或者节点数目,本文中该公式成为PageRank基本公式,下同): | + | 对于第一个问题,给等式乘以一个小于1的常数<math> d </math>,这个常数被翻译成阻尼系数,意思为任意时刻浏览者访问到某页面后继续访问下一个页面的概率;对于第二个问题,给等式加上一个常数。新的等式如下(<math> N </math>表示网页总数,或者节点数目,本文中该公式成为PageRank基本公式,下同): |
| | | | |
| | | | |
| 第282行: |
第282行: |
| | ===阻尼系数 Damping factor=== | | ===阻尼系数 Damping factor=== |
| | | | |
| − | 阻尼系数,公式中记为<math> d </math>,和 PR 初始值一样,d的取值也会影响PageRank算法的效率。在佩奇和布林的论文中,<math> d </math>通常被设置为0.85。 | + | 阻尼系数,公式中记为<math> d </math>,和 PR 初始值一样,d的取值也会影响PageRank算法的效率。在佩奇和布林的论文中,<math> d </math>通常被设置为<math>0.85</math>。 |
| | | | |
| | | | |
| 第323行: |
第323行: |
| | =====创建随机图 Stochastic graph===== | | =====创建随机图 Stochastic graph===== |
| | | | |
| − | 随机图是一个有向带权图,边的权重被归一化,使得每个节点的outedges的权重加起来为1。则每个边的权重即为<math>1/L(p_j)</math>,图1的随机图如下所示: | + | 随机图是一个有向带权图,边的权重被归一化,使得每个节点的outedges的权重加起来为1。则每个边的权重即为<math>1/L(p_j)</math>,实例的随机图如下所示: |
| | | | |
| | | | |
| − | [[File:Page node xishu.png|400x400px|center]] | + | [[File:Page node xishu.png|400x400px|center|图3:随机图]] |
| | | | |
| | | | |
| − | 编写代码时,比如,节点D有两条出链,D --> A和D --> B,所以他们的边权重都是0.5。源代码如下: | + | 编写代码时,比如,节点D有两条出链,D --> A和D --> B,所以他们的边权重都是<math>0.5</math>。源代码如下: |
| | | | |
| | <syntaxhighlight lang="python"> | | <syntaxhighlight lang="python"> |
| 第337行: |
第337行: |
| | {'A': {'Edge Id': u'5', 'weight': 0.5}, 'B': {'Edge Id': u'6', 'weight': 0.5}} | | {'A': {'Edge Id': u'5', 'weight': 0.5}, 'B': {'Edge Id': u'6', 'weight': 0.5}} |
| | </syntaxhighlight> | | </syntaxhighlight> |
| | + | |
| | | | |
| | =====迭代计算===== | | =====迭代计算===== |
| 第343行: |
第344行: |
| | :<math> \sum_{p_{j}\in B(p_{i})} \frac{PR(p_{j})}{L(p_{j})}</math> | | :<math> \sum_{p_{j}\in B(p_{i})} \frac{PR(p_{j})}{L(p_{j})}</math> |
| | | | |
| − | 乘以阻尼系数d,再加上(1−d)/N。源代码如下:
| + | 乘以阻尼系数<math> d </math>,再加上<math> (1−d)/N </math>。源代码如下: |
| | | | |
| | <syntaxhighlight lang="python"> | | <syntaxhighlight lang="python"> |
| 第586行: |
第587行: |
| | | | |
| | | | |
| − | 其中,<math>\boldsymbol 1</math>为N维的列向量,所有元素皆为1。在代码中,以图重的网页集合为例,可以表示该列向量为: | + | 其中,<math>\boldsymbol 1</math>为<math> N </math>维的列向量,所有元素皆为<math>1</math>。在代码中,以图重的网页集合为例,可以表示该列向量为: |
| | | | |
| | <syntaxhighlight lang="python"> | | <syntaxhighlight lang="python"> |
| 第609行: |
第610行: |
| | | | |
| | | | |
| − | :<math> M_{ij} = \ell(p_i,p_j) = \begin{Bmatrix} 1/L(p_j) , 如果j链接到i。 \\ 0 , 其他 \end{Bmatrix}</math> | + | :<math> M_{ij} = \ell(p_i,p_j) = \begin{Bmatrix} 1/L(p_j) , 如果j链接到i。 \\ 0 , 其他 \end{Bmatrix}</math> |
| | | | |
| | | | |
| | <math>L(p_j)</math>是指从<math>p_j</math>链出去得网页数目。 | | <math>L(p_j)</math>是指从<math>p_j</math>链出去得网页数目。 |
| − | 这样矩阵每一行乘以<math>R</math>,就得到了新的PR值,比如第二行(图1的节点B) | + | 这样矩阵每一行乘以<math>R</math>,就得到了新的PR值,比如第二行(图3的节点B) |
| | | | |
| | | | |
| 第625行: |
第626行: |
| | | | |
| | 以节点G为例,G给B和E投票,所以B得到<math>\frac{1}{2}</math>。 | | 以节点G为例,G给B和E投票,所以B得到<math>\frac{1}{2}</math>。 |
| − | 矩阵<math> M </math>每一列加起来都是1(值得注意的是,对于没有出链的节点,列加起来等于0,比如图1的节点A),即: | + | 矩阵<math> M </math>每一列加起来都是<math>1</math>(值得注意的是,对于没有出链的节点,列加起来等于0,比如图3的节点A),即: |
| | | | |
| | | | |
| 第678行: |
第679行: |
| | </syntaxhighlight> | | </syntaxhighlight> |
| | | | |
| − | K的逆矩阵K^-1为,
| + | K的逆矩阵<math>K^{-1}<math>为, |
| | | | |
| | <syntaxhighlight lang="python"> | | <syntaxhighlight lang="python"> |