You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "BahaaEddin AlAila (JIRA)" <ji...@apache.org> on 2017/05/22 14:33:04 UTC

[jira] [Updated] (SPARK-20839) Incorrect Dynamic PageRank calculation

     [ https://issues.apache.org/jira/browse/SPARK-20839?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

BahaaEddin AlAila updated SPARK-20839:
--------------------------------------
    Description: 
Correct me if I am wrong
I think there are three places where the pagerank calculation is incorrect
1st) in the VertexProgram (line 318 of PageRank.scala in spark 2.1.1)
val newPR = oldPR + (1.0 - resetProb) * msgSum
it should be
val newPR = resetProb + (1.0 - resetProb) * msgSum

2nd) in the message sending part (line 336 of the same file)
Iterator((edge.dstId, edge.srcAttr._2 * edge.attr))
should be 
Iterator((edge.dstId, edge.srcAttr._1 * edge.attr))
as we should be sending the edge weight multiplied by the current pagerank of the source vertex (not the vertex's delta)

3rd) the tol check against the abs of the delta (line 335)
      if (edge.srcAttr._2 > tol) {
should be
      if (Math.abs(edge.srcAttr._2) > tol) {
 


  was:
Correct me if I am wrong
I think there are two places where the pagerank calculation is incorrect
1st) in the VertexProgram (line 318 of PageRank.scala in spark 2.1.1)
val newPR = oldPR + (1.0 - resetProb) * msgSum
it should be
val newPR = resetProb + (1.0 - resetProb) * msgSum

2nd) in the message sending part (line 336 of the same file)
Iterator((edge.dstId, edge.srcAttr._2 * edge.attr))
should be 
Iterator((edge.dstId, edge.srcAttr._1 * edge.attr))
as we should be sending the edge weight multiplied by the current pagerank of the source vertex (not the vertex's delta)




> Incorrect Dynamic PageRank calculation
> --------------------------------------
>
>                 Key: SPARK-20839
>                 URL: https://issues.apache.org/jira/browse/SPARK-20839
>             Project: Spark
>          Issue Type: Bug
>          Components: GraphX
>    Affects Versions: 2.1.1
>            Reporter: BahaaEddin AlAila
>
> Correct me if I am wrong
> I think there are three places where the pagerank calculation is incorrect
> 1st) in the VertexProgram (line 318 of PageRank.scala in spark 2.1.1)
> val newPR = oldPR + (1.0 - resetProb) * msgSum
> it should be
> val newPR = resetProb + (1.0 - resetProb) * msgSum
> 2nd) in the message sending part (line 336 of the same file)
> Iterator((edge.dstId, edge.srcAttr._2 * edge.attr))
> should be 
> Iterator((edge.dstId, edge.srcAttr._1 * edge.attr))
> as we should be sending the edge weight multiplied by the current pagerank of the source vertex (not the vertex's delta)
> 3rd) the tol check against the abs of the delta (line 335)
>       if (edge.srcAttr._2 > tol) {
> should be
>       if (Math.abs(edge.srcAttr._2) > tol) {
>  



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org