目录

  • 1 PageRank的定义
    • 1.1 基本想法
    • 1.2 有向图和随机游走模型
      • 1 有向图(directed graph)
      • 2 随机游走模型
      • 3 PageRank的基本定义
      • 4 PageRank的一般定义
  • 2 PageRank的计算
    • 2.1 迭代算法
    • 2.2 幂法(power method)
    • 2.3 代数算法
  • 总结

PageRank算法是图的链接分析(link analysis)的代表性算法,属于图数据上的无监督学习方法。
PageRank算法最初作为互联网网页重要度的计算方法,1996年由Page和Brin提出,并用于谷歌搜索引擎的网页排序。
其他应用还有:社会影响力分析、文本摘要等。

1 PageRank的定义

1.1 基本想法

PageRank是定义在网页集合上的一个函数,它对每个网页给出一个正实数,表示网页的重要程度。

假设互联网是一个有向图,在其基础上定义随机游走模型,即一阶马尔科夫链,表示网页浏览者在互联网上随机浏览网页的过程。假设浏览者在每个网页依照链接出去的超链接以等概率跳转到下一个网页,并在网上持续不断进行这样的跳转,这个过程形成一阶马尔科夫链。PageRank表示这个马尔科夫链的平稳分布。每个网页的PageRank值就是平稳概率。

两种直观情形:
①一个网页,如果指向该网页的超链接越多,随机跳转到该网页的概率也就越高,该网页的PageRank值就越高,这个网页也就越重要;
②一个网页,如果指向该网页的PageRank值越高,随机跳转到该网页的概率也就越高,该网页的PageRank值就越高,这个网页也就越重要。

PageRank的计算通常是一个迭代过程。先假设一个初始分布,通过迭代,不断计算所有网页的PageRank值,直到收敛为止。

1.2 有向图和随机游走模型

1 有向图(directed graph)

定义 有向图记作G=(V,E)G=(V,E)G=(V,E),其中V(vertex)和E(edge)分别表示节点和有向边的集合。

强连通图(strongly connected graph): 如果一个有向图从其中任何一个结点出发可以到达其他任何一个结点。

周期性结点: 假设k是一个大于1的自然数,如果从有向图的一个结点出发返回到这个结点的路径长度都是k个倍数,那么称这个结点为周期性结点。

非周期性图(aperiodic graph): 一个有向图不含有周期性结点。否则为周期性图。

2 随机游走模型

定义 给定一个含有n个结点的有向图,在有向图上定义random walk模型,其中结点表示状态,有向边表示状态之间的转移,假设从一个结点到通过有向边相连的所有结点的转移概率相等。具体地,转移矩阵(stochastic matrix)是一个n阶矩阵M=(mij)n×nM=(m_{ij})_{n\times n}M=(mij​)n×n​,mijm_{ij}mij​取值规则为:如果结点iii有kkk个有向边连出,并且结点jjj是其连出的一个结点,则mij=1km_{ij}=\frac{1}{k}mij​=k1​;否则mij=0,i,j=1,2,...,nm_{ij}=0,i,j=1,2,...,nmij​=0,i,j=1,2,...,n。
转移矩阵具有如下简单性质:
①mij≥0m_{ij}\ge 0mij​≥0;
②∑j=1nmij=1\sum_{j=1}^nm_{ij}=1∑j=1n​mij​=1。

随机游走在某个时刻t访问各个结点的概率分布就是马尔科夫链在时刻t的状态分布,用一个行向量RtR_tRt​表示,那么在时刻t+1访问各个结点的概率分布为Rt+1R_{t+1}Rt+1​满足Rt+1=RtMR_{t+1}=R_tMRt+1​=Rt​M。

3 PageRank的基本定义

定义 给定一个包含n个结点v1,v2,...,vnv_1,v_2,...,v_nv1​,v2​,...,vn​的强连通且非周期性的有向图,在有向图上定义随机游走模型。这个马尔科夫链具有平稳分布RM=RRM=RRM=R,平稳分布R称为这个有向图的PageRank。R的各个分量称为各个结点的PageRank值。
R=[PR(v1)PR(v2)⋯PR(vn)]R=[PR(v_1)\quad PR(v_2)\quad\cdots\quad PR(v_n)]R=[PR(v1​)PR(v2​)⋯PR(vn​)]
显然有:
①PR(vi)≥0,i=1,2,...,nPR(v_i)\ge0,i=1,2,...,nPR(vi​)≥0,i=1,2,...,n;
②∑i=1nPR(vi)=1\sum_{i=1}^nPR(v_i)=1∑i=1n​PR(vi​)=1;
③PR(vi)=∑vj∈M(vi)PR(vj)L(vj),i=1,2,...,nPR(v_i)=\sum\limits_{v_j\in M(v_i)}\frac{PR(v_j)}{L(v_j)},i=1,2,...,nPR(vi​)=vj​∈M(vi​)∑​L(vj​)PR(vj​)​,i=1,2,...,n;
这里表示指向结点viv_ivi​的结点集合,L(vj)L(v_j)L(vj​)表示结点vjv_jvj​连出的有向边的个数。

PR(v1)=∑j=1nPR(vj)mj1PR(v_1)=\sum\limits_{j=1}^nPR(v_j)m_{j1}PR(v1​)=j=1∑n​PR(vj​)mj1​
因为是非周期的,所以是无环图,所以m11=0m_{11}=0m11​=0,所以
PR(v1)=∑j=2nPR(vj)mj1PR(v_1)=\sum\limits_{j=2}^nPR(v_j)m_{j1}PR(v1​)=j=2∑n​PR(vj​)mj1​
mj1=1L(vj)m_{j1}=\frac{1}{L(v_j)}mj1​=L(vj​)1​,所以
PR(v1)=∑j=2nPR(vj)L(vj)PR(v_1)=\sum\limits_{j=2}^n\frac{PR(v_j)}{L(v_j)}PR(v1​)=j=2∑n​L(vj​)PR(vj​)​。

定理 强连通且非周期的有限状态马尔科夫链,有唯一平稳分布存在,并且当时间趋于无穷时状态分布收敛于唯一的平稳分布。

#mermaid-svg-AhCx5bpa55XR4T42 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-AhCx5bpa55XR4T42 .label text{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .node rect,#mermaid-svg-AhCx5bpa55XR4T42 .node circle,#mermaid-svg-AhCx5bpa55XR4T42 .node ellipse,#mermaid-svg-AhCx5bpa55XR4T42 .node polygon,#mermaid-svg-AhCx5bpa55XR4T42 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-AhCx5bpa55XR4T42 .node .label{text-align:center;fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .node.clickable{cursor:pointer}#mermaid-svg-AhCx5bpa55XR4T42 .arrowheadPath{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-AhCx5bpa55XR4T42 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-AhCx5bpa55XR4T42 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-AhCx5bpa55XR4T42 .edgeLabel rect{opacity:0.9}#mermaid-svg-AhCx5bpa55XR4T42 .edgeLabel span{color:#333}#mermaid-svg-AhCx5bpa55XR4T42 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-AhCx5bpa55XR4T42 .cluster text{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-AhCx5bpa55XR4T42 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-AhCx5bpa55XR4T42 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-AhCx5bpa55XR4T42 .actor-line{stroke:grey}#mermaid-svg-AhCx5bpa55XR4T42 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-AhCx5bpa55XR4T42 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-AhCx5bpa55XR4T42 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-AhCx5bpa55XR4T42 .sequenceNumber{fill:#fff}#mermaid-svg-AhCx5bpa55XR4T42 #sequencenumber{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-AhCx5bpa55XR4T42 .messageText{fill:#333;stroke:#333}#mermaid-svg-AhCx5bpa55XR4T42 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-AhCx5bpa55XR4T42 .labelText,#mermaid-svg-AhCx5bpa55XR4T42 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-AhCx5bpa55XR4T42 .loopText,#mermaid-svg-AhCx5bpa55XR4T42 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-AhCx5bpa55XR4T42 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-AhCx5bpa55XR4T42 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-AhCx5bpa55XR4T42 .noteText,#mermaid-svg-AhCx5bpa55XR4T42 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-AhCx5bpa55XR4T42 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-AhCx5bpa55XR4T42 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-AhCx5bpa55XR4T42 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-AhCx5bpa55XR4T42 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .section{stroke:none;opacity:0.2}#mermaid-svg-AhCx5bpa55XR4T42 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-AhCx5bpa55XR4T42 .section2{fill:#fff400}#mermaid-svg-AhCx5bpa55XR4T42 .section1,#mermaid-svg-AhCx5bpa55XR4T42 .section3{fill:#fff;opacity:0.2}#mermaid-svg-AhCx5bpa55XR4T42 .sectionTitle0{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .sectionTitle1{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .sectionTitle2{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .sectionTitle3{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-AhCx5bpa55XR4T42 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .grid path{stroke-width:0}#mermaid-svg-AhCx5bpa55XR4T42 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-AhCx5bpa55XR4T42 .task{stroke-width:2}#mermaid-svg-AhCx5bpa55XR4T42 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .taskText:not([font-size]){font-size:11px}#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-AhCx5bpa55XR4T42 .task.clickable{cursor:pointer}#mermaid-svg-AhCx5bpa55XR4T42 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-AhCx5bpa55XR4T42 .taskText0,#mermaid-svg-AhCx5bpa55XR4T42 .taskText1,#mermaid-svg-AhCx5bpa55XR4T42 .taskText2,#mermaid-svg-AhCx5bpa55XR4T42 .taskText3{fill:#fff}#mermaid-svg-AhCx5bpa55XR4T42 .task0,#mermaid-svg-AhCx5bpa55XR4T42 .task1,#mermaid-svg-AhCx5bpa55XR4T42 .task2,#mermaid-svg-AhCx5bpa55XR4T42 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutside0,#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutside2{fill:#000}#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutside1,#mermaid-svg-AhCx5bpa55XR4T42 .taskTextOutside3{fill:#000}#mermaid-svg-AhCx5bpa55XR4T42 .active0,#mermaid-svg-AhCx5bpa55XR4T42 .active1,#mermaid-svg-AhCx5bpa55XR4T42 .active2,#mermaid-svg-AhCx5bpa55XR4T42 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-AhCx5bpa55XR4T42 .activeText0,#mermaid-svg-AhCx5bpa55XR4T42 .activeText1,#mermaid-svg-AhCx5bpa55XR4T42 .activeText2,#mermaid-svg-AhCx5bpa55XR4T42 .activeText3{fill:#000 !important}#mermaid-svg-AhCx5bpa55XR4T42 .done0,#mermaid-svg-AhCx5bpa55XR4T42 .done1,#mermaid-svg-AhCx5bpa55XR4T42 .done2,#mermaid-svg-AhCx5bpa55XR4T42 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-AhCx5bpa55XR4T42 .doneText0,#mermaid-svg-AhCx5bpa55XR4T42 .doneText1,#mermaid-svg-AhCx5bpa55XR4T42 .doneText2,#mermaid-svg-AhCx5bpa55XR4T42 .doneText3{fill:#000 !important}#mermaid-svg-AhCx5bpa55XR4T42 .crit0,#mermaid-svg-AhCx5bpa55XR4T42 .crit1,#mermaid-svg-AhCx5bpa55XR4T42 .crit2,#mermaid-svg-AhCx5bpa55XR4T42 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-AhCx5bpa55XR4T42 .activeCrit0,#mermaid-svg-AhCx5bpa55XR4T42 .activeCrit1,#mermaid-svg-AhCx5bpa55XR4T42 .activeCrit2,#mermaid-svg-AhCx5bpa55XR4T42 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-AhCx5bpa55XR4T42 .doneCrit0,#mermaid-svg-AhCx5bpa55XR4T42 .doneCrit1,#mermaid-svg-AhCx5bpa55XR4T42 .doneCrit2,#mermaid-svg-AhCx5bpa55XR4T42 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-AhCx5bpa55XR4T42 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-AhCx5bpa55XR4T42 .milestoneText{font-style:italic}#mermaid-svg-AhCx5bpa55XR4T42 .doneCritText0,#mermaid-svg-AhCx5bpa55XR4T42 .doneCritText1,#mermaid-svg-AhCx5bpa55XR4T42 .doneCritText2,#mermaid-svg-AhCx5bpa55XR4T42 .doneCritText3{fill:#000 !important}#mermaid-svg-AhCx5bpa55XR4T42 .activeCritText0,#mermaid-svg-AhCx5bpa55XR4T42 .activeCritText1,#mermaid-svg-AhCx5bpa55XR4T42 .activeCritText2,#mermaid-svg-AhCx5bpa55XR4T42 .activeCritText3{fill:#000 !important}#mermaid-svg-AhCx5bpa55XR4T42 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-AhCx5bpa55XR4T42 g.classGroup text .title{font-weight:bolder}#mermaid-svg-AhCx5bpa55XR4T42 g.clickable{cursor:pointer}#mermaid-svg-AhCx5bpa55XR4T42 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-AhCx5bpa55XR4T42 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-AhCx5bpa55XR4T42 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-AhCx5bpa55XR4T42 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-AhCx5bpa55XR4T42 .dashed-line{stroke-dasharray:3}#mermaid-svg-AhCx5bpa55XR4T42 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 .commit-id,#mermaid-svg-AhCx5bpa55XR4T42 .commit-msg,#mermaid-svg-AhCx5bpa55XR4T42 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-AhCx5bpa55XR4T42 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-AhCx5bpa55XR4T42 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-AhCx5bpa55XR4T42 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-AhCx5bpa55XR4T42 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-AhCx5bpa55XR4T42 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-AhCx5bpa55XR4T42 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-AhCx5bpa55XR4T42 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-AhCx5bpa55XR4T42 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-AhCx5bpa55XR4T42 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-AhCx5bpa55XR4T42 .edgeLabel text{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AhCx5bpa55XR4T42 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-AhCx5bpa55XR4T42 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-AhCx5bpa55XR4T42 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-AhCx5bpa55XR4T42 .note-edge{stroke-dasharray:5}#mermaid-svg-AhCx5bpa55XR4T42 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-AhCx5bpa55XR4T42 .error-icon{fill:#522}#mermaid-svg-AhCx5bpa55XR4T42 .error-text{fill:#522;stroke:#522}#mermaid-svg-AhCx5bpa55XR4T42 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-AhCx5bpa55XR4T42 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-AhCx5bpa55XR4T42 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-AhCx5bpa55XR4T42 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-AhCx5bpa55XR4T42 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-AhCx5bpa55XR4T42 .marker{fill:#333}#mermaid-svg-AhCx5bpa55XR4T42 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-AhCx5bpa55XR4T42 {color: rgba(0, 0, 0, 0.75);font: ;}

1/3
1/3
1/3
1/2
1/2
1
1/2
1/2
A
B
C
D

例1 求上面有向图的PageRank。(原图不会画…)

import numpy as np
M = np.array([[0, 1/3, 1/3, 1/3],[1/2, 0, 0, 1/2],[1, 0, 0, 0],[0, 1/2, 1/2, 0]])
R = np.array([1/4, 1/4, 1/4, 1/4])
for i in range(30):R = np.matmul(R, M)
print(R)
[0.33333333 0.22222222 0.22222222 0.22222222]

4 PageRank的一般定义

一般的有向图未必满足强连通且非周期性的条件。比如,在互联网,大部分网页没有链接出去的超链接,也就是说从这些网页无法跳转到其他网页,所以PageRank的基本定义不适用。

#mermaid-svg-1Zs5W74yathbJ4WS .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-1Zs5W74yathbJ4WS .label text{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .node rect,#mermaid-svg-1Zs5W74yathbJ4WS .node circle,#mermaid-svg-1Zs5W74yathbJ4WS .node ellipse,#mermaid-svg-1Zs5W74yathbJ4WS .node polygon,#mermaid-svg-1Zs5W74yathbJ4WS .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-1Zs5W74yathbJ4WS .node .label{text-align:center;fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .node.clickable{cursor:pointer}#mermaid-svg-1Zs5W74yathbJ4WS .arrowheadPath{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-1Zs5W74yathbJ4WS .flowchart-link{stroke:#333;fill:none}#mermaid-svg-1Zs5W74yathbJ4WS .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-1Zs5W74yathbJ4WS .edgeLabel rect{opacity:0.9}#mermaid-svg-1Zs5W74yathbJ4WS .edgeLabel span{color:#333}#mermaid-svg-1Zs5W74yathbJ4WS .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-1Zs5W74yathbJ4WS .cluster text{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-1Zs5W74yathbJ4WS .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-1Zs5W74yathbJ4WS text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-1Zs5W74yathbJ4WS .actor-line{stroke:grey}#mermaid-svg-1Zs5W74yathbJ4WS .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-1Zs5W74yathbJ4WS .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-1Zs5W74yathbJ4WS #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-1Zs5W74yathbJ4WS .sequenceNumber{fill:#fff}#mermaid-svg-1Zs5W74yathbJ4WS #sequencenumber{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS #crosshead path{fill:#333;stroke:#333}#mermaid-svg-1Zs5W74yathbJ4WS .messageText{fill:#333;stroke:#333}#mermaid-svg-1Zs5W74yathbJ4WS .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-1Zs5W74yathbJ4WS .labelText,#mermaid-svg-1Zs5W74yathbJ4WS .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-1Zs5W74yathbJ4WS .loopText,#mermaid-svg-1Zs5W74yathbJ4WS .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-1Zs5W74yathbJ4WS .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-1Zs5W74yathbJ4WS .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-1Zs5W74yathbJ4WS .noteText,#mermaid-svg-1Zs5W74yathbJ4WS .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-1Zs5W74yathbJ4WS .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-1Zs5W74yathbJ4WS .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-1Zs5W74yathbJ4WS .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-1Zs5W74yathbJ4WS .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .section{stroke:none;opacity:0.2}#mermaid-svg-1Zs5W74yathbJ4WS .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-1Zs5W74yathbJ4WS .section2{fill:#fff400}#mermaid-svg-1Zs5W74yathbJ4WS .section1,#mermaid-svg-1Zs5W74yathbJ4WS .section3{fill:#fff;opacity:0.2}#mermaid-svg-1Zs5W74yathbJ4WS .sectionTitle0{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .sectionTitle1{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .sectionTitle2{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .sectionTitle3{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-1Zs5W74yathbJ4WS .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .grid path{stroke-width:0}#mermaid-svg-1Zs5W74yathbJ4WS .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-1Zs5W74yathbJ4WS .task{stroke-width:2}#mermaid-svg-1Zs5W74yathbJ4WS .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .taskText:not([font-size]){font-size:11px}#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-1Zs5W74yathbJ4WS .task.clickable{cursor:pointer}#mermaid-svg-1Zs5W74yathbJ4WS .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-1Zs5W74yathbJ4WS .taskText0,#mermaid-svg-1Zs5W74yathbJ4WS .taskText1,#mermaid-svg-1Zs5W74yathbJ4WS .taskText2,#mermaid-svg-1Zs5W74yathbJ4WS .taskText3{fill:#fff}#mermaid-svg-1Zs5W74yathbJ4WS .task0,#mermaid-svg-1Zs5W74yathbJ4WS .task1,#mermaid-svg-1Zs5W74yathbJ4WS .task2,#mermaid-svg-1Zs5W74yathbJ4WS .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutside0,#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutside2{fill:#000}#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutside1,#mermaid-svg-1Zs5W74yathbJ4WS .taskTextOutside3{fill:#000}#mermaid-svg-1Zs5W74yathbJ4WS .active0,#mermaid-svg-1Zs5W74yathbJ4WS .active1,#mermaid-svg-1Zs5W74yathbJ4WS .active2,#mermaid-svg-1Zs5W74yathbJ4WS .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-1Zs5W74yathbJ4WS .activeText0,#mermaid-svg-1Zs5W74yathbJ4WS .activeText1,#mermaid-svg-1Zs5W74yathbJ4WS .activeText2,#mermaid-svg-1Zs5W74yathbJ4WS .activeText3{fill:#000 !important}#mermaid-svg-1Zs5W74yathbJ4WS .done0,#mermaid-svg-1Zs5W74yathbJ4WS .done1,#mermaid-svg-1Zs5W74yathbJ4WS .done2,#mermaid-svg-1Zs5W74yathbJ4WS .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-1Zs5W74yathbJ4WS .doneText0,#mermaid-svg-1Zs5W74yathbJ4WS .doneText1,#mermaid-svg-1Zs5W74yathbJ4WS .doneText2,#mermaid-svg-1Zs5W74yathbJ4WS .doneText3{fill:#000 !important}#mermaid-svg-1Zs5W74yathbJ4WS .crit0,#mermaid-svg-1Zs5W74yathbJ4WS .crit1,#mermaid-svg-1Zs5W74yathbJ4WS .crit2,#mermaid-svg-1Zs5W74yathbJ4WS .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-1Zs5W74yathbJ4WS .activeCrit0,#mermaid-svg-1Zs5W74yathbJ4WS .activeCrit1,#mermaid-svg-1Zs5W74yathbJ4WS .activeCrit2,#mermaid-svg-1Zs5W74yathbJ4WS .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-1Zs5W74yathbJ4WS .doneCrit0,#mermaid-svg-1Zs5W74yathbJ4WS .doneCrit1,#mermaid-svg-1Zs5W74yathbJ4WS .doneCrit2,#mermaid-svg-1Zs5W74yathbJ4WS .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-1Zs5W74yathbJ4WS .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-1Zs5W74yathbJ4WS .milestoneText{font-style:italic}#mermaid-svg-1Zs5W74yathbJ4WS .doneCritText0,#mermaid-svg-1Zs5W74yathbJ4WS .doneCritText1,#mermaid-svg-1Zs5W74yathbJ4WS .doneCritText2,#mermaid-svg-1Zs5W74yathbJ4WS .doneCritText3{fill:#000 !important}#mermaid-svg-1Zs5W74yathbJ4WS .activeCritText0,#mermaid-svg-1Zs5W74yathbJ4WS .activeCritText1,#mermaid-svg-1Zs5W74yathbJ4WS .activeCritText2,#mermaid-svg-1Zs5W74yathbJ4WS .activeCritText3{fill:#000 !important}#mermaid-svg-1Zs5W74yathbJ4WS .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-1Zs5W74yathbJ4WS g.classGroup text .title{font-weight:bolder}#mermaid-svg-1Zs5W74yathbJ4WS g.clickable{cursor:pointer}#mermaid-svg-1Zs5W74yathbJ4WS g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-1Zs5W74yathbJ4WS g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-1Zs5W74yathbJ4WS .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-1Zs5W74yathbJ4WS .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-1Zs5W74yathbJ4WS .dashed-line{stroke-dasharray:3}#mermaid-svg-1Zs5W74yathbJ4WS #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS .commit-id,#mermaid-svg-1Zs5W74yathbJ4WS .commit-msg,#mermaid-svg-1Zs5W74yathbJ4WS .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-1Zs5W74yathbJ4WS g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-1Zs5W74yathbJ4WS g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-1Zs5W74yathbJ4WS g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-1Zs5W74yathbJ4WS .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-1Zs5W74yathbJ4WS .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-1Zs5W74yathbJ4WS .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-1Zs5W74yathbJ4WS .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-1Zs5W74yathbJ4WS .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-1Zs5W74yathbJ4WS .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-1Zs5W74yathbJ4WS .edgeLabel text{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1Zs5W74yathbJ4WS .node circle.state-start{fill:black;stroke:black}#mermaid-svg-1Zs5W74yathbJ4WS .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-1Zs5W74yathbJ4WS #statediagram-barbEnd{fill:#9370db}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-state .divider{stroke:#9370db}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-1Zs5W74yathbJ4WS .note-edge{stroke-dasharray:5}#mermaid-svg-1Zs5W74yathbJ4WS .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-1Zs5W74yathbJ4WS .error-icon{fill:#522}#mermaid-svg-1Zs5W74yathbJ4WS .error-text{fill:#522;stroke:#522}#mermaid-svg-1Zs5W74yathbJ4WS .edge-thickness-normal{stroke-width:2px}#mermaid-svg-1Zs5W74yathbJ4WS .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-1Zs5W74yathbJ4WS .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-1Zs5W74yathbJ4WS .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-1Zs5W74yathbJ4WS .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-1Zs5W74yathbJ4WS .marker{fill:#333}#mermaid-svg-1Zs5W74yathbJ4WS .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-1Zs5W74yathbJ4WS {color: rgba(0, 0, 0, 0.75);font: ;}

1/3
1/3
1/3
1/2
1/2
1/2
1/2
A
B
C
D
import numpy as np
M = np.array([[0, 1/3, 1/3, 1/3],[1/2, 0, 0, 1/2],[0, 0, 0, 0],[0, 1/2, 1/2, 0]])
R = np.array([1/4, 1/4, 1/4, 1/4])
for i in range(10):R = np.matmul(R, M)
print(R)
[0.00803454 0.01170971 0.01170971 0.01170971]
可以理解为概率被结点C吸收了。

PageRank一般定义的想法是在基本定义的基础上导入平滑项。
模型1:随机游走模型,根据有向图得到的基本转移矩阵M,未必具有平稳分布;
模型2:完全随机游走模型,其转移矩阵的元素全部为1/n。

两者做线性组合构成一个新的转移矩阵,在其上定义一个新的马尔科夫链,则该马尔科夫链一定具有平稳分布,且平稳分布满足R=R(dM+1−dnE)R=R(dM+\frac{1-d}{n}E)R=R(dM+n1−d​E),d∈[0,1]d\in[0,1]d∈[0,1]是系数,称为阻尼因子(damping factor),则R表示的就是有向图的一般PageRank。
则每个结点的PageRank为PR(vi)=d∑vj∈M(vi)PR(vj)L(vj)+1−dnPR(v_i)=d\sum\limits_{v_j\in M(v_i)}\frac{PR(v_j)}{L(v_j)}+\frac{1-d}{n}PR(vi​)=dvj​∈M(vi​)∑​L(vj​)PR(vj​)​+n1−d​,所有结点的PageRank值都不会为0。

第二个机制保证从没有连接出去的超链接的网页也可以跳转出。从而可以保证平稳分布,即存在一般PageRank,因而一般PageRank适用于任何结构的网络。

2 PageRank的计算

2.1 迭代算法

给定一个含有n个结点的有向图,转移矩阵为M,有向图的一般PageRank由迭代公式Rt+1=Rt(dM+1−dnE)R_{t+1}=R_t(dM+\frac{1-d}{n}E)Rt+1​=Rt​(dM+n1−d​E)的极限向量RRR确定。

例2 令d=0.8d=0.8d=0.8,求图的PageRank。

#mermaid-svg-o626XUVZrz6Ilit0 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-o626XUVZrz6Ilit0 .label text{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .node rect,#mermaid-svg-o626XUVZrz6Ilit0 .node circle,#mermaid-svg-o626XUVZrz6Ilit0 .node ellipse,#mermaid-svg-o626XUVZrz6Ilit0 .node polygon,#mermaid-svg-o626XUVZrz6Ilit0 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-o626XUVZrz6Ilit0 .node .label{text-align:center;fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .node.clickable{cursor:pointer}#mermaid-svg-o626XUVZrz6Ilit0 .arrowheadPath{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-o626XUVZrz6Ilit0 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-o626XUVZrz6Ilit0 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-o626XUVZrz6Ilit0 .edgeLabel rect{opacity:0.9}#mermaid-svg-o626XUVZrz6Ilit0 .edgeLabel span{color:#333}#mermaid-svg-o626XUVZrz6Ilit0 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-o626XUVZrz6Ilit0 .cluster text{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-o626XUVZrz6Ilit0 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-o626XUVZrz6Ilit0 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-o626XUVZrz6Ilit0 .actor-line{stroke:grey}#mermaid-svg-o626XUVZrz6Ilit0 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-o626XUVZrz6Ilit0 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-o626XUVZrz6Ilit0 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-o626XUVZrz6Ilit0 .sequenceNumber{fill:#fff}#mermaid-svg-o626XUVZrz6Ilit0 #sequencenumber{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-o626XUVZrz6Ilit0 .messageText{fill:#333;stroke:#333}#mermaid-svg-o626XUVZrz6Ilit0 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-o626XUVZrz6Ilit0 .labelText,#mermaid-svg-o626XUVZrz6Ilit0 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-o626XUVZrz6Ilit0 .loopText,#mermaid-svg-o626XUVZrz6Ilit0 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-o626XUVZrz6Ilit0 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-o626XUVZrz6Ilit0 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-o626XUVZrz6Ilit0 .noteText,#mermaid-svg-o626XUVZrz6Ilit0 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-o626XUVZrz6Ilit0 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-o626XUVZrz6Ilit0 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-o626XUVZrz6Ilit0 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-o626XUVZrz6Ilit0 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .section{stroke:none;opacity:0.2}#mermaid-svg-o626XUVZrz6Ilit0 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-o626XUVZrz6Ilit0 .section2{fill:#fff400}#mermaid-svg-o626XUVZrz6Ilit0 .section1,#mermaid-svg-o626XUVZrz6Ilit0 .section3{fill:#fff;opacity:0.2}#mermaid-svg-o626XUVZrz6Ilit0 .sectionTitle0{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .sectionTitle1{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .sectionTitle2{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .sectionTitle3{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-o626XUVZrz6Ilit0 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .grid path{stroke-width:0}#mermaid-svg-o626XUVZrz6Ilit0 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-o626XUVZrz6Ilit0 .task{stroke-width:2}#mermaid-svg-o626XUVZrz6Ilit0 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .taskText:not([font-size]){font-size:11px}#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-o626XUVZrz6Ilit0 .task.clickable{cursor:pointer}#mermaid-svg-o626XUVZrz6Ilit0 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-o626XUVZrz6Ilit0 .taskText0,#mermaid-svg-o626XUVZrz6Ilit0 .taskText1,#mermaid-svg-o626XUVZrz6Ilit0 .taskText2,#mermaid-svg-o626XUVZrz6Ilit0 .taskText3{fill:#fff}#mermaid-svg-o626XUVZrz6Ilit0 .task0,#mermaid-svg-o626XUVZrz6Ilit0 .task1,#mermaid-svg-o626XUVZrz6Ilit0 .task2,#mermaid-svg-o626XUVZrz6Ilit0 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutside0,#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutside2{fill:#000}#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutside1,#mermaid-svg-o626XUVZrz6Ilit0 .taskTextOutside3{fill:#000}#mermaid-svg-o626XUVZrz6Ilit0 .active0,#mermaid-svg-o626XUVZrz6Ilit0 .active1,#mermaid-svg-o626XUVZrz6Ilit0 .active2,#mermaid-svg-o626XUVZrz6Ilit0 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-o626XUVZrz6Ilit0 .activeText0,#mermaid-svg-o626XUVZrz6Ilit0 .activeText1,#mermaid-svg-o626XUVZrz6Ilit0 .activeText2,#mermaid-svg-o626XUVZrz6Ilit0 .activeText3{fill:#000 !important}#mermaid-svg-o626XUVZrz6Ilit0 .done0,#mermaid-svg-o626XUVZrz6Ilit0 .done1,#mermaid-svg-o626XUVZrz6Ilit0 .done2,#mermaid-svg-o626XUVZrz6Ilit0 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-o626XUVZrz6Ilit0 .doneText0,#mermaid-svg-o626XUVZrz6Ilit0 .doneText1,#mermaid-svg-o626XUVZrz6Ilit0 .doneText2,#mermaid-svg-o626XUVZrz6Ilit0 .doneText3{fill:#000 !important}#mermaid-svg-o626XUVZrz6Ilit0 .crit0,#mermaid-svg-o626XUVZrz6Ilit0 .crit1,#mermaid-svg-o626XUVZrz6Ilit0 .crit2,#mermaid-svg-o626XUVZrz6Ilit0 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-o626XUVZrz6Ilit0 .activeCrit0,#mermaid-svg-o626XUVZrz6Ilit0 .activeCrit1,#mermaid-svg-o626XUVZrz6Ilit0 .activeCrit2,#mermaid-svg-o626XUVZrz6Ilit0 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-o626XUVZrz6Ilit0 .doneCrit0,#mermaid-svg-o626XUVZrz6Ilit0 .doneCrit1,#mermaid-svg-o626XUVZrz6Ilit0 .doneCrit2,#mermaid-svg-o626XUVZrz6Ilit0 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-o626XUVZrz6Ilit0 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-o626XUVZrz6Ilit0 .milestoneText{font-style:italic}#mermaid-svg-o626XUVZrz6Ilit0 .doneCritText0,#mermaid-svg-o626XUVZrz6Ilit0 .doneCritText1,#mermaid-svg-o626XUVZrz6Ilit0 .doneCritText2,#mermaid-svg-o626XUVZrz6Ilit0 .doneCritText3{fill:#000 !important}#mermaid-svg-o626XUVZrz6Ilit0 .activeCritText0,#mermaid-svg-o626XUVZrz6Ilit0 .activeCritText1,#mermaid-svg-o626XUVZrz6Ilit0 .activeCritText2,#mermaid-svg-o626XUVZrz6Ilit0 .activeCritText3{fill:#000 !important}#mermaid-svg-o626XUVZrz6Ilit0 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-o626XUVZrz6Ilit0 g.classGroup text .title{font-weight:bolder}#mermaid-svg-o626XUVZrz6Ilit0 g.clickable{cursor:pointer}#mermaid-svg-o626XUVZrz6Ilit0 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-o626XUVZrz6Ilit0 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-o626XUVZrz6Ilit0 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-o626XUVZrz6Ilit0 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-o626XUVZrz6Ilit0 .dashed-line{stroke-dasharray:3}#mermaid-svg-o626XUVZrz6Ilit0 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 .commit-id,#mermaid-svg-o626XUVZrz6Ilit0 .commit-msg,#mermaid-svg-o626XUVZrz6Ilit0 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-o626XUVZrz6Ilit0 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-o626XUVZrz6Ilit0 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-o626XUVZrz6Ilit0 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-o626XUVZrz6Ilit0 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-o626XUVZrz6Ilit0 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-o626XUVZrz6Ilit0 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-o626XUVZrz6Ilit0 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-o626XUVZrz6Ilit0 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-o626XUVZrz6Ilit0 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-o626XUVZrz6Ilit0 .edgeLabel text{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-o626XUVZrz6Ilit0 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-o626XUVZrz6Ilit0 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-o626XUVZrz6Ilit0 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-o626XUVZrz6Ilit0 .note-edge{stroke-dasharray:5}#mermaid-svg-o626XUVZrz6Ilit0 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-o626XUVZrz6Ilit0 .error-icon{fill:#522}#mermaid-svg-o626XUVZrz6Ilit0 .error-text{fill:#522;stroke:#522}#mermaid-svg-o626XUVZrz6Ilit0 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-o626XUVZrz6Ilit0 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-o626XUVZrz6Ilit0 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-o626XUVZrz6Ilit0 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-o626XUVZrz6Ilit0 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-o626XUVZrz6Ilit0 .marker{fill:#333}#mermaid-svg-o626XUVZrz6Ilit0 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-o626XUVZrz6Ilit0 {color: rgba(0, 0, 0, 0.75);font: ;}

1/3
1/3
1/3
1/2
1/2
1/2
1/2
1
A
B
C
D
迭代算法
import numpy as npdef IterationMethod(M, d):n = M.shape[0]E = np.ones((n, n))E = (1-d)*1/n*EM = d*M+ER = np.ones((1,n))/nfor i in range(50):R = np.matmul(R, M)print(R)M = np.array([[0, 1/3, 1/3, 1/3],[1/2, 0, 0, 1/2],[0, 0, 1, 0],[0, 1/2, 1/2, 0]])IterationMethod(M, 0.8)
[[0.10135135 0.12837838 0.64189189 0.12837838]]
计算结果表明,结点C的PageRank值超过一半。

2.2 幂法(power method)

幂法是一个常用的PageRank计算方法,通过近似计算矩阵的主特征值(dominant eigenvalue)和主特征向量(dominant eigenvector)求得有向图的一般PageRank。主特征值是指绝对值最大的特征值,主特征向量是其对应的特征向量,方向定,不唯一。

假设要求n阶矩阵A的主特征值和主特征向量,采用下面的步骤:

①任取一个初始n维向量x0x_0x0​,构造如下的一个n维向量序列
x0x1=Ax0x2=Ax1⋯xk=Axk−1x_0\quad x_1=Ax_0\quad x_2=Ax_1\quad \cdots \quad x_k=Ax_{k-1}x0​x1​=Ax0​x2​=Ax1​⋯xk​=Axk−1​

②假设矩阵A有n个特征值,按照绝对值大小排列∣λ1∣≥∣λ2∣≥⋯≥∣λn∣|\lambda_1|\ge|\lambda_2|\ge\cdots\ge|\lambda_n|∣λ1​∣≥∣λ2​∣≥⋯≥∣λn​∣
对应的n个线性的特征向量为u1,u2,⋯,unu_1,u_2,\cdots,u_nu1​,u2​,⋯,un​,这n个特征向量构成n维空间的一组基。

③将初始向量x0x_0x0​表示为u1,u2,⋯,unu_1,u_2,\cdots,u_nu1​,u2​,⋯,un​的线性组合
x0=a1u1+a2u2+⋯+anunx_0=a_1u_1+a_2u_2+\cdots+a_nu_nx0​=a1​u1​+a2​u2​+⋯+an​un​
x1=Ax0=a1Au1+a2Au2+⋯+anAun=a1λ1u1+a2λ2u2+⋯+anλnunx_1=Ax_0=a_1Au_1+a_2Au_2+\cdots+a_nAu_n=a_1\lambda_1u_1+a_2\lambda_2u_2+\cdots+a_n\lambda_nu_nx1​=Ax0​=a1​Au1​+a2​Au2​+⋯+an​Aun​=a1​λ1​u1​+a2​λ2​u2​+⋯+an​λn​un​
⋮\vdots⋮
xk=Akx0=a1λ1ku1+a2λ2ku2+⋯+anλnkunx_k=A^kx_0=a_1\lambda_1^ku_1+a_2\lambda_2^ku_2+\cdots+a_n\lambda_n^ku_nxk​=Akx0​=a1​λ1k​u1​+a2​λ2k​u2​+⋯+an​λnk​un​

④假设矩阵A的主特征值λ1\lambda_1λ1​是特征方程的单根,由上式得
xk=a1λ1k[u1+a2a1λ2kλ1ku2+⋯+ana1λnkλ1kun]x_k=a_1\lambda_1^k[u_1+\frac{a_2}{a_1}\frac{\lambda_2^k}{\lambda_1^k}u_2+\cdots+\frac{a_n}{a_1}\frac{\lambda_n^k}{\lambda_1^k}u_n]xk​=a1​λ1k​[u1​+a1​a2​​λ1k​λ2k​​u2​+⋯+a1​an​​λ1k​λnk​​un​]
lim⁡k→∞xk=a1λ1ku1\lim\limits_{k\to\infty}x_k=a_1\lambda_1^ku_1k→∞lim​xk​=a1​λ1k​u1​
⑤则λ1≈xk+1,jxk,j\lambda_1\approx\frac{x_{k+1,j}}{x_{k,j}}λ1​≈xk,j​xk+1,j​​

在实际计算时,为了避免出现绝对值过大或过小的情况,通常在每步迭代后就进行规范化,将向量除以其范数,即
yt+1=Axtxt+1=yt+1∣∣yt+1∣∣y_{t+1}=Ax_t\quad x_{t+1}=\frac{y_{t+1}}{||y_{t+1}||}yt+1​=Axt​xt+1​=∣∣yt+1​∣∣yt+1​​
这里的范数为∣∣x∣∣∞=max⁡{∣x1∣,∣x2∣,⋯,∣xn∣}||x||_\infty=\max\{|x_1|,|x_2|,\cdots,|x_n|\}∣∣x∣∣∞​=max{∣x1​∣,∣x2​∣,⋯,∣xn​∣}

转移矩阵为A=dM+1−dnEA=dM+\frac{1-d}{n}EA=dM+n1−d​E

Perron-Frobenius定理 一般PageRank的向量R是矩阵A的主特征向量,主特征值是1。(所以xk+1≈xkx_{k+1}\approx x_kxk+1​≈xk​)

例3 取d=0.85d=0.85d=0.85,求图的一般PageRank。

#mermaid-svg-GWpUfVL2GkWEZjQa .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .label text{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .node rect,#mermaid-svg-GWpUfVL2GkWEZjQa .node circle,#mermaid-svg-GWpUfVL2GkWEZjQa .node ellipse,#mermaid-svg-GWpUfVL2GkWEZjQa .node polygon,#mermaid-svg-GWpUfVL2GkWEZjQa .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-GWpUfVL2GkWEZjQa .node .label{text-align:center;fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .node.clickable{cursor:pointer}#mermaid-svg-GWpUfVL2GkWEZjQa .arrowheadPath{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-GWpUfVL2GkWEZjQa .flowchart-link{stroke:#333;fill:none}#mermaid-svg-GWpUfVL2GkWEZjQa .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-GWpUfVL2GkWEZjQa .edgeLabel rect{opacity:0.9}#mermaid-svg-GWpUfVL2GkWEZjQa .edgeLabel span{color:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-GWpUfVL2GkWEZjQa .cluster text{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-GWpUfVL2GkWEZjQa .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-GWpUfVL2GkWEZjQa text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-GWpUfVL2GkWEZjQa .actor-line{stroke:grey}#mermaid-svg-GWpUfVL2GkWEZjQa .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-GWpUfVL2GkWEZjQa #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .sequenceNumber{fill:#fff}#mermaid-svg-GWpUfVL2GkWEZjQa #sequencenumber{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa #crosshead path{fill:#333;stroke:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .messageText{fill:#333;stroke:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-GWpUfVL2GkWEZjQa .labelText,#mermaid-svg-GWpUfVL2GkWEZjQa .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-GWpUfVL2GkWEZjQa .loopText,#mermaid-svg-GWpUfVL2GkWEZjQa .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-GWpUfVL2GkWEZjQa .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-GWpUfVL2GkWEZjQa .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-GWpUfVL2GkWEZjQa .noteText,#mermaid-svg-GWpUfVL2GkWEZjQa .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-GWpUfVL2GkWEZjQa .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-GWpUfVL2GkWEZjQa .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-GWpUfVL2GkWEZjQa .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-GWpUfVL2GkWEZjQa .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .section{stroke:none;opacity:0.2}#mermaid-svg-GWpUfVL2GkWEZjQa .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-GWpUfVL2GkWEZjQa .section2{fill:#fff400}#mermaid-svg-GWpUfVL2GkWEZjQa .section1,#mermaid-svg-GWpUfVL2GkWEZjQa .section3{fill:#fff;opacity:0.2}#mermaid-svg-GWpUfVL2GkWEZjQa .sectionTitle0{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .sectionTitle1{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .sectionTitle2{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .sectionTitle3{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-GWpUfVL2GkWEZjQa .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .grid path{stroke-width:0}#mermaid-svg-GWpUfVL2GkWEZjQa .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-GWpUfVL2GkWEZjQa .task{stroke-width:2}#mermaid-svg-GWpUfVL2GkWEZjQa .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .taskText:not([font-size]){font-size:11px}#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-GWpUfVL2GkWEZjQa .task.clickable{cursor:pointer}#mermaid-svg-GWpUfVL2GkWEZjQa .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-GWpUfVL2GkWEZjQa .taskText0,#mermaid-svg-GWpUfVL2GkWEZjQa .taskText1,#mermaid-svg-GWpUfVL2GkWEZjQa .taskText2,#mermaid-svg-GWpUfVL2GkWEZjQa .taskText3{fill:#fff}#mermaid-svg-GWpUfVL2GkWEZjQa .task0,#mermaid-svg-GWpUfVL2GkWEZjQa .task1,#mermaid-svg-GWpUfVL2GkWEZjQa .task2,#mermaid-svg-GWpUfVL2GkWEZjQa .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutside0,#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutside2{fill:#000}#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutside1,#mermaid-svg-GWpUfVL2GkWEZjQa .taskTextOutside3{fill:#000}#mermaid-svg-GWpUfVL2GkWEZjQa .active0,#mermaid-svg-GWpUfVL2GkWEZjQa .active1,#mermaid-svg-GWpUfVL2GkWEZjQa .active2,#mermaid-svg-GWpUfVL2GkWEZjQa .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-GWpUfVL2GkWEZjQa .activeText0,#mermaid-svg-GWpUfVL2GkWEZjQa .activeText1,#mermaid-svg-GWpUfVL2GkWEZjQa .activeText2,#mermaid-svg-GWpUfVL2GkWEZjQa .activeText3{fill:#000 !important}#mermaid-svg-GWpUfVL2GkWEZjQa .done0,#mermaid-svg-GWpUfVL2GkWEZjQa .done1,#mermaid-svg-GWpUfVL2GkWEZjQa .done2,#mermaid-svg-GWpUfVL2GkWEZjQa .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-GWpUfVL2GkWEZjQa .doneText0,#mermaid-svg-GWpUfVL2GkWEZjQa .doneText1,#mermaid-svg-GWpUfVL2GkWEZjQa .doneText2,#mermaid-svg-GWpUfVL2GkWEZjQa .doneText3{fill:#000 !important}#mermaid-svg-GWpUfVL2GkWEZjQa .crit0,#mermaid-svg-GWpUfVL2GkWEZjQa .crit1,#mermaid-svg-GWpUfVL2GkWEZjQa .crit2,#mermaid-svg-GWpUfVL2GkWEZjQa .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-GWpUfVL2GkWEZjQa .activeCrit0,#mermaid-svg-GWpUfVL2GkWEZjQa .activeCrit1,#mermaid-svg-GWpUfVL2GkWEZjQa .activeCrit2,#mermaid-svg-GWpUfVL2GkWEZjQa .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-GWpUfVL2GkWEZjQa .doneCrit0,#mermaid-svg-GWpUfVL2GkWEZjQa .doneCrit1,#mermaid-svg-GWpUfVL2GkWEZjQa .doneCrit2,#mermaid-svg-GWpUfVL2GkWEZjQa .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-GWpUfVL2GkWEZjQa .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-GWpUfVL2GkWEZjQa .milestoneText{font-style:italic}#mermaid-svg-GWpUfVL2GkWEZjQa .doneCritText0,#mermaid-svg-GWpUfVL2GkWEZjQa .doneCritText1,#mermaid-svg-GWpUfVL2GkWEZjQa .doneCritText2,#mermaid-svg-GWpUfVL2GkWEZjQa .doneCritText3{fill:#000 !important}#mermaid-svg-GWpUfVL2GkWEZjQa .activeCritText0,#mermaid-svg-GWpUfVL2GkWEZjQa .activeCritText1,#mermaid-svg-GWpUfVL2GkWEZjQa .activeCritText2,#mermaid-svg-GWpUfVL2GkWEZjQa .activeCritText3{fill:#000 !important}#mermaid-svg-GWpUfVL2GkWEZjQa .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-GWpUfVL2GkWEZjQa g.classGroup text .title{font-weight:bolder}#mermaid-svg-GWpUfVL2GkWEZjQa g.clickable{cursor:pointer}#mermaid-svg-GWpUfVL2GkWEZjQa g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-GWpUfVL2GkWEZjQa g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-GWpUfVL2GkWEZjQa .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-GWpUfVL2GkWEZjQa .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-GWpUfVL2GkWEZjQa .dashed-line{stroke-dasharray:3}#mermaid-svg-GWpUfVL2GkWEZjQa #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa .commit-id,#mermaid-svg-GWpUfVL2GkWEZjQa .commit-msg,#mermaid-svg-GWpUfVL2GkWEZjQa .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-GWpUfVL2GkWEZjQa g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-GWpUfVL2GkWEZjQa g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-GWpUfVL2GkWEZjQa g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-GWpUfVL2GkWEZjQa .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-GWpUfVL2GkWEZjQa .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-GWpUfVL2GkWEZjQa .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-GWpUfVL2GkWEZjQa .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-GWpUfVL2GkWEZjQa .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-GWpUfVL2GkWEZjQa .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-GWpUfVL2GkWEZjQa .edgeLabel text{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-GWpUfVL2GkWEZjQa .node circle.state-start{fill:black;stroke:black}#mermaid-svg-GWpUfVL2GkWEZjQa .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-GWpUfVL2GkWEZjQa #statediagram-barbEnd{fill:#9370db}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-state .divider{stroke:#9370db}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-GWpUfVL2GkWEZjQa .note-edge{stroke-dasharray:5}#mermaid-svg-GWpUfVL2GkWEZjQa .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-GWpUfVL2GkWEZjQa .error-icon{fill:#522}#mermaid-svg-GWpUfVL2GkWEZjQa .error-text{fill:#522;stroke:#522}#mermaid-svg-GWpUfVL2GkWEZjQa .edge-thickness-normal{stroke-width:2px}#mermaid-svg-GWpUfVL2GkWEZjQa .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-GWpUfVL2GkWEZjQa .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-GWpUfVL2GkWEZjQa .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-GWpUfVL2GkWEZjQa .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-GWpUfVL2GkWEZjQa .marker{fill:#333}#mermaid-svg-GWpUfVL2GkWEZjQa .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-GWpUfVL2GkWEZjQa {color: rgba(0, 0, 0, 0.75);font: ;}

A
B
C
幂法
import numpy as npdef PowerMethod(M, d):E = np.ones((M.shape[0], M.shape[0]))A = d*M+(1-d)/M.shape[0]*Ex = np.ones((1, M.shape[0]))z = x+1while np.linalg.norm(x-z)!=0:z = xy = np.matmul(x, A)x = y/np.linalg.norm(y, ord=np.inf)print(x)M1 = np.array([[0, 1/2, 1/2],[0, 0, 1],[1, 0, 0]])M2 = np.array([[0, 1/3, 1/3, 1/3],[1/2, 0, 0, 1/2],[0, 0, 1, 0],[0, 1/2, 1/2, 0]])PowerMethod(M1, 0.85)
[[0.38778971 0.21481063 0.39739966]]PowerMethod(M2, 0.8)
[[0.10135135 0.12837838 0.64189189 0.12837838]]

2.3 代数算法

代数算法通过一般转移矩阵的逆矩阵计算求得有向图的一般PageRank。

R=R(dM+1−dnE)R=R(dM+\frac{1-d}{n}E)R=R(dM+n1−d​E)写成R=dRM+1−dn1⃗R=dRM+\frac{1-d}{n}\vec{1}R=dRM+n1−d​1,
则R(I−dM)=1−dn1⃗R(I-dM)=\frac{1-d}{n}\vec{1}R(I−dM)=n1−d​1,R=1−dn1⃗(I−dM)−1R=\frac{1-d}{n}\vec{1}(I-dM)^{-1}R=n1−d​1(I−dM)−1。
当0<d<10<d<10<d<1时,线性方程组的解存在且唯一。

代数算法
import numpy as npdef AlgebraPageRank(M, d):E = np.ones((1, M.shape[0]))I = np.eye(M.shape[0])E = (1-d)*(1/M.shape[0]) * EM = np.linalg.inv(I-d*M)print(np.matmul(E, M))M1 = np.array([[0, 1/2, 1/2],[0, 0, 1],[1, 0, 0]])M2 = np.array([[0, 1/3, 1/3, 1/3],[1/2, 0, 0, 1/2],[0, 0, 1, 0],[0, 1/2, 1/2, 0]])AlgebraPageRank(M1, 0.85)
[[0.38778971 0.21481063 0.39739966]]AlgebraPageRank(M2, 0.8)
[[0.10135135 0.12837838 0.64189189 0.12837838]]

总结

这篇学习笔记参考李航《统计学习方法》第二十一章的内容,除此之外,对三个PageRank的计算方法都进行了简单的Python实现。如果有书写错误或者知识上的错误,欢迎留言!

《统计学习方法》学习笔记 第二十一章 PageRank算法相关推荐

  1. UNIX网络编程卷一 学习笔记 第二十一章 多播

    单播地址标识单个IP接口,广播地址标识某个子网的所有IP接口,而多播地址标识一组IP接口.单播和广播是寻址方案的两个极端(要么单个要么全部),多播则意在两者之间提供一种折衷方案.多播数据报只应由对它感 ...

  2. 《机器学习实战》学习笔记第十一章 —— Apriori算法

    主要内容: 一.关联分析 二.Apriori原理 三.使用Apriori算法生成频繁项集 四.从频繁项集中生成关联规则 一.关联分析 1.关联分析是一种在大规模数据集中寻找有趣关系的任务.这些关系可以 ...

  3. 《Go语言圣经》学习笔记 第十一章 测试

    <Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...

  4. [go学习笔记.第十一章.项目案例] 2.客户信息管理系统

    一.基本介绍 1.需求说明 项目需求分析 1.模拟实现基于文本界面的 < 客户信息管理软件 > 2.该软件实现对客户对象的插入.修改和删除(用切片实现),并能够打印客户明细表 2.界面设计 ...

  5. 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十一课:Cocos2D-X网格特效1-3

    [麦可网]Cocos2d-X跨平台游戏开发---学习笔记 第二十一课:Cocos2D-X网格特效1-3 ================================================ ...

  6. [go学习笔记.第十一章.项目案例] 1.家庭收支记账软件项目

    一.基本介绍 1.项目开发流程说明 2.项目需求说明 目标: 模拟实现一个基于文本界面的<<家庭记账软件>> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点 : (1).局部 ...

  7. 统计学习方法读书笔记(九)-EM算法及其推广

    全部笔记的汇总贴:统计学习方法读书笔记汇总贴 EM算法用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步组成:E步,求期望(ex ...

  8. 机器学习理论《统计学习方法》学习笔记:第九章 EM算法及其推广

    第九章 EM算法及其推广 概述 EM算法 EM算法的收敛性 EM算法实现 K-Means与高斯混合模型 K-Means 高斯混合模型 概述 EM算法是一种迭代算法,1977年由Dempster等人总结 ...

  9. 逻辑斯蒂回归_逻辑斯蒂回归详细解析 | 统计学习方法学习笔记 | 数据分析 | 机器学习...

    本文包括: 重要概念 逻辑斯蒂回归和线性回归 二项逻辑斯谛回归模型 逻辑斯蒂回顾与几率 模型参数估计 多项逻辑斯谛回归 其它有关数据分析,机器学习的文章及社群 1.重要概念: 在正式介绍逻辑斯蒂回归模 ...

最新文章

  1. 超级列表框排序mysql_超级列表框List Ctrl
  2. 自己实现spring核心功能 三
  3. WEB前端学习一 JS预解释
  4. mysql中的运算符的执行顺序_【MySQL】执行顺序
  5. 免费分享老男孩全栈9期视频,共126天
  6. [react] 使用webpack打包React项目,怎么减小生成的js大小?
  7. 离屏渲染在车载导航中的应用
  8. 三大超算军团加速布局 中科曙光E级超算预研项目正式启动
  9. web下拉列表代码_文章列表总结(一)
  10. DropDownList的项按字母顺序排列
  11. 线性代数 第四章 线性方程组 知识点总结(Jeff自我感悟)
  12. 笔记学习:关于如何使用ESPwifi模块与51单片机通信
  13. 计算机应用if函数题目,if函数练习题.doc
  14. win10c盘清理(win10磁盘清理和磁盘整理)
  15. 华为交换机做qos案例_经典案例:QoS实现交换机带宽控制(1)
  16. Android之高仿记事本、备忘录、便签
  17. 谈谈区块链的常用架构
  18. 那些年,我们用过的地图下载器
  19. (26)盘古自研框架BackPropagation
  20. PAZU -- 4Fang WEB 打印控件

热门文章

  1. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
  2. Centos7安装cairo-dock
  3. 在线OJ项目(3)------实现接口与网页前端进行交互
  4. 常用 Excel 公式列表
  5. 用聚类算法计算股票的支撑位和阻力位
  6. D语言与C++做映射时需要注意的事情
  7. java相册制作,文章中含有源码
  8. 理解ClassLoader
  9. 手机摄像头的心得体会---camera模组生产流程
  10. 《数据结构》个人笔记1(3月13日)