分布式机器学习中,如何用PySpark并行化实现PageRank算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2071个文字,预计阅读时间需要9分钟。
将图算法并行化的主要思想是将大图划分为多个子图,然后将这些子图分布到不同的机器上进行并行计算。在必要时,通过跨机器通信实现同步计算,最终得出结果。
目前对图算法进行并行化的主要思想是将大图切分为多个子图,然后将这些子图分布到不同的机器上进行并行计算,在必要时进行跨机器通信同步计算得出结果。学术界和工业界提出了多种将大图切分为子图的划分方法,主要包括两种,边划分(Edge Cut)和点划分(Vertex Cut)。总而言之,边划分将节点分布到不同机器中(可能划分不平衡),而点划分将边分布到不同机器中(划分较为平衡)。接下来我们使用的算法为边划分。我们下面的算法是简化版,没有处理悬挂节点的问题。 1. PageRank的两种串行迭代求解算法我们在博客《数值分析:幂迭代和PageRank算法(Numpy实现)》算法中提到过用幂法求解PageRank。
给定有向图
我们可以写出其马尔科夫概率转移矩阵\(M\)(第\(i\)列对应对\(i\)节点的邻居并沿列归一化)
\[\left(\begin{array}{lll} 0 & 0 & 1 \\ \frac{1}{2} & 0 & 0 \\ \frac{1}{2} & 1 & 0 \end{array}\right) \]然后我们定义Google矩阵为
\[G=\frac{q}{n} E+(1-q) M \]此处\(q\)为上网者从一个页面转移到另一个随机页面的概率(一般为0.15),\(1-q\) 为点击当前页面上链接的概率,\(E\)为元素全1的\(n\times n\) 矩阵( \(n\) 为节点个数)。
本文共计2071个文字,预计阅读时间需要9分钟。
将图算法并行化的主要思想是将大图划分为多个子图,然后将这些子图分布到不同的机器上进行并行计算。在必要时,通过跨机器通信实现同步计算,最终得出结果。
目前对图算法进行并行化的主要思想是将大图切分为多个子图,然后将这些子图分布到不同的机器上进行并行计算,在必要时进行跨机器通信同步计算得出结果。学术界和工业界提出了多种将大图切分为子图的划分方法,主要包括两种,边划分(Edge Cut)和点划分(Vertex Cut)。总而言之,边划分将节点分布到不同机器中(可能划分不平衡),而点划分将边分布到不同机器中(划分较为平衡)。接下来我们使用的算法为边划分。我们下面的算法是简化版,没有处理悬挂节点的问题。 1. PageRank的两种串行迭代求解算法我们在博客《数值分析:幂迭代和PageRank算法(Numpy实现)》算法中提到过用幂法求解PageRank。
给定有向图
我们可以写出其马尔科夫概率转移矩阵\(M\)(第\(i\)列对应对\(i\)节点的邻居并沿列归一化)
\[\left(\begin{array}{lll} 0 & 0 & 1 \\ \frac{1}{2} & 0 & 0 \\ \frac{1}{2} & 1 & 0 \end{array}\right) \]然后我们定义Google矩阵为
\[G=\frac{q}{n} E+(1-q) M \]此处\(q\)为上网者从一个页面转移到另一个随机页面的概率(一般为0.15),\(1-q\) 为点击当前页面上链接的概率,\(E\)为元素全1的\(n\times n\) 矩阵( \(n\) 为节点个数)。

