鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

Weighted PageRank

runUntilConvergence API

  • API
    def runUntilConvergence[VD: ClassTag](graph: Graph[VD, Double], tol: Double, resetProb: Double = 0.15): Graph[Double, Double]
  • 功能描述

    本算法模型基于Spark框架,根据指定的收敛精度,通过幂乘法方式计算图中各结点PageRank值,直至两轮迭代收敛误差小于所设阈值。本算法兼容两种初始化方式,若初始化策略为1时(默认策略),结点PR值初始1/N,PageRank值取值范围[0, 1];若初始化策略为0时,结点PR值初始1,PageRank值取值范围[0, N],N为结点个数。本算法支持有向有权。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:WeightedPageRank
    3. 方法名:runUntilConvergence
    4. 输入:graph: Graph[VD, Double],带边权重的GraphX图数据
    5. 核心参数:
      1. tol:收敛时允许的容差(通常取值1e-7)
      2. resetProb:重置概率系数,缺省值(0.15)。
    6. 参数详情:

      参数名称

      取值类型

      描述

      graph

      Graph[VD, Double],VD为泛型类型,分别表示输入图的结点属性类型,计算过程不会感知。Double为边权值,取值范围:大于0。

      GraphX图数据

      tol

      Double如1e-7等,取值范围:大于0。

      收敛时允许的容差

      resetProb

      Double,经验值0.15,取值范围:[0,1]。

      重置系数

    7. 输出:Graph:Graph[Double, Double],结点属性存储该结点的PageRank值,边属性存储归一化后的边权值(转移概率)。
  • 使用样例

    WeightedPageRank样例:

    val conf = new SparkConf().setAppName(“WPR”).setMaster(host)
    val sc = new SparkContext(conf)
    val edges = Array(Edge(0, 1, 0.8), Edge(0, 3, 0.2), Edge(1, 2, 0.6), Edge(1, 4, 0.4), Edge(2, 3, 1.0))
    val graph = Graph.fromEdges(sc.parallelize(edges, 3), 1.0D)
    val tol = 1e-7
    val resetProb = 0.15
    WeightedPageRank.runUntilConvergence(graph, tol, resetProb)
  • 样例结果

    第一列为结点ID,第二列为PR值。

    0,0.12346810618504848
    1,0.20742641296812722
    2,0.22925557943241917
    3,0.27985559905505475
    4,0.15999430235935014

run API

  • API
    def run[VD: ClassTag](graph: Graph[VD, Double], numIter: Int, resetProb: Double = 0.15): Graph[Double, Double]
  • 功能描述

    本算法模型基于Spark框架,通过幂乘法方式计算图中各结点PageRank值,直至固定的迭代轮数。本算法兼容两种初始化方式,若初始化策略为1时(默认策略),结点PR值初始1/N,PageRank值取值范围[0, 1];若初始化策略为0时,结点PR值初始1,PageRank值取值范围[0, N],N为结点个数。本算法支持有向有权。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:WeightedPageRank
    3. 方法名:run
    4. 输入:graph: Graph[VD, Double],带边权重的GraphX图数据
    5. 核心参数:
      1. numIter:迭代次数
      2. resetProb:重置概率系数,缺省值(0.15)。
    6. 参数详情:

      参数名称

      取值类型

      描述

      graph

      Graph[VD, Double],VD为泛型类型,分别表示输入图的结点属性类型,计算过程不感知。Double为边权值,取值范围:大于0。

      GraphX图数据

      numIter

      Int,取值范围:大于0。

      迭代次数

      resetProb

      Double,经验值0.15,取值范围:[0,1]。

      重置系数

    7. 输出:Graph:Graph[Double, Double],结点属性存储该结点的PageRank值,边属性存储归一化后的边权值(转移概率)。
  • 使用样例

    WeightedPageRank样例:

    val conf = new SparkConf().setAppName(“WPR”).setMaster(host)
    val sc = new SparkContext(conf)
    val edges = Array(Edge(0, 1, 0.8), Edge(0, 3, 0.2), Edge(1, 2, 0.6), Edge(1, 4, 0.4), Edge(2, 3, 1.0))
    val graph = Graph.fromEdges(sc.parallelize(edges, 3), 1.0D)
    val iter = 10
    val resetProb = 0.15
    val resultG = WeightedPageRank.run(graph, iter, resetProb).vertices.collectAsMap()
    println(resultG)
  • 样例结果

    第一列为结点ID,第二列为PR值。

    0,0.12347829782187406
    1,0.2074150506862632
    2,0.22926032815143343
    3,0.2798376250731247
    4,0.16000869826730468

setInitStrategy API

  • API
    def setInitStrategy(strategy: Int): WeightedPageRank
  • 功能描述

    该接口用于设置WeightedPageRank算法结点初始值初始化策略,算法模型提供两种常用策略。

    • 结点初始值为1,则算法运行结果PR值总和为N。
    • (默认策略)结点初始值为1/N,则算法运行结果PR值总和为1,N为结点数。
  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:WeightedPageRank
    3. 方法名:setInitStrategy
    4. 输入:strategy: Int,结点初始化策略,0代表策略1,1代表策略2
    5. 参数详情:

      参数名称

      取值类型

      参数含义

      strategy

      可取0,1;0代表策略1,1代表策略2,当取其他值时,采用策略2。

      Int

    6. 输出:WeightedPageRank对象,用于调用run/runUntilConvergence接口进行有权PageRank计算
  • 使用样例

    WeightedPageRank样例:

    val edges = Array(Edge(0, 1, 0.8), Edge(0, 3, 0.2), Edge(1, 2, 0.6), Edge(1, 4, 0.4), Edge(2, 3, 1.0))
    val graph = Graph.fromEdges(sc.parallelize(edges, 3), 1.0D)
    val resultBase = Map(2 -> 1.146301640757167, 4 -> 0.8000434913365232, 1 -> 1.0370752534313155, 3 -> 1.399188125365623, 0 -> 0.61739148910937)
    val iter = 10
    val resetProb = 0.15
    val resultG = WeightedPageRank.setInitStrategy(WPRParams.INIT_USE_ONE).run(graph, iter, resetProb).vertices.collectAsMap()
  • 样例结果

    第一列为结点ID,第二列为PR值。

    0,0.61739148910937
    1,1.0370752534313155
    2,1.146301640757167
    3,1.399188125365623
    4,0.8000434913365232