def run[VD: ClassTag](graph: Graph[VD, Double], seeds: RDD[VertexId], numIter: Int, resetProb: Double = 0.15): Graph[Double, Double]
本算法模型基于Spark框架,根据指定的迭代次数,计算图中各节点TrustRank值,TrustRank值取值范围[0, 1]。本算法支持有向(无自环)有权图。
参数名称 |
参数含义 |
取值类型 |
---|---|---|
graph |
GraphX图数据 |
Graph[VD, Double],VD为泛型类型,表示输入图的节点属性类型,计算过程不感知;边属性为Double类型,取值范围为(0, 1] |
seeds |
种子节点序列 |
为graph图中节点ID,Long型,要求seeds与graph图节点的交集大于0 |
numIter |
迭代次数 |
Int,取值范围:大于0 |
resetProb |
重置系数 |
Double,经验值0.15,取值范围:[0, 1] |
val conf = new SparkConf().setAppName(“TrustRank”).setMaster(host) val sc = new SparkContext(conf) val edges = Array(Edge(1, 2, 1.0), Edge(1, 3, 1.0), Edge(1, 6, 1.0), Edge(2, 8, 1.0), Edge(3, 1, 1.0), Edge(3, 2, 1.0), Edge(3, 4, 1.0), Edge(3, 6, 1.0), Edge(3, 7, 1.0), Edge(3, 8, 1.0), Edge(4, 7, 1.0), Edge(4, 8, 1.0), Edge(5, 2, 1.0), Edge(5, 4, 1.0), Edge(5, 6, 1.0), Edge(5, 7, 1.0), Edge(5, 8, 1.0), Edge(6, 2, 1.0), Edge(6, 4, 1.0), Edge(6, 5, 1.0), Edge(6, 7, 1.0), Edge(6, 8, 1.0), Edge(7, 4, 1.0), Edge(7, 8, 1.0), Edge(7, 9, 1.0), Edge(7, 11, 1.0), Edge(8, 2, 1.0), Edge(8, 4, 1.0), Edge(8, 7, 1.0), Edge(8, 11, 1.0), Edge(9, 4, 1.0), Edge(9, 7, 1.0), Edge(9, 8, 1.0), Edge(9, 11, 1.0), Edge(10, 1, 1.0), Edge(10, 3, 1.0), Edge(10, 4, 1.0), Edge(10, 5, 1.0), Edge(11, 6, 1.0), Edge(11, 8, 1.0), Edge(11, 9, 1.0)) val seeds = sc.makeRDD[VertexId](Seq(1L), 1) val g = Graph.fromEdges(sc.parallelize(edges, 3), 1D) TrustRank.run (g, seeds, 100, 0.15)
Map(1 -> 0.15627260888438724,2 -> 0.11384457551621437,3 -> 0.04427723918390972, 6 -> 0.07702374399273665,8 -> 0.22576331655417478,4 -> 0.1071734894106,7 -> 0.12595647209080826, 5 -> 0.013094036478765229,9 -> 0.05101366004234638,11 -> 0.08558085784605747)
def runUntilConvergence[VD: ClassTag](graph: Graph[VD, Double], seeds: RDD[VertexId], tol: Double, resetProb: Double = DEFAULT_RESET_PROB): Graph[Double, Double]
本算法模型基于Spark框架,根据指定的收敛精度,计算图中各节点TrustRank值,TrustRank值取值范围[0,1]。本算法支持有向(无自环)有权图。
参数名称 |
参数含义 |
取值类型 |
---|---|---|
graph |
GraphX图数据 |
Graph[VD, Double],VD为泛型类型,表示输入图的节点属性类型,计算过程不感知;边属性为Double类型,取值范围为(0, 1] |
seeds |
种子节点序列 |
为graph图中节点ID,Long型,要求seeds与graph图节点的交集大于0 |
tol |
收敛时允许的容差 |
Double如1e-8等,取值范围:大于0 |
resetProb |
重置系数 |
Double,经验值0.15,取值范围:[0, 1] |
val conf = new SparkConf().setAppName(“TrustRank”).setMaster(host) val sc = new SparkContext(conf) val edges = Array(Edge(1, 2, 1.0), Edge(1, 3, 1.0), Edge(1, 6, 1.0), Edge(2, 8, 1.0), Edge(3, 1, 1.0), Edge(3, 2, 1.0), Edge(3, 4, 1.0), Edge(3, 6, 1.0), Edge(3, 7, 1.0), Edge(3, 8, 1.0), Edge(4, 7, 1.0), Edge(4, 8, 1.0), Edge(5, 2, 1.0), Edge(5, 4, 1.0), Edge(5, 6, 1.0), Edge(5, 7, 1.0), Edge(5, 8, 1.0), Edge(6, 2, 1.0), Edge(6, 4, 1.0), Edge(6, 5, 1.0), Edge(6, 7, 1.0), Edge(6, 8, 1.0), Edge(7, 4, 1.0), Edge(7, 8, 1.0), Edge(7, 9, 1.0), Edge(7, 11, 1.0), Edge(8, 2, 1.0), Edge(8, 4, 1.0), Edge(8, 7, 1.0), Edge(8, 11, 1.0), Edge(9, 4, 1.0), Edge(9, 7, 1.0), Edge(9, 8, 1.0), Edge(9, 11, 1.0), Edge(10, 1, 1.0), Edge(10, 3, 1.0), Edge(10, 4, 1.0), Edge(10, 5, 1.0), Edge(11, 6, 1.0), Edge(11, 8, 1.0), Edge(11, 9, 1.0)) val seeds = sc.makeRDD[VertexId](Seq(1L), 1) TrustRank.runUntilConvergence (g, seeds, 1e-8, 0.15)
Map(1 -> 0.15627260888438724,2 -> 0.11384457545266508,3 -> 0.04427723918390972, 6 -> 0.07702374402447199, 8 -> 0.22576331671284044,4 -> 0.10717348934337448,7 -> 0.1259564720613217, 5 -> 0.013094036469637119,9 -> 0.05101366008205779,11 -> 0.08558085778533453)